Bailey signed his first professional contract in the summer of 2007 and made his full Crewe debut at right back at 19 years of age, when he came on as an 89th-minute substitute for Danny Woodards in a League One home fixture against Doncaster Rovers on 22 December 2007, with Crewe 2–0 down. Doncaster scored twice in the final minute for a final scoreline of 4–0. This proved to be Bailey's sole appearance of the 2007–08 season, but he earned a one-year deal with the club, which he signed in May 2008, with first team coach Steve Holland stating "We are delighted that James has signed a new contract. He has been given another year and we will review it again in relation to his progress. He has made progress this year and now it is up to him to go on again and compete for a place in the squad."
An impressive pre-season saw Bailey return to the side for the opening fixture of the 2008–09 season, where he started in his now familiar midfield role, as Crewe lost 2–1 to Brighton & Hove Albion. Although the season was a disappointing one for Crewe, who were relegated to League Two, it was a personal success for Bailey, as he kept his place in the side with a number of mature performances in central midfield alongside Michael O'Connor and earned a new and improved contract until 2011, as he recorded 31 league and cup appearances throughout the campaign, with only injury preventing him appearing in more after he was ruled out for much of the season from January onwards.
Bailey retained his position in the first team for the club's 2009–10 season, making 23 appearances in all competitions. His performances for Crewe impressed and he was linked with a move to Championship club Derby County, alongside Crewe teammate John Brayford, in a joint £1m deal in May 2010, where he was seen as a long term replacement for veteran midfielder Robbie Savage. Crewe confirmed that an offer for the pair, believed to be £1m rising to £1.3m with add-ons and a percentage sell on clause, had been accepted on 18 May 2010.
Bailey formally completed his move to Derby County on 19 May 2010 for an undisclosed fee and took the number 16 shirt, signing a three-year contract. On this signing, Derby manager Nigel Clough said,"James is a determined midfielder who has been impressive every time we have watched him and we're delighted he has… joined us."
He was placed straight into the first team during the club's 2010–11 pre season fixtures, as a holding midfielder alongside Robbie Savage in a 4–2–3–1 formation, scoring in a 3–3 draw at A.F.C. Bournemouth. His competitive debut for the Rams came in a 2–1 victory at Leeds United on the opening game of the 2010–11 season. His first goal came in a 2–2 draw with Queens Park Rangers in a performance which earned him a place in the Championship Team of the Week for 31 August 2010. He was an ever-present in the first 18 games of Derby's 2010–11 campaign, playing ever minute of every match and only missed his first game in November when he was ruled out with the flu. Bailey picked up the Sammy Crooks Young Player of the Year award in his first season with the club. Bailey said after picking this award, "It's a great feeling to get the young player of the year award and it's good that the manager has thought highly of me. Hopefully I can press on now and get player of the year, voted by everybody, next season."
Bailey started the 2011–12 season in Derby's first XI, helping them to four wins from their first five games and into second in the table, before an ankle injury sustained in training in September 2011 ruled him out for three months. Upon his return Bailey has struggled to break into the first team, after he lost his place to Jeff Hendrick, despite this in the January transfer window Bailey was linked with moves away from Pride Park with Premier League clubs reportedly interested in the player.
In May 2012, Derby said they were open to offers for the player and on 22 May 2012, Bailey was transfer listed by the club with a year left on his contract. Clough said the reason why Bailey was transfer list was down to the form of Hendrick and Craig Bryson in central midfield. In July 2012, Clough said that they had received "one or two" enquiries for Bailey but no firm offers. Despite this Bailey's contract was extended until the summer of 2014. On 25 September 2012, Bailey joined League One side Coventry City on loan for three months. At the completion of his loan spell, Bailey featured 18 times for Coventry, scoring one goal in Coventry's 1–1 draw at Preston North End on 22 December. Bailey said he was unclear about if he would rejoin the Sky Blues in the January transfer window, stating the Derby and Coventry were in talks over his future. Bailey returned to Coventry on a loan until the end of the 2012–13 season on 1 January. Bailey played a further 15 times in his second loan spell, scoring one goal against Oldham Athletic on 19 January. In May, Bailey was placed on Derby County's transfer list with a year left on his contract.
Bailey, however was unable to find a club in the summer transfer and in late August was ruled out for six weeks with a torn knee ligament in late August. Bailey continued to rehabilitated throughout the month and made his return in the club's U21 reserves against Hull City U21 reserves, which was won by Derby County U21 reserves. After the match, Bailey describe his return from injury as ‘new lease of life’. Despite being fit throughout the season, Bailey's first team opportunities hard to come by under Manager Steve McClaren and made two Derby County's appearance in over a year, against Blackpool and Chelsea.
After four years at the club, Bailey was finally released by the club, which expired in the summer.
Bailey remained a free agent until on 22 July 2014, Bailey signed a two-year deal with League One side Barnsley.
Bailey made his Barnsley debut, playing as a right-midfield, in a 1–0 loss against Crawley Town in the opening game of the season. However, Bailey didn't make a perfect start when Bailey sustained a groin injury and then sent-off after a second bookable offense, in a 2–1 loss against Peterborough United on 18 October 2014. Bailey was them dropped out in the first team for nearly two months. Bailey's performance against Colchester United on 6 April 2015 was praised by Manager Lee Johnson. However, Bailey was dropped from the first team for the rest of the season, with Manager Johnson quoting: "His range of passing is very good. But the tactical, physical and mental sides need to be improved." In his first season at Barnsley, Bailey made twenty-nine appearance in all competitions.
However, on 23 July 2015, it was announced that Bailey left the club by mutual consent to allow him to pursue other football opportunities.
Bailey was signed by Indian Super League club FC Pune City on 30 July 2015 for the 2015 Indian Super League.
On 15 January 2016, Bailey signed with the Ottawa Fury.
Bailey left the club on 13 December 2016.
On 3 February 2017, Bailey returned to English football to sign for League Two club Carlisle United on a short-term contract until the end of the season. At the end of the season, having helped Carlisle reach the League Two play-off semi-finals Bailey was offered a new contract with the Cumbrian side, but this offer was withdrawn on 9 June 2017.
On 4 July 2017, Bailey signed for fellow League Two club Yeovil Town on a two-year contract.As of match played 16 September 2017