Bowman was born in Carlisle, Cumbria. He started his career with hometown club Carlisle United, first being part of the Centre of Excellence before signing a Youth Training Scheme contract in 2008. He scored 22 goals in his second season at youth level to make him the top scorer for the under-18 team. After also impressing for the reserve team, Bowman joined Conference North club Workington on a one-month loan on 13 February 2010. He scored his first goal in the 1–0 win against Redditch United on 27 February 2010, with a volley in the fourth minute. Bowman scored two goals in 10 matches on loan with Workington before being recalled by Carlisle due to injuries. He made his first-team debut for Carlisle in a 3–1 victory at home to Bristol Rovers in League One on 2 April 2010, coming on as a substitute for Scott Dobie in the 89th minute. He made six appearances for Carlisle in the 2009–10 season. He was given the club's Youth Training Scheme Player of the Year award, and during the summer of 2010 signed a one-year professional contract. On 19 October 2010, Bowman rejoined Workington on a one-month loan, and finished his second spell without scoring in eight appearances. The following calendar year on 1 January 2011, Bowman made his first appearance of 2010–11 for Carlisle, coming off the substitutes' bench in the 79th minute to replace Craig Curran in a 2–2 home draw with Huddersfield Town. He made two further substitute appearances in 2010–11 before being released by Carlisle on 4 May 2011.
After impressing on trial, Bowman signed for Conference Premier club Darlington on 4 August 2011 on a sixth-month contract. He made his debut for Darlington in a 1–0 home win over Braintree Town on 13 August 2011, before scoring his first two goals on 29 August in a 3–1 victory over Lincoln City. The first came after 29 seconds with a drilled low shot and scored the second from 17 yards, before assisting the third goal for John Campbell after pouncing on Joe Anyon's misplaced pass. On 29 October 2011, he scored his first ever goal in the FA Cup, during a 1–1 draw in the fourth qualifying round against Hinckley United. Darlington suffered financial difficulties during Bowman's time at the club and his contract was terminated on 16 January 2012, along with the rest of the playing squad and caretaker managerCraig Liddle, though the club retained their registrations so they were eligible to play on a non-contract basis. Bowman ended a run of 17 league matches without a goal after he scored the opening goal in the 3–1 loss away at Alfreton Town on 18 February 2012. He scored his last two goals for Darlington in the 3–1 home victory against Kettering Town on the final day of 2011–12 on 28 April 2012. Bowman scored 11 goals in 42 appearances as Darlington finished the season in the relegation zone, with the club being demoted to the Northern League.
After a short trial with Hereford United, Bowman signed for the Conference Premier club on 24 July 2012 on a one-year contract. ManagerMartin Foyle commented that "I just feel that's the type of player I'll have. Someone who is keen, hungry and who feels they have got a point to prove." Bowman made a scoring debut with Hereford's last goal in the 89th minute of a 4–2 win at home to Ebbsfleet United on 25 August 2012. He scored two goals in Hereford's 3–1 home victory over League One team Shrewsbury Town in the FA Cup first round on 3 November 2012. He finished 2012–13 as Hereford's top scorer with 19 goals from 43 appearances.
Having been offered a new contract by Hereford, Bowman signed for League Two club York City on 24 May 2013 on a two-year contract. With him being under 23 years of age, York would pay Hereford a compensation fee, which was set at £20,000 by a tribunal. Bowman made his debut as a 78th-minute substitute for Sander Puri in a 1–0 victory over Northampton Town on 3 August 2013, in the first match of 2013–14. His first goals for York came with two headers in a 2–2 away draw with Cheltenham Town on 2 November 2013. Bowman played in both play-off matches against Fleetwood Town, entering the first as a 62nd-minute substitute for Ryan Brobbel and starting the second, although York were eliminated 1–0 on aggregate. He finished 2013–14 with 43 appearances and eight goals.
Despite having one year remaining on his contract at York, Bowman was allowed to sign for newly relegated Conference Premier club Torquay United on 3 July 2014 on a two-year contract.
Bowman signed for Scottish Premiership club Motherwell on 31 August 2016 on a two-year contract for an undisclosed fee. He made his debut on 10 September 2016, as Motherwell drew 1–1 away to Ross County.
Exeter City
Bowman signed for League Two club Exeter City on 2 January 2019 for an undisclosed nominal fee as a replacement for Jayden Stockley, who was expected to leave the club.