A native of the Dominican Republic, Herrera signed with the Los Angeles Dodgers as an undrafted free agent in 2006 and began play with the rookie class Gulf Coast Dodgers, where he was selected as a Gulf Coast League All-Star. In 2007, he played at three levels, with the rookie class Ogden Raptors, Class-A Great Lakes Loons and A-Advanced Inland Empire 66ers of San Bernardino. Overall, he appeared in 70 games and hit.255. He appeared in only 37 games in 2008, for the same three teams, and hit.292. In 2010, Herrera played in 97 games for the AA Chattanooga Lookouts, hitting.258 and also stole 31 bases. He also played in 25 games in AAA for the Albuquerque Isotopes, where he hit.229. For the 2011 season he played exclusively for Chattanooga, appearing in 116 games, hitting.278 and stealing 33 bases. Herrera began the 2012 season with Albuquerque and had his contract purchased by the Dodgers when he was called up to the Majors for the first time on May 14, 2012. He made his Major League debut as a pinch hitter on May 15 against the Arizona Diamondbacks and popped out. He recorded his first hit, an RBI double, in the first inning of his first start, on May 16 against the San Diego Padres. He hit his first Major League home run on July 5, 2012 off of Wade Miley of the Diamondbacks. He appeared in 67 games with the Dodgers in 2012, batting.251 In 2013, Herrera had a couple of brief Major League call-ups but only appeared in 4 games, where he had 2 hits in 8 at-bats. He was also in 108 games at Albuquerque, where he hit.282.
Milwaukee Brewers
On November 4, 2013, he was claimed off waivers by the Milwaukee Brewers. On July 13, 2014, Herrera had a career high five hits in one game against the Cardinals. He was the sixth player to do that hitting out of the eighth spot in the last twenty years. On June 2, 2015, Herrera was designated for assignment. On July 30, 2015, he re-joined the Brewers following the Carlos Gómez and Mike Fiers trade to the Houston Astros. The Brewers did not tender him a contract for the 2016 season, making him a free agent.
Los Angeles Dodgers
On December 26, 2015, Herrera returned to the Los Angeles Dodgers on a minor league contract. He was given a non-roster invitation to Dodgers spring training and he was assigned to the Triple-A Oklahoma City Dodgers to begin the season. He was released on May 14.
Yokohama DeNA BayStars
On June 1, 2016, Herrera signed with the Yokohama DeNA BayStars of Nippon Professional Baseball. He became a free agent after the 2017 season.