Partial coverage: some seasons of this career are not stored yet (2026/27).
Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Leverkusen | 2021/22 – 2025/26 | 142 | 23 | 19 |
| Morocco | 2023/24 – 2025/26 | 16 | 1 | 1 |
| France U21 | 2023/24 – 2025/26 | 8 | 2 | 1 |
| Bournemouth | 2025/26 | 33 | 3 | 1 |
| Toulouse | 2019/20 – 2021/22 | 41 | 8 | 7 |
| Toulouse II | 2017/18 – 2020/21 | 30 | 5 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 26 Aug 2021 | Toulouse | Bayer Leverkusen | — |
| 21 Aug 2025 | Bayer Leverkusen | Bournemouth | Transfer |
| 19 Aug 2025 | Bayer Leverkusen | Bournemouth | Transfer |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025/26 | Africa Cup of Nations Qualification | Morocco | 3 | 1 | 89 | 0 | 0 | 0 | 0 | 6.97 |
| 2025/26 | League Cup | Bournemouth | 1 | 1 | 96 | 0 | 0 | 1 | 0 | 6.20 |
| 2025/26 | FA Cup | Bournemouth | 1 | 1 | 71 | 0 | 0 | 0 | 0 | 7.30 |
| 2025/26 | DFB Pokal | Leverkusen | 1 | 1 | 45 | 0 | 1 | 1 | 0 | 7.00 |
| 2025/26 | Premier League | Bournemouth | 31 | 10 | 1106 | 3 | 1 | 2 | 0 | 6.81 |
| 2024/25 | Bundesliga | Leverkusen | 20 | 6 | 756 | 2 | 0 | 3 | 0 | 6.87 |
| 2024/25 | DFB Pokal | Leverkusen | 2 | 2 | 145 | 0 | 1 | 0 | 0 | 7.45 |
| 2024/25 | UEFA Champions League | Leverkusen | 5 | 2 | 210 | 0 | 0 | 0 | 0 | 6.62 |
| 2024/25 | Friendlies | Morocco | 1 | 0 | 26 | 0 | — | 0 | 0 | — |
| 2023/24 | Bundesliga | Leverkusen | 23 | 8 | 892 | 4 | 5 | 5 | 0 | 7.03 |
| 2023/24 | DFB Pokal | Leverkusen | 6 | 4 | 390 | 5 | 3 | 0 | 0 | 8.05 |
| 2023/24 | UEFA Europa League | Leverkusen | 13 | 11 | 980 | 1 | 2 | 2 | 0 | 7.23 |
| 2023/24 | Africa Cup of Nations | Morocco | 4 | 2 | 141 | — | 1 | 1 | 0 | 6.58 |
| 2023/24 | UEFA U21 Championship | France U21 | 3 | 1 | 89 | 0 | 1 | 2 | 0 | 7.03 |
| 2023/24 | UEFA U21 Championship - Qualification | France U21 | 5 | 5 | 365 | 2 | — | 0 | 0 | — |
| 2023/24 | Africa Cup of Nations Qualification | Morocco | 1 | 0 | 25 | 1 | — | 0 | 0 | 7.20 |
| 2023/24 | Friendlies | Morocco | 2 | 2 | 144 | 0 | — | 0 | 0 | — |
| 2023/24 | World Cup - Qualification Africa | Morocco | 5 | 1 | 19 | 0 | 0 | 0 | 0 | 6.60 |
| 2022/23 | Bundesliga | Leverkusen | 26 | 16 | 1442 | 5 | 3 | 2 | 2 | 6.74 |
| 2022/23 | UEFA Champions League | Leverkusen | 4 | 1 | 118 | 0 | — | 0 | 0 | 6.50 |
| 2022/23 | UEFA Europa League | Leverkusen | 8 | 2 | 278 | 2 | 1 | 1 | 0 | 7.01 |
| 2021/22 | Bundesliga | Leverkusen | 25 | 13 | 1256 | 3 | 2 | 3 | 0 | 6.79 |
| 2021/22 | Ligue 2 | Toulouse | 1 | 1 | 90 | 0 | — | 0 | 1 | 6.70 |
| 2021/22 | DFB Pokal | Leverkusen | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 7.30 |
| 2021/22 | UEFA Europa League | Leverkusen | 8 | 6 | 498 | 1 | — | 1 | 0 | 6.50 |
| 2020/21 | Ligue 2 | Toulouse | 34 | 30 | 2600 | 8 | 7 | 6 | 1 | 7.10 |
| 2019/20 | Ligue 1 | Toulouse | 4 | 0 | 42 | 0 | — | 1 | 0 | 6.57 |
| 2019/20 | National 3 - Group M | Toulouse II | 9 | 8 | 747 | 1 | — | 1 | 0 | — |
| 2019/20 | Coupe de la Ligue | Toulouse | 1 | 0 | 13 | 0 | — | 0 | 0 | 6.30 |
| 2019/20 | Coupe de France | Toulouse | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | National 3 | Toulouse II | 18 | 18 | 1392 | 4 | — | 2 | 0 | — |
| 2017/18 | National 3 | Toulouse II | 3 | 1 | 34 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
No trophies recorded.
