| | | Gree-Tour of Guangxi (2.UWT) |
| 13 | | Klassement |
| 21-10 | 35 | 13 | Stage 6Guilin - Guilin (169.0km) | 169.0km |
| 20-10 | 24 | 12 | Stage 5Liuzhou - Guilin (212.0km) | 212.0km |
| 19-10 | 11 | 12 | Stage 4Nanning - Mashan Nongla (152.0km) | 152.0km |
| 18-10 | 56 | 50 | Stage 3Nanning - Nanning (125.0km) | 125.0km |
| 17-10 | 56 | 47 | Stage 2Beihai - Qinzhou (145.0km) | 145.0km |
| 16-10 | 30 | 34 | Stage 1Beihai - Beihai (107.0km) | 107.0km |
| 28-09 | 19 | | UCI World Championship Innsbruck U23 (CM) | 186.0km |
| 22-09 | 8 | | Memorial Marco Pantani (1.1) | 199.0km |
| 19-09 | 15 | | Giro della Toscana - Memorial Alfredo Martini (1.1) | |
| 16-09 | 116 | | Coppa Bernocchi (1.1) | 194.0km |
| 15-09 | 40 | | Coppa Agostoni (1.1) | 191.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 8 | | Klassement |
| 32 | | Punten |
| 7 | | Berg |
| 26-08 | 2 | 8 | Stage 10Val-d'Isère - Saint-Colomban-des-Villards (149.0km) | 149.0km |
| 25-08 | 21 | 16 | Stage 9Séez - Val-d'Isère (83.0km) | 83.0km |
| 24-08 | 10 | 6 | Stage 8La Bâthie - Crest-Voland Cohennoz (81.0km) | 81.0km |
| 23-08 | 9 | 6 | Stage 7Moûtiers - Méribel (34.0km) | 34.0km |
| 22-08 | 30 | 32 | Stage 6Le Blanc - Cérilly (181.0km) | 181.0km |
| 21-08 | 124 | 34 | Stage 5Beaugency - Levroux (135.0km) | 135.0km |
| 20-08 | | 52 | Stage 4Orléans - Orléans (20.0km) | 20.0km |
| 19-08 | 19 | 40 | Stage 3Le Lude - Châteaudun (170.0km) | 170.0km |
| 18-08 | 56 | 55 | Stage 2Dréfféac - Chateaubriant (144.0km) | 144.0km |
| 17-08 | 69 | 69 | Stage 1Grand Champ - Elven (138.0km) | 138.0km |
| 12-08 | DNF | | UEC Road Elite European Championships (CC) | 230.0km |
| 08-08 | 28 | | UEC Road Elite European Championships TT (CC) | 45.0km |
| | | VOO-Tour de Wallonie (2.HC) |
| 38 | | Klassement |
| 40 | | Berg |
| 01-08 | 60 | 38 | Stage 5Huy - Waremme (187.0km) | 187.0km |
| 31-07 | 39 | 38 | Stage 4Malmedy - Herstal (161.0km) | 161.0km |
| 30-07 | 50 | 46 | Stage 3Chimay - La Roche-en-Ardenne (169.0km) | 169.0km |
| 29-07 | 67 | 58 | Stage 2Villers-la-Ville - Namur (167.0km) | 167.0km |
| 28-07 | 70 | 73 | Stage 1La Louvière - Les Bons Villers (193.0km) | 193.0km |
| 01-07 | 7 | | National Road Championships - Ireland (CN) | |
| | | Tour de Suisse (2.UWT) |
| 61 | | Klassement |
| 61 | | Punten |
| 17-06 | 69 | 61 | Stage 9Bellinzona - Bellinzona (34.0km) | 34.0km |
| 16-06 | 82 | 59 | Stage 8Bellinzona - Bellinzona (123.0km) | 123.0km |
| 15-06 | 49 | 62 | Stage 7Eschenbach - Arosa (170.0km) | 170.0km |
| 14-06 | 31 | 73 | Stage 6Fiesch - Gommiswald (186.0km) | 186.0km |
| 13-06 | 116 | 97 | Stage 5Gstaad - Leukerbad (155.0km) | 155.0km |
| 12-06 | 104 | 82 | Stage 4Gansingen - Gstaad (189.0km) | 189.0km |
| 11-06 | 67 | 50 | Stage 3Oberstammheim - Gansingen (182.0km) | 182.0km |
| 10-06 | 31 | 53 | Stage 2Frauenfeld - Frauenfeld (155.0km) | 155.0km |
| 09-06 | 14 | 99 | Stage 1Frauenfeld - Frauenfeld (18.0km) | 18.0km |
| | | Baloise Belgium Tour (2.HC) |
| 4 | | Klassement |
| 19 | | Punten |
| 27-05 | 19 | 4 | Stage 5Landen - Tongeren (158.0km) | 158.0km |
| 26-05 | 5 | 5 | Stage 4Wanze - Wanze (151.0km) | 151.0km |
| 25-05 | 51 | 43 | Stage 3Bornem - Bornem (10.0km) | 10.0km |
| 24-05 | 32 | 32 | Stage 2Lochristi - Knokke-Heist (162.0km) | 162.0km |
| 23-05 | 19 | 24 | Stage 1Buggenhout - Buggenhout (179.0km) | 179.0km |
| | | Tour de Yorkshire (2.1) |
| 8 | | Klassement |
| 15 | | Punten |
| 10 | | Berg |
| 06-05 | 4 | 8 | Stage 4Halifax - Leeds (189.0km) | 189.0km |
| 05-05 | 39 | 11 | Stage 3Richmond - Scarborough (184.0km) | 184.0km |
| 04-05 | 12 | 11 | Stage 2Barnsley - Ilkley (149.0km) | 149.0km |
| 03-05 | 34 | 35 | Stage 1Beverley - Doncaster (182.0km) | 182.0km |
| 22-04 | 106 | | Liège-Bastogne-Liège (1.UWT) | 258.0km |
| 15-04 | 81 | | Amstel Gold Race (1.UWT) | 262.0km |
| 11-04 | 56 | | De Brabantse Pijl (1.HC) | 201.0km |
| 31-03 | 5 | | Volta Limburg Classic (1.1) | 197.0km |
| | | Settimana Internazionale Coppi e Bartali (2.1) |
| 21 | | Klassement |
| 25-03 | 25 | 21 | Stage 4Fiorano Modenese - Sassuolo (12.0km) | 12.0km |
| 24-03 | 43 | 22 | Stage 3Crevalcore - Crevalcore (171.0km) | 171.0km |
| 23-03 | 19 | 22 | Stage 2Riccione - Sogliano al Rubicone (130.0km) | 130.0km |
| 22-03 | 1 | 48 | Stage 1bGatteo a Mare - Gatteo (13.0km) | 13.0km |
| 22-03 | 30 | 30 | Stage 1aGatteo - Gatteo (97.0km) | 97.0km |
| 25-02 | DNF | | Royal Bernard Drome Classic (1.1) | |
| 24-02 | 78 | | Classic de l'Ardèche Rhône Crussol (1.1) | |
| 11-02 | DNF | | Trofeo Laigueglia (1.HC) | 203.0km |