Bradley was born and raised in Kingston upon Hull, East Riding of Yorkshire. He progressed through the Hull City youth ranks, joining the club at the age of seven. While at the youth ranks at Hull City, Bradley met his childhood friend, Danny East, who he knows for more than ten years.
Career
Hull City
In October 2010, he was sent out on loan to Conference North club Harrogate Town, making his debut in a 3–2 win over Worcester City. He made seven appearances for the Town, scoring in an FA Trophy tie with Witton Albion. In April 2011, he joined Division 1 Norra team IK Frej on a one-month loan after going on trial with the club. Bradley made his debut on 25 April, against BK Forward, and scoring against Dalkurd FF on 7 May. He returned to Hull after making five appearances and scoring once. He was offered his first professional contract by Hull City in the summer of 2011. Bradley was also a former pupil at Kelvin Hall School and at sixteen, Bradley missed out the apprenticeship. In January 2012, he joined League Two club Aldershot Town on a one-month loan deal. He made his professional debut on 7 January 2012, in a 3–0 defeat to Oxford United at the Recreation Ground. The loan period was later extended to 7 April 2012. He finished the season with 14 appearances for Aldershot before being recalled by Hull on 29 March 2012. He made his league debut for Hull on 31 March when he was used as a half-time substitute for captain Jack Hobbs in the 0–2 defeat by Coventry City at the KC Stadium. He was handed his first start on 7 April, in a 0–2 defeat against Millwall. On 7 August 2012, Bradley returned to Aldershot in a season-long loan. He made his second debut for the club on 11 August, against Wolverhampton Wanderers. On 23 October, Bradley scored his first career goal, an 87th-minute header in a 2–1 win against Southend United. He finished the season with 42 league appearances, scoring once. Despite relegation to Conference Premier, Bradley says his time at Aldershot Town in his second spell helped him improved as a player. Bradley was released at the end of 2012–13 season.
Portsmouth
After his release from Hull, Bradley signed a two-year deal with Portsmouth on 9 May 2013, where he will joining with Danny East. Bradley revealed he turned down a move from Championship and League One clubs in favour joining Portsmouth. Bradley would also take number six shirt at the club. He made his debut in a 4–1 home defeat to Oxford United on 3 August 2013. Despite the loss, Bradley was impressed with the club's supporters attendance at the stadium. Since his debut, Bradley had an extended run of the first team and then on 1 January 2014, Bradley scored his first goal for the club and also the first goal of 2014 for the club, as Portsmouth lose 2–1 to Southend United. But towards the end of the season, Bradley would be often used in first team ins and out, mostly on the substitution bench. Bradley would then score his second goal of the season, just ten minutes after coming on as a substitute, in a 4–4 draw against Bury on 26 April 2014, in which it turns out to be his last appearance for the club.
Crawley Town
On 17 June 2014, Bradley signed a two-year contract at Crawley Town, from Portsmouth for an undisclosed fee. Crawley had fought off competition from Championship clubs for his signature.
Plymouth Argyle
On 11 July 2016, Bradley signed for Plymouth Argyle. He was offered a new contract by Plymouth at the end of the 2017–18 season. After two successful campaigns with Plymouth, Bradley opted not to renew his contract and left on 8 June 2018, having made 95 appearances for the Devon club.
Luton Town
Bradley agreed to sign for newly promoted League One club Luton Town on 12 June 2018 on a three-year contract, effective from 1 July. He scored his first goal for Luton with a half volley from 25 yards on the opening day of the 2019–20 season in a 3–3 home draw with Middlesbrough.