"I am blessed to have played this game for 20 years," Beltran wrote. "I am blessed to have played for so many great organizations.
"I am blessed to have shared all of my experiences with my wife and my three kids, my family and friends. To have so many loving fans. To have been able to build a school in Puerto Rico and change the lives of so many kids. To have won the Roberto Clemente Award, which is the greatest honor I could have ever received as a ballplayer.
"And I am blessed to be a champion. But now, my time as a player has come to an end."
Beltran, 40, was a nine-time All-Star and hit 435 career home runs. He played for seven different teams: the Astros, Kansas City Royals, New York Mets, New York Yankees, St. Louis Cardinals, Texas Rangers and San Francisco Giants.
Beltran batted .231 with 14 homers and 51 RBIs in 129 games with Houston this season.