| | 2019 HSBC UK | XC National Series #2 | | Hadleigh Park | Elite | | 20 | Team Inspired | 8 / 40 | 82% | 1h29:15.00 | 1h24:30.00 | 5.6% | - | - | |
| | 2019 HSBC UK | XC National Series #3 | | Cannock Chase | Elite | | 14 | Team Inspired | 8 / 28 | 74% | 1h35:52.00 | 1h29:55.00 | 6.6% | - | - | |
| | British Cycling - UK CX National Champs '20 | | Shrewsbury Sports Village | Elite | | 7 | Team Inspired | 7 / 71 | 91% | 1h05:07.00 | 59:19.00 | 9.8% | - | - | |
| | 2014 British Cycling MTB XC #1 | | Codham Park | 13-14 | | 302 | edinburgh RC | 5 / 37 | 89% | 37:11.00 | 35:27.00 | 4.9% | - | - | |
| | 2014 British Cycling MTB XC #3 | | Margam Park | 13-14 | | 373 | edinburgh RC | 5 / 28 | 85% | 51:04.00 | 47:59.00 | 6.4% | - | - | |
| | 2014 British Cycling MTB XC #4 | | Sherwood Pines | 13-14 | | 240 | edinburgh RC | 2 / 42 | 98% | 48:01.00 | 47:17.00 | 1.6% | - | - | |
| | 2014 British Cycling MTB XC #5 | | Cannock Chase | 13-14 | | 356 | edinburgh RC | 4 / 35 | 91% | 1h01:58.00 | 1h01:01.00 | 1.6% | - | - | |
| | 2014 Scottish XC #3 | | Abriachan | 13-14 | | 133 | | 4 / 18 | 82% | 22:32.39 | 20:50.92 | 8.1% | - | - | |
| | 2014 Scottish XC #5 | | Dalbeattie | 13-14 | | 133 | | 1 / 12 | 100% | 23:43.48 | 23:43.48 | 0% | - | - | |
| | 2014 Scottish XC #1 | | Forfar | 13-14 | | 33 | | 1 / 21 | 100% | 20:07.93 | 20:07.93 | 0% | - | - | |
| | 2015 British Cycling MTB XC #2 | | Newnham Park | 15-16 | | 312 | edinburgh RC | 13 / 33 | 63% | 50:46.00 | 45:30.00 | 11.6% | - | - | |
| | 2015 British Cycling MTB XC #1 | | Sherwood Pines | 15-16 | | 328 | edinburgh RC | 13 / 57 | 79% | 1h08:03.00 | 1h03:29.00 | 7.2% | - | - | |
| | 2015 Scottish XC #2 | | Dalbeattie | 15-16 | | 157 | | 1 / 19 | 100% | 38:05.20 | 38:05.20 | 0% | - | - | |
| | 2015 British Cycling MTB XC #3 | | Fforest Fields | 15-16 | | 142 | edinburgh RC | 15 / 36 | 60% | 58:03.00 | 50:46.00 | 14.4% | - | - | |
| | 2015 Scottish XC #3 | | Laggan Wolftrax | 15-16 | | 155 | edinburgh RC | 2 / 19 | 94% | 54:42.00 | 54:31.00 | 0.3% | - | - | |
| | 2015 British Cycling MTB XC #4 | | Cathkin Braes Country Park | 15-16 | | 140 | edinburgh RC | 16 / 39 | 61% | 1h08:33.00 | 1h00:03.00 | 14.2% | - | - | |
| | British Cycling - UK XC National Champs '15 | | Hadleigh Park | 15-16 | | 215 | edinburgh RC | 7 / 46 | 87% | 51:59.00 | 50:15.00 | 3.5% | - | - | |
| | 2015 British Cycling MTB XC #5 | | Cannock Chase | 15-16 | | 208 | edinburgh RC | 4 / 44 | 93% | 1h01:37.00 | 1h00:18.00 | 2.2% | - | - | |
| | 2015 Scottish XC #4 | | Lochore Meadows Country Park | 15-16 | | 154 | | 2 / 12 | 91% | 44:12.40 | 44:09.65 | 0.1% | - | - | |
| | 2015 Scottish XC #5 | | Badaguish | 15-16 | | 154 | | 2 / 15 | 93% | 39:23.27 | 38:54.66 | 1.2% | - | - | |
| | 2016 Scottish XC #1 | | Laggan Wolftrax | 15-16 | | 154 | | 2 / 10 | 89% | 52:03.40 | 52:03.10 | 0% | - | - | |
| | 2016 British Cycling MTB XC #1 | | Pembrey Country Park | 15-16 | | 202 | edinburgh RC | 1 / 57 | 100% | 58:50.00 | 58:50.00 | 0% | - | - | |
| | 2016 British Cycling MTB XC #2 | | Newnham Park | 15-16 | | 131 | edinburgh RC | 3 / 46 | 96% | 57:09.00 | 56:57.00 | 0.4% | - | - | |
| | 2016 Scottish XC #2 | | Dunoon | 15-16 | | 156 | | 2 / 11 | 90% | 52:38.00 | 52:28.00 | 0.3% | - | - | |
| | 2016 British Cycling MTB XC #3 | | Dalby Forest | 15-16 | | 101 | edinburgh RC | 1 / 44 | 100% | 56:57.00 | 56:57.00 | 0% | - | - | |
| | 2016 British Cycling MTB XC #4 | | Fforest Fields | 15-16 | | 151 | edinburgh RC | 3 / 46 | 96% | 1h12:07.00 | 1h08:45.00 | 4.9% | - | - | |
| | British Cycling - UK XC National Champs '16 | | Cathkin Braes Country Park | 15-16 | | 62 | edinburgh RC | 1 / 38 | 100% | 1h02:12.00 | 1h02:12.00 | 0% | - | - | |
| | 2016 British Cycling MTB XC #5 | | Cannock Chase | 15-16 | | 102 | edinburgh RC | 1 / 46 | 100% | 52:54.00 | 52:54.00 | 0% | - | - | |
| | 2016 Scottish XC #6 | | Forfar | 15-16 | | 155 | | 4 / 8 | 57% | 53:23.78 | 51:20.61 | 4% | - | - | |
| | 2016 Scottish XC #3 | | Cathkin Braes Country Park | 15-16 | | 155 | | 1 / 17 | 100% | 58:19.01 | 58:19.01 | 0% | - | - | |
| | 2015 Scottish XC #1 | | Cathkin Braes Country Park | 15-16 | | 160 | | 2 / 22 | 95% | 1h01:09.15 | 1h00:33.63 | 1% | - | - | |
| | 2017 British Cycling MTB XC #1 | | Pembrey Country Park | 17-18 | | 218 | edinburgh RC | 3 / 33 | 94% | 1h14:57.00 | 1h12:15.00 | 3.7% | - | - | |
| | 2017 British Cycling MTB XC #3 | | Aske Moor | 17-18 | | 207 | edinburgh RC | 3 / 22 | 90% | 1h22:39.00 | 1h20:57.00 | 2.1% | - | - | |
| | British Cycling - UK XC National Champs '17 | | Cannock Chase | 17-18 | | 206 | edinburgh RC | 4 / 26 | 88% | 1h17:35.00 | 1h13:48.00 | 5.1% | - | - | |
| | 2017 British Cycling MTB XC #5 | | Royal Welsh Showground | 17-18 | | 207 | edinburgh RC | 2 / 15 | 93% | 1h08:58.00 | 1h07:53.00 | 1.6% | - | - | |
| | 2017 HSBC UK | CX National Trophy Series #3 | | Shrewsbury Sports Village | 17-18 | | 9 | edinburgh RC | 11 / 50 | 80% | 38:59.30 | 36:51.70 | 5.8% | - | - | |
| | 2017 HSBC UK | CX National Trophy Series #2 | | Abergavenny Leisure Centre | 17-18 | | 14 | edinburgh RC | 1 / 57 | 100% | 45:37.00 | 45:37.00 | 0% | - | - | |
| | 2017 HSBC UK | CX National Trophy Series #1 | | Moorways Leisure Centre, Derbyshire | 17-18 | | 12 | edinburgh RC | 4 / 55 | 94% | 44:11.10 | 43:36.00 | 1.3% | - | - | |
| | British Cycling - UK CX National Champs '18 | | Hetton Lyons Country Park | 17-18 | | 10 | edinburgh RC | 1 / 49 | 100% | 44:12.30 | 44:12.30 | 0% | - | - | |
| | 2018 British Cycling MTB XC #2 | | Dalby Forest | 17-18 | | 201 | edinburgh RC | 2 / 27 | 96% | 1h18:09.00 | 1h16:59.00 | 1.5% | - | - | |
| | British Cycling - UK XC National Champs '18 | | Hadleigh Park | 17-18 | | 201 | edinburgh RC | 1 / 19 | 100% | 1h07:33.00 | 1h07:33.00 | 0% | - | - | |
| | UCI - XCO World Championships '18 | | Lenzerheide | 17-18 | 10023509346 & 2000 | 25 | Great Britain | 53 / 110 | 52% | 1h24:09.00 | 1h13:45.00 | 14.1% | - | - | |
| | 2018 British Cycling MTB XC #5 | | Royal Welsh Showground | 17-18 | | 141 | edinburgh RC | 1 / 18 | 100% | 57:08.00 | 57:08.00 | 0% | - | - | |
| | UCI - XCO World Championships '19 | | Mont-Sainte-Anne, QC | 19-22 | 10023509346 & 2000 | 64 | UK | DNF / 70 | 0% | DNF | 1h19:50.00 | - | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #1 | | Bikepark Albstadt | U23 | 10023509346 & 2000 | 122 | | 62 / 142 | 57% | 1h24:39.00 | 1h17:42.00 | 8.9% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #2 | | Nové Mesto | U23 | 10023509346 & 2000 | 120 | | 23 / 138 | 84% | 1h17:58.00 | 1h14:24.00 | 4.8% | - | - | |
| | British Cycling - UK XC National Champs '19 | | Cannock Chase | U23 | | 63 | Team Inspired | 2 / 13 | 92% | 1h17:20.00 | 1h17:18.00 | 0% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #5 | | Val di Sole | U23 | 10023509346 & 2000 | 70 | | 61 / 113 | 46% | 1h33:31.00 | 1h23:10.00 | 12.4% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #4 | | Les Gets | U23 | 10023509346 & 2000 | 75 | | 46 / 107 | 58% | 1h19:47.00 | 1h13:22.00 | 8.8% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #3 | | Vallnord | U23 | 10023509346 & 2000 | 66 | | 34 / 79 | 58% | 1h15:03.00 | 1h08:08.00 | 10.2% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #6 | | Lenzerheide | U23 | 10023509346 & 2000 | 66 | | 27 / 110 | 76% | 1h13:05.00 | 1h09:00.00 | 5.9% | - | - | |
| | 2019 Mercedes-Benz UCI World Cup XC #7 | | Snowshoe, WV | U23 | 10023509346 & 2000 | 42 | | 25 / 54 | 55% | 1h12:01.00 | 1h07:55.00 | 6% | - | - | |
| | 2019 HSBC UK | CX National Trophy Series #5 | | Pembrey Country Park | U23 | | 14 | Team Inspired | 6 / 19 | 72% | 1h02:37.00 | 58:49.00 | 6.5% | - | - | |
| | 2019 HSBC UK | CX National Trophy Series #3 | | Beach Park, Irvine | U23 | | 54 | Team Inspired | 3 / 21 | 90% | 1h05:25.00 | 1h03:17.00 | 3.4% | - | - | |
| | 2020 Mercedes-Benz UCI World Cup XC #1 | | Nové Mesto | U23 | 10023509346 & 2000 | 52 | | 34 / 88 | 62% | 1h30:22.00 | 1h24:11.00 | 7.4% | - | - | |
| | 2020 Mercedes-Benz UCI World Cup XC #2 | | Nové Mesto | U23 | 10023509346 & 2000 | 52 | | 23 / 92 | 76% | 1h21:49.00 | 1h15:57.00 | 7.7% | - | - | |
| | UCI - XCO World Championships '20 | | Leogang | U23 | 10023509346 & 2000 | 53 | UK | 32 / 73 | 57% | - | 1h08:15.00 | - | - | - | |
| | 2019 HSBC UK | CX National Trophy Series #6 | | York Cycle Sport | U23 | | 10 | Team Inspired | 3 / 23 | 91% | 1h01:08.00 | 59:01.00 | 3.6% | - | - | |
| | British Cycling - UK CX National Champs '19 | | Cyclopark | U23 | | 83 | Team Inspired | 7 / 32 | 81% | 1h10:02.00 | 1h04:44.00 | 8.2% | - | - | |
| | 2021 Mercedes-Benz UCI World Cup XC #2 | | Nové Mesto | U23 | 10023509346 & 2000 | 45 | | 50 / 148 | 67% | 1h34:34.00 | 1h23:44.00 | 12.9% | - | - | |
| | 2021 Mercedes-Benz UCI World Cup XC #1 | | Bikepark Albstadt | U23 | 10023509346 & 2000 | 37 | | DNF / 133 | 0% | DNF | 1h11:49.00 | - | - | - | |