A product of the Shrewsbury Town youth system, Gray came to prominence after scoring 57 goals in 111 appearances in a two-season spell with Luton Town. He represented England C at international level.
Gray began his career in the academy at hometown club Wolverhampton Wanderers, but was released at age 13. Gray joined the youth system at League Two club Shrewsbury Town in 2004, signing his first professional one-year contract prior to the start of the 2009–10 season. Awarded the number 20 shirt, he made his debut on the opening day of the season, coming on as an 89th-minute substitute for Nathan Elder in a 3–1 win over Burton Albion. An injury crisis saw Gray make four further cameos, with what would be his final appearance for the club coming as a 57th-minute replacement for Kris Bright in a 2–0 Football League Trophy second round defeat to Accrington Stanley on 20 October. He spent periods of the 2009–10 season away on loan, but competition for places meant that Gray was relegated to the reserve team substitutes' bench. Gray was released by Shrewsbury on 14 May 2010, having made just five appearances for the club. Looking back on his time at Shrewsbury, Gray said "I was at the stage in my life where I thought everything was set for me. I didn't really care about playing in Shrewsbury's reserves, which it shouldn't have been".
Gray joined Conference North club AFC Telford United on a one-month loan on 26 November 2009. Gray's good form meant that his loan was extended for a second month. He scored his first goal for the club with a late winner against local rivals Stafford Rangers on Boxing Day. Competition for places meant that Gray gradually lost his place in the team and he returned to Shrewsbury Town on 5 February 2010. Gray played six times for the Bucks, scoring once.
On 5 March 2010, Gray joined Conference North club Hinckley United on an emergency one-month loan. He made five appearances and scored no goals for the club, before returning to Shrewsbury Town.
Gray returned to De Montfort Park in June 2010 and signed a permanent one-year contract with the club. His first goal for the club was a late equaliser in a 2–2 draw with Harrogate Town on 4 September. After two further goals that month in defeats to Guiseley and Eastwood Town, Gray's goalscoring form dried up. His form returned in late March 2011, when he scored a brace in a 4–0 drubbing of Redditch United. He scored four goals in a 7–2 thrashing of Solihull Moors on 23 April, before ending the 2010–11 season having made 35 appearances and scored 14 goals.
Gray remained with Hinckley for the 2011–12 season and showed fine form, with his goalscoring exploits firing the Knitters to an FA Cup first round proper match versus Conference Premier club Tamworth on 12 November 2011. He scored the opening goal in the 2–2 draw, but couldn't find the net in the replay, resulting in a 1–0 defeat. Gray also helped Hinckley reach the second round proper of the FA Trophy, scoring a late winner against Conference Premier club Wrexham in the first round, though he was unable to find the net against Luton Town in the following round, to whom they were defeated 3–0 in a replay. His exploits garnered him attention from Championship clubs. Gray made 45 appearances and scored 23 goals during the 2011–12 season. Gray departed Hinckley in the summer of 2012, having made 85 appearances and scored 37 goals across his two spells with the club. Gray looked back on his years playing part-time with Hinckley as the point at which he regained his focus, saying "as long as I still had a job and was getting paid, it was OK. Until I started playing and realised that full-time football was the only thing I wanted to do, it kicked me into gear. Being bored all day, waiting to go training, made me really want it".
On 22 March 2012, Gray signed for Conference Premier club Luton Town on loan until the end of the 2011–12 season with a view to a permanent move, having impressed the club's backroom staff with his performances against the club in the FA Trophy. Going straight into the starting lineup, he scored on his debut in a 1–1 draw with Grimsby Town on 24 March and hit a goal in each of his next matches against York City, Braintree Town and Hayes & Yeading United. This meant that Gray became the only player in Luton Town history to have scored in each of his first four matches for the club. He scored his fifth goal in a 2–0 win over champions Fleetwood Town in the last match of the season to secure Luton a fifth-place finish in the league and the last available remaining play-off spot. Gray scored the opening goal in the play-off semi-final first leg at home to Wrexham, which Luton won 3–2 on aggregate to set up a final against York City at Wembley Stadium. Luton lost the match 2–1, despite Gray scoring the opening goal after just 74 seconds. In total, he scored seven goals in 12 appearances during his loan spell.
The day after the play-off final defeat, Gray signed a two-year professional contract with Luton for a fee of £30,000. Beginning the 2012–13 season in a substitute role, Gray scored his first goal of the campaign in a 4–1 win over Macclesfield Town on 1 September 2012 as he broke back into the starting lineup. Gray's performance in a 2–0 FA Cup fourth qualifying round victory over Cambridge United in late October saw him win the FA Cup Player of the Round award. On 1 December, he helped the Hatters into the third round proper of the FA Cup, scoring the opener in a 2–1 second round victory over Dorchester Town. Luton were drawn against Gray's hometown club Wolverhampton Wanderers in the third round and he played 89 minutes of the 1–0 giant killing on 5 January 2013. On 14 January, following a run of ten matches in which he scored eight goals, Gray signed a new two-and-a-half-year contract, which would keep him at Kenilworth Road until June 2015. He played 75 minutes of Luton's shock 1–0 FA Cup fourth round giant killing of Norwich City on 26 January, but the Hatters' run was stopped by Millwall in the fifth round, who ran out 3–0 victors. Gray rounded out the 2012–13 season with a run of six goals in six matches, which included two braces in the Hatters' final two matches of the season. Gray made 54 appearances and scored 20 goals in a season which saw Luton finish two places outside the play-offs.
Gray was primarily used as an impact substitute during the beginning of the 2013–14 season, with new signing Mark Cullen preferred in a starting role by new Luton manager John Still. He scored his first goal of the season on 24 September 2013, the club's eleventh league match, in a 4–0 victory over Woking. He then went on a goalscoring run and reclaimed his place in the team, scoring six goals in five matches, culminating with a hat-trick in a 4–1 victory over Hyde on 12 October. A run of 11 goals in 10 matches from November through to January helped the Hatters to the top of the Conference Premier table. Gray confirmed he had no intention of leaving the club midway through the season, stating that it would be "stupid" to with the club having a realistic chance of promotion back to the Football League and he instructed his agent to reject any approaches. After scoring a further seven goals in four matches in February, Gray was named as the Conference Premier Player of the Month. In total, Gray scored 30 goals in 45 appearances during the 2013–14 season, and won the first silverware of his career, as Luton were promoted back to the Football League as Conference Premier champions. He was recognised by the club for his performances by winning the Young Player of the Season award. Gray was the leading scorer in the Conference Premier (for which he won the league's Golden Boot award) and he was also named in the Conference Premier Team of the Season. He was the subject of reported transfer interest from League One neighbours Milton Keynes Dons in May 2014, but the Dons baulked at his £300,000 price tag. Gray departed the Hatters in late June 2014, having made 111 appearances and scored 57 goals during his time at Kenilworth Road.
On 27 June 2014, Gray signed a three-year deal at Championship club Brentford for an undisclosed fee and was given the number 19 shirt. After joining, he said "the fact that the manager wanted me was a big part in selling me on Brentford. They had a vision of how they wanted me to play and also they have a vision for this club. As soon as Brentford came along I knew it was a good opportunity for me". After scoring in friendlies versus Barnet and Nice in July 2014, Gray made his competitive debut for the club on the opening day of the 2014–15 season against Charlton Athletic, making the first Football League start of his career. He lasted 67 minutes of the 1–1 draw before being replaced by fellow new signing Nick Proschwitz. Gray scored his first competitive goal for the club in the following match, a 6–6 draw with Dagenham & Redbridge in the League Cup first round, which Brentford won 4–2 in a penalty shoot-out. He scored the first Football League goal of his career on the stroke of half-time in a 2–0 win over Rotherham United on 30 August.
After a long goalless run, Gray regained form in November, scoring five goals in four of five successive wins and receiving the Championship Player of the Month award. He also earned a place in the Football League Team of the Week for his goalscoring performances in wins over Nottingham Forest and Millwall in mid-November. Gray's goal in a 3–2 win over Cardiff City on 20 December was the last of a run of seven goals in eight matches. A sparse goal return in the early months of 2015 saw manager Mark Warburton drop Gray to the bench in favour of Chris Long for the visit of Huddersfield Town to Griffin Park on 3 March. He quickly regained his starting berth and finished the regular season with four goals in his last 10 appearances, helping Brentford to fifth position and a matchup with Middlesbrough in the play-off semi-finals. He scored in the first leg, but a successful first full league season ended after a 5–1 aggregate defeat. Gray made 50 appearances and scored 18 goals during the 2014–15 season.
Amidst three transfer bids from Hull City, Gray's two goals in his first two appearances of the 2015–16 season prompted Brentford to offer him a new, improved contract, but he left the club on 21 August 2015. Gray finished his time at Griffin Park having scored 20 goals in 52 appearances and departed for a club-record fee.
On 21 August 2015, Gray joined Championship club Burnley on a three-year contract for an undisclosed fee – believed to be a club-record £6 million deal – double the previous record jointly held by George Boyd and Steven Fletcher. Gray signed on the eve of Brentford's Championship clash at Turf Moor but wasn't eligible to make his debut against his former club, having signed too late.
Gray's former club Luton Town revealed their financial windfall after the striker's transfer to Burnley. A club statement read: "We are guaranteed to receive a shade over £1.1 million from the fee which will be spread over three seasons; an initial figure approaching £300,000 followed by two of just over £400,000 each".
On 29 August 2015, Gray made his Burnley debut in a 2–1 away victory over Bristol City. He followed up his debut by scoring his first goal for the club in second half stoppage time to complete a 3–1 home win over Sheffield Wednesday two weeks later. Gray's goalscoring run of eight goals in eight matches during October and November helped Burnley keep pace with the league leaders. A further seven goals in nine matches from late December to early February, including a hat-trick in a 4–0 win over Bristol City increased his goalscoring tally to 15, as Burnley chased the automatic promotion positions in the Championship table. Gray scored eight goals in Burnley's remaining matches to help them reach the Championship summit, including one on the final day of the 2015–16 season as Burnley secured the Championship title after a 3–0 away win over Charlton Athletic. During this time, Gray was named Championship Player of the Year and won the Golden Boot award after finishing as Championship top scorer with 25 goals, including the two he scored in his appearances for Brentford.
Gray made his Premier League debut on the opening day of the 2016–17 season in a 1–0 home defeat to Swansea City. One week later, he followed up his Premier League debut by scoring his first Premier League goal in a 2–0 home win over Liverpool. Gray scored his first Premier League hat-trick in a 4–1 victory over Sunderland on 31 December 2016 to become the first Burnley player to score a Premier League hat-trick and the first Burnley player to score a top flight hat-trick since Peter Noble in 1975. Gray finished the 2016–17 season with 36 appearances and 10 goals, helping Burnley to finish 16th in the Premier League.
On 9 August 2017, Gray signed for Premier League club Watford on a five-year contract for an undisclosed club record fee, after he rejected the offer of a new contract at Burnley, having entered the final year of his contract.
Gray's goalscoring record for Luton in the final months of the 2011–12 season raised the attention of the England C team and he was named in the squad for an International Challenge Trophy match against Russia U23 in June 2012. He made his debut in a 4–0 defeat, playing the full 90 minutes. He was later called into the squad to face Belgium U23 in September 2012. He came on as a half-time substitute for Stephen Brogan and scored his first international goal with the winner in a 2–1 victory. The win saw England C qualify for the semi-final of the International Challenge Trophy. He played in the semi-final on 5 February 2013 against Turkey A2, which England C lost 1–0. Gray captained England C in the second half of a 6–1 friendly win over Bermuda on 5 June 2013, scoring the team's sixth goal. He appeared again in a 2–2 friendly draw with Czech Republic U21 in November 2013, starting the match and lasting 70 minutes before being replaced by Dan Fitchett. Gray played in a friendly versus Jordan U23 at the King Abdullah Stadium in Amman on 4 March 2014, starting in a 1–0 victory and was replaced by Dan Fitchett at half-time. Gray's return to the Football League in June 2014 meant that he was no longer eligible for England C. He won six caps and scored two goals.
Gray was born in Wolverhampton, West Midlands. He was introduced to football by his grandfather and suffered heartbreak at 13-years-old when his grandfather died. Acting as a mentor and father figure for his younger half-brother Cody, Gray said "I know what my grandad wants me to do and that's look after my family. It's driving me to work harder". He is an Arsenal supporter. Gray has a four-inch scar on his left cheek having been stabbed in the face in Wolverhampton in a gang-related incident in 2011. He spoke in May 2015 of having started to grow out of the gang lifestyle around the time of the incident and credited his mother, close friends and Luton Town for turning his life around.
On 23 August 2016, Gray was charged with misconduct by the FA after a series of homophobic tweets he posted on Twitter in 2012 came to light. Four days later, it was reported that the FA were also investigating another tweet posted by Gray in 2014 which included a derogatory racial term. On 23 September, Gray was suspended for four matches and fined £25,000.
In late 2016, Gray entered a relationship with pop-star Leigh-Anne Pinnock.As of match played 23 September 2017
Luton TownConference Premier: 2013–14
FA Cup Player of the Round: 2012–13 (Fourth Qualifying Round)
Conference Premier Player of the Month: February 2014
Luton Town Young Player of the Season: 2013–14
Conference Premier Golden Boot: 2013–14
Conference Premier Team of the Season: 2013–14
Football League Team of the Week: 3–9 November 2014
Championship Player of the Month: November 2014
Championship Player of the Year: 2015–16
Championship Golden Boot: 2015–16