| 12-10 | 67 | | Paris - Tours Elite (1.Pro) | 211.0km |
| 11-10 | DNF | | Tour de Vendée (1.1) | 202.0km |
| 05-10 | 16 | | Brumath Bike Festival by Lollier Ingénierie (C1) | |
| 28-09 | 94 | | Paris-Chauny (1.1) | 188.0km |
| | | Škoda Tour de Luxembourg (2.Pro) |
| 54 | | Klassement |
| 21-09 | 42 | 54 | Stage 5Mersch - Luxembourg (176.0km) | 176.0km |
| 20-09 | 87 | 69 | Stage 4Niederanven - Niederanven (26.0km) | 26.0km |
| 19-09 | 67 | 68 | Stage 3Mertert - Vianden (170.0km) | 170.0km |
| 18-09 | 47 | 82 | Stage 2Remich - Mamer (168.0km) | 168.0km |
| 17-09 | 84 | 85 | Stage 1Luxembourg - Luxembourg (152.0km) | 152.0km |
| 06-09 | DNF | | Maryland Cycling Classic (1.Pro) | 172.0km |
| | | Lidl Deutschland Tour (2.Pro) |
| 17 | | Klassement |
| 24-08 | 28 | 17 | Stage 4Halle - Magdeburg (163.0km) | 163.0km |
| 23-08 | 26 | 18 | Stage 3Arnsberg - Kassel (175.0km) | 175.0km |
| 22-08 | 44 | 23 | Stage 2Herford - Arnsberg (190.0km) | 190.0km |
| 21-08 | 53 | 27 | Stage 1Essen - Herford (202.0km) | 202.0km |
| 20-08 | 26 | 26 | PrologueEssen - Essen (3.0km) | 3.0km |
| | | Tour de l'Ain (2.1) |
| 33 | | Klassement |
| 19 | | Punten |
| 08-08 | 40 | 33 | Stage 3Plateau d'Hauteville - Belley (130.0km) | 130.0km |
| 07-08 | 38 | 36 | Stage 2Saint-Vulbas - Lélex Monts-Jura (153.0km) | 153.0km |
| 06-08 | 38 | 38 | Stage 1Feillens - Lagnieu (163.0km) | 163.0km |
| | | Ethias-Tour de Wallonie (2.Pro) |
| 22 | | Klassement |
| 30-07 | 28 | 22 | Stage 5Bertrix - Bertrix (183.0km) | 183.0km |
| 29-07 | 26 | 29 | Stage 4Welkenraedt - Seraing (163.0km) | 163.0km |
| 28-07 | 81 | 46 | Stage 3Estinnes - Antoing (165.0km) | 165.0km |
| 27-07 | 58 | 47 | Stage 2Huy - Sambreville (153.0km) | 153.0km |
| 26-07 | 44 | 43 | Stage 1Nassogne - Nassogne (182.0km) | 182.0km |
| 29-06 | DNF | | National Road Championships - France (CN) | 231.0km |
| 22-06 | 132 | | Copenhagen Sprint (1.UWT) | 235.0km |
| | | Critérium du Dauphiné (2.UWT) |
| 52 | | Klassement |
| 15-06 | 57 | 52 | Stage 8Val d'Arc - Plateau du Mont-Cenis (133.0km) | 133.0km |
| 14-06 | 60 | 55 | Stage 7Grand-Algueblanche - Valmeinier (131.0km) | 131.0km |
| 13-06 | 63 | 49 | Stage 6Valserhône - Combloux (126.0km) | 126.0km |
| 12-06 | 43 | 51 | Stage 5Saint-Priest - Mâcon (183.0km) | 183.0km |
| 11-06 | 72 | 58 | Stage 4Charmes-sur-Rhône - Saint-Peray (17.0km) | 17.0km |
| 10-06 | 68 | 65 | Stage 3Brioude - Charantonnay (207.0km) | 207.0km |
| 09-06 | 81 | 87 | Stage 2Prémilhat - Issoire (204.0km) | 204.0km |
| 08-06 | 95 | 95 | Stage 1Domerat - Montlucon (195.0km) | 195.0km |
| 26-05 | 20 | | Mercan'Tour Classic Alpes-Maritimes (1.1) | 152.0km |
| 27-04 | 107 | | Liège-Bastogne-Liège (1.UWT) | 252.0km |
| 20-04 | 43 | | Tour du Doubs (1.1) | 196.0km |
| 19-04 | 46 | | Tour du Jura Cycliste (1.1) | 176.0km |
| 18-04 | 64 | | Classic Grand Besançon Doubs (1.1) | 168.0km |
| | | Itzulia Basque Country (2.UWT) |
| 44 | | Klassement |
| 12-04 | 35 | 44 | Stage 6Eibar - Eibar (153.0km) | 153.0km |
| 11-04 | 67 | 55 | Stage 5Urduña - Gernika (175.0km) | 175.0km |
| 10-04 | 43 | 56 | Stage 4Beasain - Markina-Xemein (169.0km) | 169.0km |
| 09-04 | 73 | 66 | Stage 3Zarautz - Beasain (156.0km) | 156.0km |
| 08-04 | 28 | 58 | Stage 2Pamplona - Lodosa (199.0km) | 199.0km |
| 07-04 | 58 | 58 | Stage 1Vitoria-Gasteiz - Vitoria-Gasteiz (16.0km) | 16.0km |
| 05-04 | 75 | | Gran Premio Miguel Indurain (1.Pro) | 198.0km |
| | | Settimana Internazionale Coppi e Bartali (2.1) |
| 19 | | Klassement |
| 29-03 | 37 | 19 | Stage 5Brisighella - Forlì (132.0km) | 132.0km |
| 28-03 | 23 | 18 | Stage 4Brisighella - Brisighella (150.0km) | 150.0km |
| 27-03 | 22 | 19 | Stage 3Riccione - Cesena (142.0km) | 142.0km |
| 26-03 | 63 | 62 | Stage 2Riccione - Sogliano al Rubicone (163.0km) | 163.0km |
| 25-03 | 56 | 56 | Stage 1Ferrara - Bondeno (174.0km) | 174.0km |
| 19-03 | 66 | | Milano - Torino (1.Pro) | 174.0km |
| | | Tour du Rwanda (2.1) |
| 1 | | Klassement |
| 12 | | Berg |
| 02-03 | NR | 1 | Stage 7Kigali - Kigali (73.0km) | 73.0km |
| 01-03 | 4 | 1 | Stage 6Nyanza - Kigali (114.0km) | 114.0km |
| 28-02 | 3 | 2 | Stage 5Rusizi - Huye (143.0km) | 143.0km |
| 27-02 | 5 | 2 | Stage 4Rubavu - Karongi (97.0km) | 97.0km |
| 26-02 | 4 | 1 | Stage 3Musanze - Rubavu (121.0km) | 121.0km |
| 25-02 | 21 | 1 | Stage 2Kigali - Musanze (113.0km) | 113.0km |
| 24-02 | 31 | 1 | Stage 1Rukomo - Kayonza (158.0km) | 158.0km |
| 23-02 | 2 | 2 | PrologueKigali - Kigali (3.0km) | 3.0km |
| 16-02 | 57 | | Clasica de Almeria (1.Pro) | 189.0km |
| 15-02 | 37 | | Vuelta a la Región de Murcia “Costa Cálida” (1.1) | 199.0km |
| | | Etoile de Bessèges - Tour du Gard (2.1) |
| 10 | | Klassement |
| 19 | | Punten |
| 09-02 | 12 | 10 | Stage 5Alès - Alès (10.0km) | 10.0km |
| 08-02 | 12 | 11 | Stage 4Vauvert - Le Mont Bouquet (119.0km) | 119.0km |
| 07-02 | 35 | 25 | Stage 3Bessèges - Bessèges (136.0km) | 136.0km |
| 06-02 | 78 | 49 | Stage 2Domessargues - Marguerittes (165.0km) | 165.0km |
| 05-02 | 60 | 60 | Stage 1Bellegarde - Bellegarde (159.0km) | 159.0km |
| 02-02 | 15 | | UCI Cyclo-cross World Championships Liévin (CM) | |
| 26-01 | 12 | | UCI Cyclo-cross World Cup - Hoogerheide (CDM) | |
| 12-01 | 3 | | French National Championships CX (CN) | |