On December 14, 2007, he was acquired by the Oakland Athletics in the trade that sent Dan Haren to the Diamondbacks.[2] He was called up from the minors for the first time on August 30, 2008.[2] Cunningham played in 22 games for Oakland in 2008 and 23 games in 2009, playing both left and right field.
San Diego Padres
On January 16, 2010, Cunningham and Scott Hairston were traded to the San Diego Padres for Kevin Kouzmanoff and Eric Sogard.[3] In Cunningham's first start as a Padres player on June 15 he hit a grand slam to center field in his first at bat. In 2010, Cunningham split time between the majors and the Triple-A club. While in the majors, he served as a reserve corner outfielder, starting 30 games and hitting a career high .288 in 132 at-bats. In 2011, Cunningham again split time between the minors and majors, making 20 starts with the Padres at the corner outfield positions. He hit .329 in 87 games with the Triple-A Tucson Padres, but only .178 in 90 at-bats with the big league club.
Cleveland Indians
On December 16, 2011, Cunningham was traded to the Cleveland Indians for minor league pitcher Cory Burns.[4] Cunningham broke camp with the big league club in 2012 and played in a career high 72 games, starting 21 games across all three outfield positions. He was mostly used as a late-inning defensive replacement and batted .175 in 97 at-bats. On July 24 he laid down a successful suicide squeeze bunt to score the winning run in a game against Detroit.[5] Cunningham was designated for assignment on July 25 and he finished the year with the Triple-A Columbus Clippers.
Texas Rangers
On November 12, 2012, Cunningham signed a minor league deal with the Texas Rangers with an invitation to spring training.[6]
Chicago Cubs
He signed a minor league deal with the Chicago Cubs in November 2013.
2nd stint with Arizona
Cunningham signed a minor league deal with Arizona in March 2014 but was released a few months later. He re-signed on September 2, 2014. On March 24, 2015, Cunningham was released by the Diamondbacks.