May began playing football aged ten and started his career as a member of St Johnstone's youth squad.[2][3] Aged 16, May made his first team debut on 11 May 2009 as a substitute against Airdrie United in the Scottish First Division scoring his first senior goal.[4] May later recalled on his debut, quoting: "Derek McInnes gave me my first taste of first team football. He gave my SPL debut at 16. He believed in me. He taught me how important it was to keep possession when I had the ball and make the opposition work to get it back."[5] In 2009, he signed a new contract that tied him to the club until 2012.[6]
May had to wait another season for his next appearance, coming on as a substitute on 13 November 2010 against Hearts in the Scottish Premier League.[7] With his first start coming on 26 January 2011 against Motherwell.[8] He scored two goals on 1 February 2011 in their 2–0 win over Hamilton.[9] In all he made 22 appearances that season scoring twice.
Alloa (loan)
May's only appearance of the 2011–12 season for St Johnstone came as a substitute on the opening day of the season against Aberdeen at Pittodrie.[10] With appearances limited he was loaned to Alloa Athletic until the end of January.[11] He made his league debut for Alloa on 10 December against Queen's Park,[12] going on to score his first goals on 2 January 2012, netting a hat-trick for The Wasps in a 3–1 win against East Stirlingshire.[13] After one month at the club, May had his loan spell with Alloa extended until the end of the season.[14] May was awarded the SFL Player of the Month, Young Player of the Month and Irn-Bru Ginger Boot awards for January; the first time that one player has won all three player awards in a month.[15][16] He scored four goals in the 8–1 victory against Elgin City that clinched the Third Division championship.[17] At the end of the season, May won the Irn-Bru SFL Phenomenal Third Division Player of the Season.[18] May signed a new one-year contract with St Johnstone.[19]
Hamilton Academical (loan)
On 29 August 2012, he joined Scottish First Division side Hamilton Academical on loan until 31 May 2013.[20] May cited moving to Hamilton on loan, as "get his own career back on track."[21] After four games without a goal, May scored his first goal and then another in the match, in addition to two assists, as Hamilton beat Airdrieonians 4–0 on 11 October 2012.[22] After scoring fifteen goals this season, May scored two consecutive hat tricks, against Airdieonians, in a 5–0 win on 11 April 2013[23] and another against Livingston, in a 3–0 win on 18 April 2013.[24] For his performance in April, May was awarded the Irn Bru player and young player of the month in the Scottish Football League.[25] At the end of the season, May says he enjoyed his time at Hamilton.[26] At the end of the season, May was awarded again when he won Irn-Bru SFL Phenomenal Young player of the Season.[27] His future at St Johnstone appeared to be in doubt,[28] but he signed a new one-year contract in May 2013.[29][30]
2013–14 season
In the summer of 2013 May was the subject of several bids from Peterborough United of the English League One,[31] though May insisted he was happy at the club.[32] Immediately after being linked with Peterborough, May was offered and signed a further contract extension by St Johnstone.[33] May believed his performance in his two loan spells would allow him to make a breakthrough at the club.[34]
May started the 2013–14 season very well. Awarded a starting place, he scored the equaliser against Europa League opponents, Rosenborg, in a famous 2–1 aggregate win.[35] He went on to score the winner against Hearts,[36] and goals against Ross County[37] and Hibs.[38] He scored 4 goals in his first 9 games of the season leading to a call-up for the Scotland U21 team. New St Johnstone manager Tommy Wright described him as "heading for the top".[39]
A rich vein of form followed. In a match against Inverness CT on 5 October, May provided a triple assist and scored, as St Johnstone won 4–0.[40] He then scored four goals in three matches against Motherwell, Hearts and Kilmarnock. Thanks to this form, May extended his contract at St Johnstone until 2015.[41] May won the Scottish Professional Football League player of the month award of October.[42] May
scored his first hat-trick of the season, in a 3–0 win over Dundee United.[43] Three weeks after that, May scored another hat-trick, on 18 January, in a 3–3 draw against Hearts.[44]
His 18th goal of the season saw comparisons drawn with earlier Saints greats, noting the potential to break Paul Wright's goalscoring record, set in the 1991–92 season.[45] May scored his 19th and 20th goal of the season, in all competitions, as they beat Aberdeen to reach their first Scottish Cup Final.[46] May was among four players to be nominated for PFA Scotland Young Player of the Year, but lost out to Dundee United's Andrew Robertson.[47][48] May won the SFWA Young Player of the Year[49] and was included in the Scottish Premiership Team of the Year.[50] In the Scottish Cup Final, May started the match and provided an assist for Steven MacLean, as they beat Dundee United 2–0 at Celtic Park.[51] During the match, May had a goal disallowed for handball and was booked for this.[51]
During the 2013–14 season, May continued to attract interest from lower-league English clubs, such as Rotherham United,[52] Peterborough United,[53]Preston North End[54] and QPR.[55] Talks over a new contract started,[56] but were put on hold until after the Scottish Cup Final.[57]
May joined Football League Championship side Sheffield Wednesday on 9 August 2014, signing a four-year deal.[61][62] Upon the move, Manager Stuart Gray believed that May had expectations to become a success at the club[63] and May, himself, felt it was the right decision to leave St Johnstone at the right time.[64]
May made his debut for the club on 16 August 2014, in a goalless draw against Derby County.[65] His first goal came in an away fixture at Middlesbrough on 23 August, which Wednesday won 3–2.[66] He scored his second goal for the club at Birmingham City on 16 September, in a 2–0 win.[67] Four days later, he continued a sequence of contributing vital goals, as he scored the only goal of the game against Reading.[68] May helped the club end an 11-game winless run by scoring in a 2–1 win over Wigan Athletic on 29 November.[69] May then had a goal drought that lasted twelve games and, as a result, he was often placed on the substitute bench.[70] This drought ended on 24 February 2015, when he scored in a 3–1 win against Millwall.[71]
Preston North End
May was transferred to Preston North End on 1 September 2015 for an undisclosed fee.[72] Whilst playing for Preston against Fulham in November 2015, May suffered a knee ligament injury which ruled him out for the rest of the season.[73] He made his first team return as a substitute against Brentford on 11 February 2017.[74] May scored his first goal for Preston in a 1–1 draw with Rotherham United on 29 April 2017.[75]
Aberdeen
May joined Scottish Premiership club Aberdeen on a four-year deal in August 2017, for an undisclosed fee thought to be around £300,000, reuniting with former St Johnstone manager Derek McInnes.[76] Although initially given the squad number of 18, May later changed to 83, in honour of Aberdeen winning the UEFA Cup Winner's Cup in May 1983.[77] May scored his first goal for Aberdeen in a 2–1 victory over Dundee; coincidentally this was timed at the 11th minute of the game, creating a further reference to the club's European honours (11 May 83).[78] He contributed to Aberdeen finishing runners-up in the 2017–18 Scottish Premiership, and was an unused substitute in the 2018 Scottish League Cup Final, lost to Celtic.[79]
St Johnstone (second spell)
On 29 August 2019, May signed for St Johnstone for a second time, agreeing a two-year contract with the option of a further year.[80] He scored his first goal since returning in a 2–2 draw away to Ross County in October 2019, also missing a penalty in the same match.[81]
On 26 April 2021, May signed a new two-year contract extension with St. Johnstone.[82]
Livingston
On 21 August 2024, May signed for Livingston on loan until the end of the season.[83]