Carrera signed with the New York Mets as a non-drafted free agent on April 4, 2005. He spent the 2005 season in the Venezuelan Summer League and batted.227 with eight RBIs and 19 runs scored in 45 games. In 2006, he hit.301 with one home run, 19 RBIs, 41 runs scored and 22 stolen bases in 57 games in the Venezuelan Summer League. He went 4-for-5 with two runs scored, an RBI and a stolen base on June 2. Carrera stole three bases on June 13. He started and spent most of the 2007 season with the Rookie-League Gulf Coast League Mets of the Gulf Coast League but also played with the Short-Season Brooklyn Cyclones. He hit.329 between the two clubs with 82 hits, 10 doubles, three triples, one home run, 32 RBIs and 22 stolen bases. In 2008, he spent the season with the Class-A St. Lucie Mets where he served as the primary leadoff hitter and ranked fourth in the Florida State League with 28 stolen bases.
The Mets traded Carrera along with Endy Chávez, Aaron Heilman, Mike Carp, and Jason Vargas to the Seattle Mariners in a 12-player deal on December 10, 2008. Carrera had a break-out 2009 season batting.337 with two home runs, 38 RBIs and 27 steals batting lead-off for the Double-A West Tenn Diamond Jaxx of the Midwest League. He was named to the Southern League Mid-Season All-Star Team on June 29. He was placed on the disabled list on July 9 with a right thumb injury. He was reinstated on August 1. Carrera and teammate Greg Halman were selected to the 2009 Southern League Postseason All-Star Team as voted upon by the league's field managers, radio broadcasters and print media. Carrera was also a mid-season All-Star selection as well is leading the league in batting average.
Cleveland Indians
On June 26, 2010 he was traded to the Cleveland Indians along with Juan Díaz for Russell Branyan. Carrera was called up by the Indians on May 20, 2011. He made his major league debut that night as a pinch hitter. In his first major league plate appearance, he reached first base safely on a drag bunt, driving in the game-winning run in the eighth inning. Carrera was optioned back to Triple-A Columbus on May 26, 2011. In a series of recalls and options, Carrera spent 68 games of the 2011 season with the Indians, hitting.243 with 14 runs batted in and ten stolen bases. On March 25, 2013, Carrera was designated for assignment.
Philadelphia Phillies
Carrera was claimed off of waivers by the Philadelphia Phillies on April 2, 2013. The Phillies subsequently designated Carrera for assignment on April 30 in order to activate Delmon Young from the 15-day disabled list.
Second stint with the Cleveland Indians
Carrera was claimed off waivers by the Indians on May 2, 2013. He appeared in two games before being designated for assignment yet again on May 5, 2013.
Detroit Tigers
Carrera signed a minor league deal with the Detroit Tigers in December 2013. He made his Tigers debut on August 1, 2014. During the 2014 season, Carrera batted.261 with two RBI's in 45 games. On November 20, 2014, he was designated for assignment by the Tigers. He declined his minor league assignment, and elected to become a free agent.
Toronto Blue Jays
On December 3, 2014, Carrera signed a minor league contract with the Toronto Blue Jays. He opened the season with the Triple-A Buffalo Bisons, and was promoted to the major leagues on May 2, 2015. On August 1, Carrera was designated for assignment. He cleared waivers and was outrighted to Buffalo on August 3. On August 17, Carrera was called up again by the Blue Jays. He remained with the team through the end of the regular season, and finished the year with a.273 batting average, 3 home runs, and 26 RBI in 91 games. On March 30, 2016, John Gibbons announced that Carrera would open the 2016 season as the Blue Jays fourth outfielder. Carrera recorded his first-career four-hit game on April 23, helping the Blue Jays to a 9–3 victory over the Oakland Athletics. On September 12, Carrera hit a pinch hitsolo home run to give the Blue Jays a 3–2 lead over the Tampa Bay Rays, which they would not relinquish. Carrera played in a career-high 110 regular season games in 2016, batting.248 with six home runs and 23 RBI. On January 12, 2017, Carrera avoided salary arbitration with the Blue Jays by agreeing to a one-year, $1.1625 million contract. He suffered a broken foot in a game on June 13, and was placed on the disabled list. On June 27, Carrera was activated by the Blue Jays. Carrera hit a career-high eight home runs in 2017, and added 20 RBI and a.282 batting average in 131 games. Carrera signed a one-year, $1.9 million contract with Toronto on January 12, 2018. He was designated for assignment on February 26, and cleared waivers on March 1. The Blue Jays assigned him to Triple-A Buffalo and invited him to spring training. On March 11, the Blue Jays released him.
On March 13, 2018, Carrera signed a minor league contract with the Atlanta Braves and was invited to spring training. He was released from the organization on May 17, 2018.
Second stint with the New York Mets
On May 18, 2018, Carrera signed a minor league contract with the New York Mets, before he became a free agent again at the end of the season.