Early career Forrest played for South Ayr Boys Club, and consistently shone at every level. He was scouted by Celtic's talent spotter for
Ayrshire, Jim Began, at the age of 11. Several other clubs such as
Kilmarnock,
Ayr United and
Rangers were also interested in him. He signed youth terms with Celtic at the age of 13 and then joined Celtic's coaching school in
Hamilton, which his coach Martin Millar credits with helping his development. He made his first team debut for
Celtic on 1 May 2010, coming on as a late substitute against
Motherwell. He scored the third of Celtic's goals in a 4–0 win. He won the
Scottish Youth Cup with the club in 2009–10, beating rivals
Rangers 2–0 at
Hampden Park.
2010–11 in 2010 He made his first European appearance for Celtic in a
Champions League qualifying game against
Braga in July 2010. A few days later he won the
man of the match award for his performance in the
Emirates Cup game with
Olympique Lyonnais. He continued this fine form into the league campaign, scoring against
St Mirren in a 4–0 victory. Forrest played in both legs of Celtic's Europa League qualifier against
Utrecht. Forrest was named the
SPL Young Player of the Month for August 2010 In the following month Forrest opened the scoring against Hearts. He made his
Old Firm debut in a 2–0 win at
Ibrox in January 2011. He received the first red card of his career in the following match against
Hamilton. He scored against Hearts, before being rewarded for his form with a new five-year deal on 28 January 2011. Forrest collected his first winner's medal on 21 May 2011 when he came on a late second-half substitute for
Kris Commons in Celtic's 3–0
Scottish Cup Final win over Motherwell. He finished the season with 3 goals and 1 assist after 25 appearances.
2011–12 In August 2011,
Scott Brown said that Forrest was the best player to come out of the
Celtic youth academy since
Aiden McGeady. Forrest scored his first goal of the season in a 5–1 victory against Dundee United and his performances in the month of September, including two goals in a 4–0 victory against Motherwell and another goal against Inverness Caledonian Thistle, saw him win
SPL Young Player of the Month. In Celtic's
Scottish League Cup quarter-final tie with
Hibernian on 26 October, Forrest was credited with a match-winning performance. Celtic went in at the break 1–0 down but Forrest was instrumental in reigniting the tie after half-time, with two early goals. In November 2011, the
Scottish Football Association's Dutch performance director
Mark Wotte said that he saw Forrest as being "the light in the darkness" of Scottish football. He said that if more players like Forrest are produced then the
Scotland team will be able to match the performance of countries like
Uruguay, who got to the
2010 World Cup semi-final and at the time were fourth in the
FIFA World Rankings despite having a population smaller than Scotland's. Forrest played in all of Celtic's matches in the Europa League qualifiers and group stage. He scored against Dunfermline and won the SPL Young Player of the Month award for November, his second of the season. In January 2012, Forrest was named one of the 13 players to watch in 2012 by world football governing body
FIFA. He scored against St Mirren and Dunfermline before his season ended after suffering an injury during Celtic's defeat to Kilmarnock in the
2012 Scottish League Cup Final. He finished the season having scored 9 goals and made 7 assists in 43 appearances and won his second major honour at the end of the season when Celtic finished as SPL Champions. His form over the season also saw him win two personal awards as both the
Scottish Football Writers' Association and
Professional Footballers' Association Scotland voted him their respective Young Player of the Year as well as being named in the PFA Scotland SPL Team of the Year.
2012–13 Forrest played in all four
Champions League qualifiers in August 2012, as Celtic reached the group stage for the first time since 2008. He played in three out of six group stage matches and made an impact as a substitute in a 3–2 victory away to
Spartak Moscow, which was Celtic's first away victory in the Champions League. He missed Celtic's famous 2–1 victory against
Barcelona due to injury. Forrest suffered with injury throughout the season scoring four and assisting eight goals in 29 appearances. He scored his first goal of the season in a 4–0 victory against
Ross County in December. He scored his first goal in the
Scottish Cup against
Raith Rovers. He played in both legs of Celtic's 5–0 aggregate defeat to
Juventus in the last 16 of the Champions League. He scored a penalty against
Dundee and scored on the final league game of the season against
St Johnstone. Forrest finished the season with a second consecutive league title and his second Scottish Cup winners medal after starting Celtic's 3–0 win against Hibernian in the final.
2013–14 In July 2013, Forrest scored his first European goal for Celtic in a second round Champions League Qualifier against
Cliftonville. In the following month he scored against
Aberdeen in the league and scored a memorable third and decisive goal in the final moments of the second leg of the Champions League play-off against
Shakhter Karagandy - which Celtic won 3–2 and qualified for the group stage for the second year in a row. Having played in every qualifying match Forrest missed all of Celtic's games in September after suffering from a virus. His return to action in October saw Forrest score an impressive goal against Hibernian and he played in four Champions League group stage matches, and scored a penalty in Celtic's 2–1 victory against
Ajax. Forrest was arrested by police in November 2013 over allegations of indecent exposure and sexual assault at a nightclub in
Prestwick. He would score two further goals in the league against Hearts and Aberdeen before injury ended his season in March. He scored 7 goals and assisted 5 in only 27 appearances in another injury dominated season as Celtic won three league titles in a row.
2014–15 Forrest's injury issues continued after suffering a hamstring injury against
Dundee United in the first home game of the season. He only returned from injury in November and despite scoring his first goal of the season against St Mirren in December, Forrest was in and out of the team throughout the winter as both the player and coaching staff did not feel confident that Forrest's injury problems were over. Two of Forrest's three European appearances came in the
Europa League including coming on as a substitute in the second leg of Celtic's 4-3 aggregate defeat to
Inter Milan in the last 32 of the competition. He featured more often in the Spring and came on as a substitute in Celtic's 2–0 victory against Dundee United in the
Scottish League Cup Final, scoring the second goal before earning his side a penalty which he would fail to convert. He would score two further goals in the league against St Mirren and Dundee. Forrest made 29 appearances and scored and assisted 4 goals as Celtic won the league for the fourth consecutive season.
2015–16 Despite playing more games in a season free of injury Forrest only scored and assisted 2 goals in 33 appearances - scoring his two goals against Aberdeen and Hamilton in the league. He featured in much of the first half of the season, including five appearances in both the Champions League qualifiers and the
Europa League group stage, before being dropped by manager
Ronny Deila after rejecting a new contract. He only made nine more appearances after the new year as Celtic won the league for the fifth year in a row.
2016–17 Forrest signed a three-year contract with Celtic in August 2016. He started the season strongly scoring Celtic's first goal of the season away to Hearts and scored in the following two league games against St Johnstone and Aberdeen. In September he scored on his 200th appearance for Celtic against
Alloa Athletic in the league cup and scored his fifth goal of the season against
Kilmarnock. Forrest played in every match Champions League qualifier and five group stage matches including draws home and away to
Manchester City. On 27 November 2016 Forrest scored the second goal and won a penalty in a man of the match performance in the
League Cup final as Celtic defeated Aberdeen 3–0 to win the club's 100th trophy. After the winter break Forrest only scored two more goals against Motherwell and Kilmarnock. Forrest was an unused substitute as Celtic defeated Aberdeen 2–1 in the
Scottish Cup Final to win the
treble for the fourth time in their history and for the first time in 16 years. Forrest made 46 appearances and scored 8 goals and assisted 13 as Celtic finished the domestic season without defeat after 47 matches to be nicknamed the "Invincibles".
2017–18 The beginning of the
2017–18 season saw Forrest play in every Champions League qualifier as he helped Celtic qualify for the group stage by scoring the decisive goal away to
Rosenborg in a 1–0 aggregate victory in the third round and he scored another goal in an 8–4 aggregate win against
Astana in the play-off round. Forrest scored against Kilmarnock as he played as a striker in the absence of
Moussa Dembélé and
Leigh Griffiths. His strong start to the season continued into September as he scored twice against Ross County in the league and scored another two goals in the following match against Dundee in the League Cup. Forrest played in all of Celtic's group stage matches in the Champions League including an impressive performance against
Bayern Munich as he provided the assist for
Callum McGregor to equalise in a 2–1 defeat at Celtic Park. On 26 November 2017, Forrest scored his third goal in a League Cup final – becoming the first Celtic player since
Bobby Lennox to score in three winning League Cup finals – after opening the scoring in a 2–0 win against Motherwell. In December, Forrest's goal tally for the season reached double figures for the first time after scoring twice against Motherwell in the league and he scored two more goals against Hamilton and Dundee before the winter break. After returning to action in January Forrest opened the scoring against
Brechin City in the Scottish Cup. In the following month Forrest scored the first hat-trick of his career against
Partick Thistle in a 3–2 win in the fifth round of the Scottish Cup. He played in both legs of Celtic's 3–1 aggregate defeat to
Zenit in the round of 32 of the Europa League. His performances throughout the season saw him nominated for
PFA Scotland Players' Player of the Year. On 29 April 2018, Forrest scored his first goal in an Old Firm derby as Celtic won the league for the seventh season in a row after a 5–0 win against Rangers at Celtic Park – the club's biggest winning margin in an Old Firm league fixture. Forrest played in Celtic's 2–0 victory against Motherwell in the Scottish Cup Final as Celtic became the first Scottish club to win back-to-back trebles. Forrest ended his most successful season to date having made 58 appearances – among the highest number of games played in professional football that season – and scored 17 goals and assisted 10.
2018–19 Forrest began the
2018–19 season as first choice right-winger and he scored in both legs in the first round of Champions League qualifiers against
Alashkert. He conceded a penalty and was sent off as last defender in a 3–1
Europa League group stage defeat away to
FC Red Bull Salzburg on 4 October 2018, at which time he was yet to score in the domestic campaign. However he kept his place for the next league fixture against St Johnstone at
McDiarmid Park and responded positively, scoring four goals (the first Celtic player in six years to do so) in the first half of an eventual 6–0 win. Further goals against Hearts in the semi-final of the league cup and Dundee in the league saw him win
Scottish Premiership Player of the Month. In November he helped Celtic progress to the knock out stage of the Europe league by providing assists in wins against
RB Leipzig and
Rosenborg. He started Celtic's 1–0 victory against Aberdeen in the league cup final against Hearts in the league. In December Forrest scored twice against Kilmarnock in a 5–1 win. Following the winter break Forrest opened the scoring against St Johnstone in the league and would score against the Perth side again in the Scottish Cup. He opened the scoring in a 2–1 win against Hearts in the first match of Neil Lennon's second tenure as Celtic manager. He played in both legs of the Europa League defeat against
Valencia in the Europa League round of 32. In March Forrest opened the scoring with a long range strike against Hibernian in the Scottish Cup quarter-final. On 31 March 2019 he scored a late winning goal against Rangers in a 2–1 win in the league. On 14 April 2019 Forrest opened the scoring against Aberdeen in the Scottish Cup semi-final with a long range strike. After the match manager Neil Lennon described Forrest as "One of the best players in Britain right now". He started Celtic's 2–1 victory against Hearts in the Scottish Cup final to complete a historic third consecutive treble. Forrest equalled his goal tally from the previous season with 17 goals as Celtic won an eighth consecutive Scottish league championship, and Forrest won the
PFA Scotland,
Scottish Football Writers' and
SPFL Player of the Year awards.
2019–20 Forrest started the 2019–20 season in excellent goal scoring form with six goals in the month of August. He scored in both legs of Celtic's defeat to
Cluj in the third round of qualifying in the Champions League. He also scored in both legs of the Europa League play-off against
AIK as Celtic progressed to the group stage. Forrest found the net against Motherwell in the league, then scored the winning goal against Dunfermline with a deflected strike in extra time in the League Cup. In September, Forrest scored the winning goal against Hamilton in the Premiership. and in the Europa League he won a penalty to help Celtic earn a 1–1 draw in their opening match against
Stade Rennais. In October 2019 he spoke of his hope of a new contract with Celtic. On 30 October, he signed a new contract, keeping him at the club until 2023. He scored three goals in the league in that month with strikes against Ross County, Aberdeen and St Mirren. On 7 Nov 2019, Forrest scored in the equalising goal in the
Stadio Olimpico against
Lazio in the Europa league. Celtic would go on to win the game to earn their first-ever away victory in Italy. Forrest played in five group stage matches in the Europa League and provided assists in wins against Cluj and Stade Rennais as Celtic finished top of their group for the first time in their history. Later in November he scored two goals in a league win against Livingston. In December he scored against St Mirren and started Celtic's 1–0 win against Rangers in the League Cup Final. Following the winter break he scored two further goals in the league against St Johnstone and Hamilton. He played in both legs of Celtic's defeat to
Copenhagen in the Europa league round of 32. The Coronavirus pandemic saw the season end early as Celtic won the league for a
ninth consecutive season; Forrest finished the season with 16 goals.
2020–21 In August Forrest scored his first goal of the 2020–21 campaign by opening the scoring against Motherwell in the league - making him only the ninth player in the previous 45 years to score in the 12 consecutive seasons in the top flight of Scottish football. In September he scored the winning goal against St Mirren with a header in a 2–1 league victory. On 24 September 2020 Forrest was forced off with an ankle injury against
Riga in the third round of Europa league qualification. The injury would rule Forrest out until March 2021. He missed all of Celtic's Europa league group matches as well as the delayed 2020 Scottish Cup final which saw Celtic win a fourth consecutive treble against Hearts. By the time Forrest returned to action
John Kennedy had been appointed caretaker manager after Celtic's faltering league campaign saw Neil Lennon resign as manager. Forrest made his return as a substitute in a 0–0 draw with Dundee United which saw Rangers confirmed as league champions. In April Forrest scored his third and fourth goals of an injury plagued season against Falkirk in the cup and Livingston in the league as Celtic finished the 2020–21 season without a trophy.
2021–22 Forrest's pre-season was disrupted as he went into self-isolation due to being a close contact to a positive Coronavirus case. He scored his first goals for
Ange Postecoglou in both legs against
Jablonec in the third round of Europa league qualifying. Forrest sustained an injury in the first league of the Europa league play-off against
AZ Alkmaar which ruled him out until late October. On 20 November 2021 Forrest came on as a substitute and scored the only goal of the game as Celtic defeated League Cup holders St Johnstone in the semi-final of the competition. He would miss Celtic's 2–1 victory against Hibernian in the League Cup final due to injury.
2022–23 Forrest reached the mark of 100 club goals for Celtic with a hat-trick against
Hibernian on 15 October 2022, becoming the 30th player in the club's history to do so. On 17 December 2022, Forrest became the third player, along with
Jimmy Johnstone and
Henrik Larsson, for Celtic to reach both 100 goals and assists for the club, when he set up
Callum McGregor in a 1–0 against
Aberdeen at Pittodrie.
2023–24 Celtic announced on 25 May 2023 that Forrest would be given a
testimonial match, which was played against
Athletic Bilbao on 1 August. Forrest was a bit-part player for much of the 2023–24 season, but was reintroduced to the first team during the spring and had his highest scoring season since 2019–20.
2024–25 Forrest signed a new contract in November 2024, keeping him at the club until May 2026. On 15 December 2024, Celtic won the
2024 Scottish League Cup final against Rangers, giving Forrest his 25th trophy. This moved him level with
Bobby Lennox as the Hoops' most decorated player of all time. During the final, Forrest suffered a knee injury which kept him out of action for over three months. He made his long-awaited return against Hearts on 29 March 2025 as a substitute for
Jota. Upon Celtic sealing a 55th Scottish league title on 26 April, Forrest surpassed Lennox and became the most decorated player outright. Forrest played down the milestone, telling
The Herald, "I think it's nice personally hearing about milestones and stuff like that, but I think it's happened because you've been part of such a really good team over the years, a really good squad, players, staff." After coming on as a substitute during the final league game of the season against St Mirren, Forrest scored a 94th-minute equaliser to earn Celtic a 1–1 draw. In doing so, he became the first Celtic player since
Paul McStay to score in 16 consecutive seasons.
2025–26 Forrest scored against Aberdeen on 21 December and has now scored for Celtic for 17 straight seasons, moving him ahead of McStay and
Jimmy McGrory, and level with Bobby Lennox. The only player to score in more than that was
Jimmy McMenemy, who did so for 18 consecutive seasons from 1902 to 1920. ==International career==