| | | Tour of Hainan (2.HC) |
| 3 | | Klassement |
| 11 | | Punten |
| 4 | | Berg |
| 31-10 | 35 | 3 | Stage 9Changjiang - Danzhou (181.0km) | 181.0km |
| 30-10 | 3 | 3 | Stage 8Longmuwan - Changjiang (197.0km) | 197.0km |
| 29-10 | 38 | 4 | Stage 7Wuzhishan - Sanya (127.0km) | 127.0km |
| 28-10 | 4 | 7 | Stage 6Lingshui - Wuzhishan (193.0km) | 193.0km |
| 27-10 | 16 | 9 | Stage 5Wanning - Lingshui (178.0km) | 178.0km |
| 26-10 | 64 | 47 | Stage 4Qionghai - Wanning (142.0km) | 142.0km |
| 25-10 | 44 | 40 | Stage 3Chengmai - Qionghai (231.0km) | 231.0km |
| 24-10 | 46 | 37 | Stage 2Danzhou - Chengmai (139.0km) | 139.0km |
| 23-10 | 32 | 34 | Stage 1Danzhou - Danzhou (90.0km) | 90.0km |
| 07-10 | DNF | | Paris - Tours Elite (1.HC) | 214.0km |
| 06-10 | 28 | | Tour de Vendée (1.1) | 206.0km |
| 04-10 | 46 | | Paris-Bourges (1.1) | 193.0km |
| 23-09 | 30 | | Tour du Gévaudan Occitanie (1.2) | |
| 26-08 | DNF | | Bretagne Classic - Ouest-France (1.UWT) | 256.0km |
| | | Tour du Poitou Charentes (2.1) |
| 80 | | Klassement |
| 24-08 | 72 | 80 | Stage 5Brioux-sur-Boutonne - Poitiers (156.0km) | 156.0km |
| 23-08 | 101 | 99 | Stage 3Gença - Couhe (97.0km) | 97.0km |
| 23-08 | 95 | 98 | Stage 4Champagné-Saint-Hilaire - Couhe (22.0km) | 22.0km |
| 22-08 | 79 | 88 | Stage 2Segonzac - Melle (189.0km) | 189.0km |
| 21-08 | 69 | 71 | Stage 1Jonzac - Cognac (192.0km) | 192.0km |
| 05-08 | DNF | | La Poly Normande (1.1) | |
| 31-07 | 32 | | Circuito de Getxo Memorial Ricardo Otxoa (1.1) | |
| 25-07 | 55 | | Prueba Villafranca-Ordiziako Klasika (1.1) | |
| | | Int. Österreich-Rundfahrt (2.HC) |
| 57 | | Klassement |
| 14-07 | 51 | 57 | Stage 8Scheibbs - Wels (163.0km) | 163.0km |
| 13-07 | 61 | 58 | Stage 7Waidhofen - Sonntagberg (129.0km) | 129.0km |
| 12-07 | 55 | 61 | Stage 6Knittelfeld - Wenigzell (176.0km) | 176.0km |
| 11-07 | 72 | 62 | Stage 5Matrei in Osttirol - Grossglockner (92.0km) | 92.0km |
| 10-07 | 99 | 54 | Stage 4Kitzbühel - Prägraten (143.0km) | 143.0km |
| 09-07 | 46 | 40 | Stage 3Kufstein - Kitzbühel (133.0km) | 133.0km |
| 08-07 | 43 | 44 | Stage 2Feldkirch - Fulpmes (180.0km) | 180.0km |
| 07-07 | 82 | 71 | Stage 1Feldkirch - Feldkirch (152.0km) | 152.0km |
| 01-07 | DNF | | National Road Championships - France (CN) | 253.0km |
| 24-06 | 37 | | Paris-Chauny (classique) (1.2) | |
| 10-06 | 40 | | Rund um Köln (1.1) | 207.0km |
| | | Skoda-Tour de Luxembourg (2.HC) |
| 20 | | Klassement |
| 20 | | Punten |
| 03-06 | 22 | 20 | Stage 4Mersch - Luxembourg (176.0km) | 176.0km |
| 02-06 | 6 | 19 | Stage 3Eschweiler - Differdange (163.0km) | 163.0km |
| 01-06 | 22 | 39 | Stage 2Rosport - Schifflange (170.0km) | 170.0km |
| 31-05 | 89 | 78 | Stage 1Luxembourg - Hesperange (186.0km) | 186.0km |
| 30-05 | 83 | 83 | PrologueLuxembourg - Luxembourg (2.0km) | 2.0km |
| | | Tour des Fjords (2.HC) |
| 24-05 | 82 | | Stage 3Farsund - Egersund (183.0km) | 183.0km |
| 23-05 | 78 | 72 | Stage 2Risør - Kristiansand (188.0km) | 188.0km |
| 22-05 | 68 | 69 | Stage 1Lindesnes - Grimstad (191.0km) | 191.0km |
| | | Tour of Norway (2.HC) |
| 20-05 | DNF | | Stage 5Moelv - Lillehammer (154.0km) | 154.0km |
| 19-05 | 27 | 61 | Stage 4Kongsvinger - Brumunddal (218.0km) | 218.0km |
| 18-05 | 57 | 68 | Stage 3Moss - Sarpsborg (175.0km) | 175.0km |
| 17-05 | 78 | 76 | Stage 2Hønefoss - Asker (169.0km) | 169.0km |
| 16-05 | 85 | 85 | Stage 1Svelvik - Horten (186.0km) | 186.0km |
| 22-04 | DNS | | Giro dell'Appennino (1.1) | 194.0km |
| 18-04 | DNF | | La Flèche Wallonne (1.UWT) | 198.0km |
| 14-04 | 34 | | Tour du Finistère (1.1) | 190.0km |
| 30-03 | 28 | | Route Adélie de Vitré (1.1) | |
| 24-03 | 13 | | Classic Loire Atlantique (1.1) | |
| | | Paris-Nice (2.UWT) |
| 10-03 | DNF | | Stage 7Nice - Valdeblore La Colmiane (175.0km) | 175.0km |
| 09-03 | 103 | 54 | Stage 6Sisteron - Vence (198.0km) | 198.0km |
| 08-03 | 74 | 45 | Stage 5Salon-de-Provence - Sisteron (165.0km) | 165.0km |
| 07-03 | 109 | 54 | Stage 4La Fouillouse - Saint-Étienne (18.0km) | 18.0km |
| 06-03 | 59 | 42 | Stage 3Bourges - Châtel-Guyon (210.0km) | 210.0km |
| 05-03 | 71 | 49 | Stage 2Orsonville - Vierzon (187.0km) | 187.0km |
| 04-03 | 51 | 51 | Stage 1Chatou - Meudon (135.0km) | 135.0km |
| 25-02 | 48 | | Royal Bernard Drome Classic (1.1) | |
| 24-02 | 93 | | Classic de l'Ardèche Rhône Crussol (1.1) | |
| | | 50ème Tour Cycliste International du Haut Var Matin (2.1) |
| 23 | | Klassement |
| 24 | | Punten |
| 18-02 | 14 | 23 | Stage 2Vidauban - Flayosc (188.0km) | 188.0km |
| 17-02 | 38 | 38 | Stage 1Le Cannet des Maures - Fayence (169.0km) | 169.0km |
| 11-02 | DNF | | Trofeo Laigueglia (1.HC) | 203.0km |
| | | Etoile de Bessèges (2.1) |
| 48 | | Klassement |
| 04-02 | 91 | 48 | Stage 5Alès - Alès (10.0km) | 10.0km |
| 03-02 | 22 | 16 | Stage 4Chusclan - Laudun-l'Ardoise (153.0km) | 153.0km |
| 02-02 | 32 | 25 | Stage 3Bessèges - Bessèges (152.0km) | 152.0km |
| 01-02 | 29 | 30 | Stage 2Nîmes - Générac (151.0km) | 151.0km |
| 31-01 | 33 | 36 | Stage 1Bellegarde - Beaucaire (162.0km) | 162.0km |
| 28-01 | 24 | | Grand Prix Cycliste la Marseillaise (1.1) | 145.0km |