Difficulté des matchs FPL en Python : guide API
Lisez les notes FDR de l’API FPL et classez les prochains matchs en Python : champs utiles, script prêt à lancer et limites à connaître.

Exploiter la difficulté des matchs FPL avec l'API et Python
Préparer une équipe en Fantasy Premier League, ce n'est pas seulement chercher les clubs qui jouent bien. Il y a aussi le calendrier : un joueur peut sembler intéressant, mais enchaîner des adversaires coriaces. Pour ça, FPL fournit un Fixture Difficulty Rating (FDR), une note associée à chaque rencontre. L'API gratuite de la FPL permet de récupérer ces données et de les mettre en forme dans un tableau, sans clé d'accès.
Le vrai travail n'est pas « d'appeler une API ». C'est de savoir à quoi correspond chaque valeur, de gérer les semaines sans match, et de ne pas confondre un indicateur de difficulté avec une prédiction de points. Dans cet article, je vous montre où trouver les champs FDR, ce qu'ils semblent refléter, puis comment classer les cinq prochaines journées en Python. Le code gère les doubles journées et les matchs dont la journée n'est pas encore attribuée. Les exemples correspondent à une lecture faite le 14 octobre 2026 : comme l'API se met à jour, vos résultats peuvent varier.
Où trouver la difficulté des matchs dans l'API FPL
L'API publique de Fantasy Premier League expose les rencontres et leurs notes de difficulté dans fixtures/. Pour les matchs à venir, utilisez fixtures/?future=1. Vous pouvez aussi filtrer une journée précise avec fixtures/?event={gw}. L'API ne demande pas de clé, mais elle ne renvoie pas d'en-tête CORS : si vous essayez depuis un navigateur, ça peut échouer. En pratique, un script Python exécuté côté serveur (ou sur votre machine) est plus simple.
Les champs à connaître
Chaque rencontre contient des identifiants d'équipe, une journée éventuelle, et deux notes :
team_h: identifiant de l'équipe à domicile ;team_a: identifiant de l'équipe à l'extérieur ;team_h_difficulty: difficulté, vue du côté de l'équipe à domicile ;team_a_difficulty: difficulté, vue du côté de l'équipe à l'extérieur ;event: numéro de la journée (peut valoirnullsi le match n'est pas encore calé).
Les identifiants numériques ne sont pas faits pour être lus. bootstrap-static/ contient la liste des équipes : son champ teams permet de mapper un identifiant vers un nom court (par exemple ARS ou CHE).
Un exemple de ligne de rencontre :
{
"id": 64,
"event": 7,
"kickoff_time": "2026-10-17T11:30:00Z",
"team_h": 9,
"team_a": 6,
"team_h_difficulty": 4,
"team_a_difficulty": 3,
"finished": false,
"started": false
}
Ici, l'équipe à domicile a une note de difficulté de 4 et l'équipe à l'extérieur une note de 3. Les deux valeurs ne sont pas « deux scores de la même rencontre », mais deux lectures depuis le point de vue de chaque équipe.
Une autre vue par joueur
Vous pouvez aussi utiliser element-summary/{player_id}/. Dans fixtures, vous trouverez une valeur difficulty et un booléen is_home. C'est pratique pour vérifier le calendrier d'un joueur : comparez les rencontres renvoyées ici avec celles que vous construisez depuis fixtures/ pour le club.
Dans la lecture du 14 octobre 2026, par exemple, un joueur de Chelsea avait, pour les journées 7 à 11, les mêmes adversaires et notes que la ligne du club : Everton à l'extérieur (3), Tottenham à domicile (2), Manchester United à domicile (4), Sunderland à l'extérieur (3) et Leeds à domicile (3). Cette vérification aide à repérer une confusion facile entre domicile et extérieur dans votre propre traitement.
Que mesure réellement la note FDR
FPL ne publie pas la formule de calcul du FDR. Donc on doit distinguer ce que l'API permet de vérifier de ce qu'on pourrait supposer. Sur l'instantané du 14 octobre 2026, les notes semblaient correspondre aux champs strength_overall_home et strength_overall_away de l'équipe adverse, avec une correspondance stable sur l'ensemble des 380 rencontres examinées.
Une note liée à l'adversaire et au lieu
Les « forces » se trouvent dans bootstrap-static/, sous teams. Leurs noms peuvent prêter à confusion : ils décrivent la force globale de l'équipe selon le contexte domicile/extérieur. Ensuite, la difficulté affichée pour un match dépend du point de vue de la rencontre.
Dans l'échantillon étudié, on retrouvait exactement :
team_h_difficulty=strength_overall_homede l'adversaire visiteur (380 fois) ;team_a_difficulty=strength_overall_awayde l'équipe qui reçoit (380 fois).
Ça donne une correspondance très propre pour ce relevé, mais ce n'est pas une formule « officialisée » par FPL.
Concrètement : une note FDR ne dit pas « à quel point l'équipe est en forme actuellement ». C'est plutôt une lecture de l'adversaire, avec une nuance domicile/extérieur. Par exemple, dans l'échantillon de 2026, Arsenal avait une force globale de 4 à domicile et de 5 à l'extérieur ; les notes attribuées aux adversaires variaient en conséquence, selon que le match se jouait au Emirates ou à l'extérieur.
Une échelle à interpréter avec prudence
La documentation de l'API ne détaille pas le calcul, et rien ne garantit que la distribution reste identique chaque saison. Sur le 14 octobre 2026, les valeurs allaient de 2 à 5 : aucune rencontre n'avait une note 1. Le plus raisonnable est donc de traiter ça comme une échelle FDR « usuelle » de 1 à 5, tout en vérifiant les valeurs réellement présentes dans la réponse au moment où vous interrogez l'API.
FPL peut aussi ajuster ses estimations. Donc, si vous faites une analyse, récupérez fixtures/ juste avant, au lieu de réutiliser des données vieilles de plusieurs semaines. Et attention aussi : les champs strength, strength_attack_* et strength_defence_* ne sont pas forcément exploitables automatiquement. Dans l'échantillon de 2026, strength était nul et les sous-champs d'attaque et de défense étaient à zéro. Le fait qu'un champ existe dans une réponse ne veut pas dire qu'il est renseigné ou pertinent dans votre cas.
Quelles limites faut-il intégrer à l'analyse
Un classement FDR sert à résumer rapidement un calendrier, pas à remplacer une projection de performance. Les soucis arrivent surtout quand on agrège des journées incomplètes, ou quand on utilise le même nombre pour répondre à des questions différentes.
Journées sans match et doubles journées
Parfois, une équipe ne joue pas sur une journée (report, etc.). Un total brut de difficulté peut alors donner une impression trompeuse : moins de matchs rime souvent avec une somme plus faible, sans que le calendrier soit réellement « plus facile ». C'est pour ça que le script classe sur la moyenne et affiche le nombre de rencontres prises en compte.
À l'inverse, une double journée peut faire jouer une équipe deux fois dans la période de cinq journées. Dans ce cas, votre fenêtre contient plus de cinq matchs pour ce club. Ce n'est pas un problème à masquer : pour un manager FPL, deux matchs peuvent aussi vouloir dire deux occasions de marquer des points. Simplement, il faut comparer en tenant compte du nombre de rencontres, pas uniquement de la moyenne.
Enfin, les matchs futurs dont event vaut null ne peuvent pas être rangés dans une fenêtre par numéro de journée. Le script les met de côté pour le classement et les compte à part. Si vous voulez les analyser, conservez leur date de coup d'envoi quand elle existe, et traitez-les séparément au lieu de leur attribuer une journée « au hasard ».
Une note unique ne répond pas à tout
Le FDR condense la difficulté de l'adversaire en un seul nombre. Or un défenseur s'intéresse surtout au risque de buts encaissés, tandis qu'un attaquant cherche des occasions et une probabilité de marquer. La note ne sépare pas explicitement les aspects offensifs et défensifs de l'adversaire. Deux matchs notés pareil peuvent donc produire des profils très différents.
Si vous voulez aller plus loin, combinez le calendrier avec d'autres données : tirs, buts attendus, statistiques récentes côté joueurs, etc. Mais attention au piège classique : mélanger des signaux calculés avec des périmètres différents. En pratique, commencez par le FDR si vous cherchez un filtre rapide ; ajoutez ensuite des indicateurs plus spécialisés uniquement si ça change votre décision.
Et si le script tourne « en automatique », prévoyez aussi : un délai d'attente, une vérification du statut HTTP, et une gestion d'erreur. L'API est gratuite et accessible sans clé dans l'exemple, mais ça ne garantit ni une disponibilité constante ni une stabilité du schéma. Pour un usage personnel, une exécution manuelle suffit souvent. Pour un service récurrent, journalisez les réponses inattendues et évitez de supposer que chaque champ sera toujours présent.
Conclusion
L'API FPL fournit les notes FDR dans fixtures/, et bootstrap-static/ sert à traduire les identifiants d'équipe en noms lisibles. Avec quelques lignes de Python, vous pouvez comparer les cinq prochaines journées, afficher les adversaires, et tenir compte des rencontres manquantes ou des doubles journées.
Gardez juste en tête une règle simple : le FDR aide à structurer une première lecture du calendrier, mais il ne doit pas piloter à lui seul un transfert ou un choix de capitaine. Actualisez les données, gardez le nombre de matchs visible, et ajoutez d'autres indicateurs seulement si ça sert vraiment votre décision. C'est cette discipline qui fait que le script reste utile au-delà d'un tableau de plus.
Comment classer les cinq prochaines journées en Python
Le script ci-dessous récupère la liste des équipes, puis les matchs à venir. Il choisit les cinq prochaines journées à partir de l'événement marqué comme « prochain », et construit une ligne par équipe avec ses adversaires, le lieu du match, et la difficulté.
Installez d'abord la dépendance si besoin :
pip install requests. Le code n'utilise ni clé API ni service tiers.Les abréviations
DetEcorrespondent à domicile et extérieur. Le script calcule une moyenne par équipe tout en conservant le nombre de matchs inclus. Ce détail évite de comparer « un calendrier plus court » avec « un calendrier plus long » sans le signaler.Lire et vérifier le résultat
Dans la sortie relevée le 14 octobre 2026, avant la journée 7, Coventry, Manchester City et Tottenham avaient chacun une moyenne de 2,6 sur cinq matchs. Par exemple,
TOT(E)3signifie que Tottenham est l'adversaire à l'extérieur, et que la note affichée (dans ce contexte) vaut 3.Attention : ce sont des chiffres figés à un instant. Pour retrouver le même rendu, il faut interroger l'API au même moment et avec les mêmes rencontres programmées. Les matchs reportés ou les changements de journée peuvent modifier la sélection. Le script suppose aussi que les événements contiennent bien un marqueur
is_next; si aucune journée n'a ce marqueur,next_gwdéclenche une erreur. Dans un outil utilisé régulièrement, mieux vaut ajouter une gestion d'erreur au lieu de laisser le script planter sans explication.