Educated at Ysgol Gyfun Bro Morgannwg in Barry, Burns is a fluent Welsh speaker. He started his youth career at Cardiff City, but failed to earn an under-16 contract. He was swiftly picked up by Bristol City, which kick-started a rapid rise through their youth team. He signed his first professional contract on 18 December 2012 on a two-and-a-half-year deal, and made his professional debut coming on as a substitute against Leeds United on 19 January 2013.
After his loan spell at Forest Green Rovers came to an end, Burns went on to feature straight away in Bristol City's 1–0 defeat to Birmingham City which confirmed their relegation. Burns then spent the first half of the 2013–14 season on the bench and made his first appearance in the first round against Dagenham & Redbridge, assisting a goal for Jay Emmanuel-Thomas, who scored his second, in a 2-0 win. Burns began to appear in the first team under the management of Steve Cotterill and scored his first Bristol City goal on 4 February 2014, in a 2-1 loss against Coventry City. Burns went on to make twenty appearance, most of which were on the bench, and at the end of the 2013-14 season, Burns was rewarded with a contract extension.
The 2014–15 season saw Burns struggled in the first team, as he was demoted to the substitute bench. Burns scored his first Bristol City goal on 8 October 2014, in a second round of Football League Cup, in a 3-1 win over Cheltenham Town and three days later, Burns scored a winning goal against Chesterfield, which resulted a 3-2 win for Bristol City. After the match, Burns describe this as his best moment of his career. However, Burns suffered ankle injury in mid-November. Just one day after playing for Cheltenham Town in the last game of the season, Burns made his return to the Bristol City on the last game of the season, in a 8-2 win over Walsall
Ahead of the 2015–16 season, Burns expressed determination in hopes of regaining his first team place at Bristol City, with Manager Cotterill was keen to use him in the first team and has no plan of loaning out Burns. However, Burns struggled to regain his first team place, as well as, his struggle to score goals. Nevertheless, Burns scored his first goal of the season on 16 January 2016, in a 1-0 win over Middlesbrough, ending three games without a point. By the time he went out on loan, Burns made fourteen appearance and scoring once. On 13 April 2016, Burns signed a contract extension with the club, keeping him until 2017. Three months later, Burns signed a further contract extension with the club, keeping him for two years.
On 12 March 2013 he joined Conference side Forest Green Rovers on loan. He scored the winning goal for Forest Green on his debut later that evening against Southport, finding the back of the net in dramatic style in second half stoppage time. He was recalled by Bristol City on 16 April 2013 and was forced to cut his loan short.
On 27 November 2014, Burns was loaned to League Two club Oxford United until the end of the 2014–15 season. It wasn't until on 13 December 2014 for Burns made his Oxford United debut, playing 90 minutes, and set up one of the goals in a 2-1 win over Bury. On 3 January 2013, Burns scored his first Oxford United goal, in a 2-1 loss against Cheltenham Town on 3 January 2015. After his loan ended prematurely on 2 February 2015 By the time he left Oxford United, Burns made nine appearances (three as a substitute) and scored once.
Shortly after leaving Oxford United, Burns was reported to be joining Cheltenham Town on loan until the end of the season. Burns then scored on his debut on 7 February 2015, in a 3-1 loss against Burton Albion and scored his second goal two weeks against Accrington Stanley. Burns then scored two goals in two matches between 7 March 2015 and 13 March 2015 against Mansfield Town and Newport County. Despite suffering ankle injury that kept him out for two matches, Burns played the last two matches for the club, but was unable to help the club, as they were relegated to the National League and returned to his parent club.
On 16 February 2016, Burns joined League One side Fleetwood Town on loan for the remainder of the 2015–16 campaign. New Bristol City Manager Lee Johnson explained his decision to loan out Burns as beneficial on long term plan. Burns made his Fleetwood Town on 20 February 2016, where he played 15 minutes, in a 2-1 win over Scunthorpe United. Burns scored his first Fleetwood Town goal on 27 February 2016, in a 2-1 win over Coventry City, followed up scoring in the next games, in a 2-1 win over Gillingham. Burns went on to score three more goals against Burton Albion, Swindon Town and Petebrough United. Burns went on to make fourteen appearance and scoring five times for the club, as he helped the club survive relegation in League One.
On 14 July 2016, Burns was loaned to Scottish Premiership side Aberdeen on loan until the end of the 2016–17 season. He made his debut the same day, scoring with his first touch after coming on as an 89th-minute substitute in a 3–0 win against Ventspils in a Europa League Second qualifying round first leg tie. He returned to Bristol City in January 2017.
On 19 January 2017, Burns returned to Fleetwood Town for an undisclosed fee on a three-and-a-half year deal, after being on loan at the club earlier in 2016.
In January 2013 Burns, aged 18, was named in the Wales Under-21 squad versus Iceland on 6 February 2013. He made his debut as a second-half substitute and scored the first goal in the 3–0 win. He earned his second under-21s cap in a win over Moldova on 22 March 2013.
On 6 October 2015, Burns received his first call up to the senior Wales side for UEFA Euro 2016 qualifiers against Bosnia and Herzegovina and Andorra as a replacement for the injured David Cotterill. In May 2016, Burns was among twenty-nine players to be called for the club's training squad ahead of UEFA Euro 2016. However, Burns didn't make it to the 23 man squad for the UEFA Euro 2016. Despite this, Burns said he would follow Wales matches in the UEFA Euro 2016.As of 17 July 2017