Clubs
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 5 Jul 2022 | Gazişehir Gaziantep | OH Leuven | Free |
| 24 Jul 2021 | FC Schalke 04 | Gazişehir Gaziantep | Loan |
| 1 Jul 2020 | Dijon | FC Schalke 04 | — |
| 21 Aug 2019 | FC Schalke 04 | Dijon | Loan |
| 17 Aug 2018 | Lille | FC Schalke 04 | — |
| 16 Jan 2025 | OH Leuven | Aris Thessalonikis | Free Transfer |
| 30 Jun 2026 | Aris Thessalonikis | Volos NFC | Free agent |
| 1 Jul 2026 | Aris Thessalonikis | Volos NFC | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | Super League 1 | Volos | 5 | 5 | 397 | 0 | 0 | 3 | 0 | 6.01 |
| 2025/26 | Cup | Aris | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2025/26 | UEFA Europa Conference League | Aris | 2 | — | — | 0 | 0 | 2 | 0 | — |
| 2025/26 | Super League 1 | Aris | 11 | 9 | 734 | 0 | 1 | 6 | 0 | 6.58 |
| 2024/25 | Super League 1 | Aris | 7 | 7 | 600 | 1 | 2 | 3 | 0 | 7.20 |
| 2024/25 | Jupiler Pro League | OH Leuven | 12 | 11 | 587 | — | 1 | 1 | 0 | 6.72 |
| 2024/25 | Cup | OH Leuven | 2 | — | — | 0 | 0 | 1 | 0 | — |
| 2023/24 | Jupiler Pro League | OH Leuven | 26 | — | — | 3 | 1 | 10 | 1 | — |
| 2023/24 | Cup | OH Leuven | 1 | — | — | 0 | 0 | 1 | 0 | — |
| 2022/23 | Jupiler Pro League | OH Leuven | 28 | 26 | 2073 | — | 4 | 8 | 1 | 6.66 |
| 2022/23 | Cup | OH Leuven | 2 | — | — | 0 | 0 | 0 | 1 | — |
| 2021/22 | Süper Lig | Gaziantep FK | 22 | 16 | 1045 | 1 | 2 | 7 | 1 | 6.58 |
| 2021/22 | Türkiye Kupası | Gaziantep FK | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2021 | Africa Cup of Nations - Qualification | Morocco | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2020/21 | Bundesliga | Schalke | 3 | 1 | 98 | — | — | 1 | 0 | 6.57 |
| 2020/21 | DFB Pokal | Schalke | 2 | 2 | 77 | — | — | 0 | 0 | 6.30 |
| 2020 | Friendlies | Morocco | 2 | — | — | 0 | 0 | 1 | 0 | — |
| 2019/20 | National 3 - Group M | Dijon II | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2019/20 | Ligue 1 | Dijon | 18 | 17 | 1440 | 1 | 1 | 7 | 1 | 6.60 |
| 2019/20 | Coupe de France | Dijon | 1 | 1 | 90 | — | — | 0 | 0 | 5.70 |
| 2019 | Friendlies | Morocco | 2 | — | — | 0 | 0 | 0 | 0 | — |
| 2019 | Africa Cup of Nations - Qualification | Morocco | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2018 | World Cup - Qualification Africa | Morocco | 2 | 1 | 93 | 0 | — | 0 | 0 | — |
| 2018/19 | Bundesliga | Schalke | 9 | 8 | 544 | — | — | 5 | 0 | 6.57 |
| 2018/19 | DFB Pokal | Schalke | 1 | 1 | 90 | — | — | 0 | 0 | 5.90 |
| 2018/19 | UEFA Champions League | Schalke | 6 | 5 | 367 | — | — | 0 | 0 | 6.57 |
| 2018 | Friendlies | Morocco | 3 | — | — | 0 | 0 | 0 | 0 | — |
| 2018 | World Cup | Morocco | 2 | — | — | 0 | 0 | 0 | 0 | — |
| 2017/18 | National 2 - Group A | Lille II | 3 | 3 | 165 | 0 | — | 1 | 1 | — |
| 2017/18 | Ligue 1 | LOSC | 12 | 11 | 851 | — | — | 2 | 1 | 6.49 |
| 2017/18 | Coupe de France | LOSC | 1 | — | — | 0 | 0 | 1 | 0 | — |
| 2017/18 | Coupe de la Ligue | LOSC | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2017 | Friendlies | Morocco | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2017 | Africa Cup of Nations | Morocco | 4 | — | — | 0 | 0 | 0 | 0 | — |
| 2016/17 | National 2 - Group D | Lille II | 16 | 16 | 1312 | 1 | — | 2 | 0 | — |
| 2016/17 | Ligue 1 | LOSC | 1 | 1 | 11 | — | — | 0 | 0 | 6.70 |
| 2016/17 | Coupe de France | LOSC | 1 | 1 | 90 | — | — | 0 | 0 | 6.20 |
| 2016 | Friendly International | Morocco | 1 | — | — | 0 | 0 | 0 | 0 | — |
| 2015/16 | National 3 | Lille II | 7 | 5 | 526 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Knock | 5 Dec 2024 | 21 Dec 2024 | 16 |
| Knee Injury | 21 Feb 2022 | 16 Apr 2022 | 54 |
| Virus | 13 Jan 2022 | 21 Jan 2022 | 8 |
| Ankle/Foot Injury | 17 Mar 2021 | 10 Jun 2021 | 85 |
| Knock | 13 Jan 2020 | 20 Jan 2020 | 7 |
| Foot Injury | 13 Dec 2019 | 20 Dec 2019 | 7 |
| Knock | 11 Apr 2019 | 31 May 2019 | 50 |
| Ankle/Foot Injury | 12 Dec 2018 | 19 Jan 2019 | 38 |
| Ankle/Foot Injury | 1 Nov 2018 | 28 Nov 2018 | 27 |
| Head Injury | 7 Aug 2018 | 15 Aug 2018 | 8 |
| Ankle/Foot Injury | 30 Mar 2018 | 2 Apr 2018 | 3 |
| ACL Knee Injury | 7 Apr 2017 | 29 Sept 2017 | 175 |
| Knock | 13 Mar 2017 | 30 Mar 2017 | 17 |
Trophies
No trophies recorded.
