03.09 | DNF | | | Maryland Cycling Classic, presented by UnitedHealthcare (1.Pro) EF Education - EasyPost | 196.9 | | | more |
26.08 › 31.0826-31/8 | | | | Tour of Bulgaria (2.2) | | | | more |
30.08 | DNS | | | S4Stage 4 - Burgas › Sliven | 114 | | | |
29.08 | 100 | 35 | | S3Stage 3 - Kazanlak › Burgas | 180.5 | | | |
28.08 | 52 | 33 | | S2Stage 2 - Troyan › Kazanlak | 108.3 | | | |
27.08 | 21 | 19 | | S1bStage 1b - Pirdop › Troyan | 88.9 | | | |
27.08 | 10 | 24 | | S1aStage 1a - Sofia › Pirdop | 70.2 | | | |
26.08 | 37 | 37 | | ProloguePrologue - Sofia › Sofia | 1 | | | |
27.07 › 30.0727-30/7 | | | | Czech Tour (2.1) | | | | more |
30.07 | DNF | | | S4Stage 4 - Šumperk › Šternberk | 176.2 | | | |
29.07 | 88 | 94 | | S3Stage 3 - Moravská Třebová › Červenohorské sedlo | 161.5 | | | |
28.07 | 104 | 99 | | S2Stage 2 - Olomouc › Pustevny | 166.9 | | | |
27.07 | 30 | 32 | | S1Stage 1 - Prostějov › Uničov | 165 | | | |
23.07 | DNF | | | Visegrad 4 Bicycle Race - GP Czech Republic (1.2) | 188 | | | more |
06.07 › 09.076-9/7 | | | | Sibiu Cycling Tour (2.1) | | | | more |
| 81 | | | General classificationGeneral classification | | | | |
09.07 | 45 | | | S4b (ITT)Stage 4b (ITT) - Sibiu › Sibiu | 3.3 | | | |
09.07 | 124 | 82 | | S4aStage 4a - Sibiu › Sibiu | 97.3 | | | |
08.07 | 71 | 68 | | S3Stage 3 - Brezoi › Păltiniș | 202 | | | |
07.07 | 71 | 72 | | S2Stage 2 - Sibiu › Bâlea Lac | 155 | | | |
06.07 | 125 | 125 | | S1Stage 1 - Sibiu › Sibiu | 199 | | | |
26.05 › 28.0526-28/5 | | | | Tour de la Mirabelle (2.2) | | | | more |
| 22 | | | General classificationGeneral classification | 178.3 | | | |
28.05 | 18 | | | S3Stage 3 - Tomblaine › Damelevières | 178.4 | | | |
27.05 | 34 | 26 | | S2Stage 2 - Saint-Amarin › Corcieux | 158.5 | | | |
26.05 | 28 | 28 | | S1Stage 1 - Verdun › Pont-à-Mousson | 160.2 | | | |
17.05 › 21.0517-21/5 | | | | Flèche du Sud (2.2) | | | | more |
| 25 | | | Mountains classificationMountains classification | | | | |
| 38 | | | Points classificationPoints classification | | | | |
| 76 | | | General classificationGeneral classification | | | | |
21.05 | 15 | | | S4Stage 4 - Esch-sur-Alzette › Esch-sur-Alzette | 147.2 | | | |
20.05 | 79 | 77 | | S3Stage 3 - Sanem › Sanem | 148 | | | |
19.05 | 67 | 67 | | S2Stage 2 - Bourscheid › Bourscheid | 131.9 | | | |
18.05 | 69 | 46 | | S1Stage 1 - Rumelange › Rumelange | 156.8 | | | |
17.05 | 48 | 48 | | ProloguePrologue - Esch-sur-Alzette › Esch-sur-Alzette | 3.2 | | | |
25.04 › 01.0525-1/4 | | | | Le Tour de Bretagne Cycliste (2.2) | 119 | | | more |
30.04 | DNS | | | S6Stage 6 - Châteaubriant › Plancoët | 209.4 119 | | | |
29.04 | 123 | 74 | | S5Stage 5 - Sérent › Louisfert | 173.9 | | | |
28.04 | 101 | 77 | | S4Stage 4 - Le Mené › Plumelec | 183.1 | | | |
27.04 | 67 | 62 | | S3Stage 3 - Trégunc › Le Quillio | 191.5 | | | |
26.04 | 76 | 27 | | S2Stage 2 - Sibiril › Melgven | 172.2 | | | |
25.04 | 23 | 23 | | S1Stage 1 - Plouescat › Saint-Pol-de-Léon | 155.5 | | | |
26.03 | DNF | | | GP Industria & Artigianato (1.Pro) EF Education - EasyPost | 199.8 | | | more |
21.03 › 25.0321-25/3 | | | | Settimana Internazionale Coppi e Bartali (2.1) EF Education - EasyPost | | | | more |
| 92 | | | General classificationGeneral classification | | | | |
25.03 | 72 | | | S5 (ITT)Stage 5 (ITT) - Carpi › Carpi | 18.6 | | | |
24.03 | 77 | 94 | | S4Stage 4 - Fiorano Modenese › Fiorano Modenese | 159.9 | | | |
23.03 | 112 | 100 | | S3Stage 3 - Forlì › Forlì | 139.7 | | | |
22.03 | 87 | 94 | | S2Stage 2 - Riccione › Longiano | 172.5 | | | |
21.03 | 95 | 95 | | S1Stage 1 - Riccione › Riccione | 161.8 | | | |
19.03 | DNF | | | Per Sempre Alfredo (1.1) EF Education - EasyPost | 190.2 | | | more |
12.03 | 6 | | | Cape Town Cycle Tour (NAT) | 109 | | | more |
02.03 › 05.032-5/3 | | | | Tour du Cap (NAT) | | | | more |
03.03 | 5 | | | S2Stage 2 - Wellington › Bainskloof Pass | 10.9 | | | |
02.03 | 5 | | | S1Stage 1 - Wellington › Bainskloof Pass | 102 | | | |
19.02 › 26.0219-26/2 | | | | Tour du Rwanda (2.1) | | | | more |
| 1 | | | Mountains classificationMountains classification | | | | |
| 35 | | | General classificationGeneral classification | | | | |
26.02 | 43 | | | S8Stage 8 - Kigali › Kigali | 75.3 | | | |
25.02 | 5 | 40 | | S7Stage 7 - Nyamata › Mont Kigali | 115.8 | 4 | | |
24.02 | 38 | 42 | | S6Stage 6 - Rubavu › Gicumbi | 157 | | | |
23.02 | 45 | 47 | | S5Stage 5 - Rusizi › Gisenyi (Rubavu) | 195.5 | | | |
22.02 | 76 | 60 | | S4Stage 4 - Musanze › Karongi | 138.5 | | | |
21.02 | 32 | 48 | | S3Stage 3 - Huye › Musanze | 199.5 | | | |
20.02 | 84 | 80 | | S2Stage 2 - Kigali › Gisagara | 132.9 | | | |
19.02 | 24 | 24 | | S1Stage 1 - Kigali Golf › Rwamagana | 115.6 | | | |
12.02 | 9 | | | National Championships South Africa ME - Road Race (NC) | 170 | | 5 | more |
23.01 › 29.0123-29/1 | | | | La Tropicale Amissa Bongo (2.1) | | | | more |
| 8 | | | Youth classificationYouth classification | | | | |
| 20 | | | Points classificationPoints classification | | | | |
| 21 | | | General classificationGeneral classification | | | 3 | |
29.01 | 34 | | | S7Stage 7 - Cap Esterias › Libreville | 130 | | | |
28.01 | 32 | 21 | | S6Stage 6 - Port-Gentil › Port-Gentil | 127 | | | |
27.01 | 7 | 17 | | S5Stage 5 - Kango › Angodjé | 104 | 2 | | |
26.01 | 25 | 16 | | S4Stage 4 - Mouila › Lambaréné | 193.5 | | | |
25.01 | 9 | 17 | | S3Stage 3 - Lébamba › Mouila | 123 | | | |
24.01 | 26 | 16 | | S2Stage 2 - Oyem › Mitzic | 109 | | | |
23.01 | 11 | 11 | | S1Stage 1 - Bitam › Oyem | 122 | | | |