Left winger · age 31 · Scotland · 5 ft 9 in (1.75 m) · left foot
Career 272 apps · 29 goals · 17 assists · league games since 2012/13
Attributes appear once he has ten full games over this season and last.
Left winger 62% · Right midfielder 30% · Right winger 4% · Central midfielder 2% · of his last 50 starts
Rating is Sportmonks’ match rating, averaged. League matches only.
8 minutes · 1 starts · 8 a game
League matches in the competitions we cover, from Sportmonks. Per 90 shown from five full games. Cups, Europe and internationals aren’t included.
| Season | Club | Apps | Minutes | Goals | Assists | Rating |
|---|---|---|---|---|---|---|
| 2026/27 | LivingstonChampionship | 1 (1) | 8 | 0 | 0 | 6.55 |
| 2025/26 | MotherwellPremiership | 10 (0) | 112 | 0 | 0 | 6.52 |
| 2024/25 | MotherwellPremiership | 9 (2) | 245 | 0 | 0 | 6.64 |
| 2023/24 | MotherwellPremiership | 16 (6) | 573 | 2 | 0 | 6.91 |
| 2023 | Colorado RapidsMajor League Soccer | 22 (20) | 1,594 | 1 | 1 | 6.72 |
| 2022 | Colorado RapidsMajor League Soccer | 15 (10) | 833 | 1 | 0 | 6.83 |
| 2021/22 | Bristol RoversLeague Two | 34 (26) | 2,355 | 5 | 5 | 6.96 |
| 2020/21 | Bristol RoversLeague One | 30 (22) | 1,952 | 6 | 3 | 6.92 |
| 2020 | Colorado RapidsMajor League Soccer | 2 (2) | 175 | 0 | 0 | 6.63 |
| 2019 | Colorado RapidsMajor League Soccer | 27 (19) | 1,777 | 2 | 3 | 6.77 |
| 2018 | Colorado RapidsMajor League Soccer | 19 (19) | 1,522 | 2 | 0 | 6.78 |
| 2018 | Minnesota UnitedMajor League Soccer | 8 (6) | 525 | 1 | 0 | 7.08 |
| 2017 | Minnesota UnitedMajor League Soccer | 12 (8) | 639 | 1 | 1 | 6.91 |
| 2016/17 | HeartsPremiership | 19 (13) | 1,183 | 3 | 2 | – |
| 2015/16 | HeartsPremiership | 36 (28) | 2,583 | 3 | 1 | – |
| 2013/14 | HeartsPremiership | 12 (2) | 1,425 | 2 | 1 | – |
| 2012/13 | HeartsPremiership | 0 (0) | 0 | 0 | 0 | – |
| All 16 seasons | 272 (184) | 17,501 | 29 | 17 | 6.85 | |
Apps (starts). Ratings are Sportmonks’ match ratings, averaged over the season. League matches in the competitions we cover, from Sportmonks.
From the historical record: Wikidata (CC0) and Wikipedia’s transfer lists (CC BY-SA 4.0), each fee credited to the outlet or club that reported it. Dates are only as exact as the record; “Move” means the type wasn’t recorded. Retrospective record, not Swoop intelligence.
Games he started or came on in; league games only (cups and European games aren’t in our data). Ratings from Sportmonks.