Pour récupérer les maillots Fanatics de fanatics.fr dans votre code, utilisez l'API Fanatics de Scavio. POST /api/v1/fanatics/deals avec "type": "sale", "department_id": 8011 et "country": "fr" renvoie les maillots en promotion, jusqu'à 72 par page, chacun avec son prix normal, son prix soldé et son prix avec le code promo en cours, en euros. /search et /browse trouvent les maillots par équipe et par joueur, /product lit un maillot taille par taille. Chaque appel coûte 1 crédit.
Fanatics ne propose pas d'API publique de produits ou de prix ; les étapes ci-dessous renvoient les pages publiques de fanatics.fr en JSON. Toutes les réponses ont été enregistrées le 11 novembre 2026. Dans l'exemple, nous suivons les maillots du PSG et d'un joueur.
Étape 1 : les maillots en promotion
curl -s https://api.scavio.dev/api/v1/fanatics/deals \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "sale", "department_id": 8011, "country": "fr", "page_size": 72}'data enregistré (1 article sur 72, un filtre avec 6 valeurs ; image et urgency retirés), en 11,6 secondes :
{
"type": "sale",
"label": "En promotion",
"total": 955,
"total_capped": false,
"page": 1,
"page_size": 72,
"total_pages": 14,
"sort": "top_sellers",
"count": 72,
"items": [
{
"id": "203406617",
"title": "Maillot Domicile adidas de l'équipe nationale d'Allemagne 2026",
"brand": "adidas",
"url": "https://www.fanatics.fr/fr/soccer-national-teams/germany-national-team/maillot-domicile-adidas-de-léquipe-nationale-dallemagne-2026/o-1434+t-70943878+p-7955144819300+z-9-1628944347",
"price": 40,
"regular_price": 100,
"sale_price": 40,
"clearance_price": 40,
"with_code_price": 32,
"code_percent_off": 68,
"percent_off": 60,
"price_label": "clearance",
"top_seller": null,
"customizable": true,
"ready_to_ship": false,
"ship_by": null,
"est_delivery": null,
"is_sponsored": false
}
],
"facets": [
{
"id": "leagues",
"label": "Ligues",
"values": [
{"label": "International", "filter": "o", "value": "31", "count": 258},
{"label": "NFL", "filter": "o", "value": "25", "count": 147},
{"label": "NBA", "filter": "o", "value": "23", "count": 62},
{"label": "Premier League", "filter": "o", "value": "9846", "count": 140},
{"label": "Rugby", "filter": "o", "value": "9896", "count": 49},
{"label": "Ligue 1", "filter": "o", "value": "9832", "count": 26}
]
}
],
"data_as_of": "2026-11-11T18:47:55.388Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}price est le prix actuel, regular_price le prix normal et percent_off la remise sur ce prix. clearance_price est renseigné quand Fanatics a déstocké l'article, with_code_price et code_percent_off donnent le prix avec le code promo en cours. price_label est l'étiquette de prix du site : none, coupon ou clearance ; coupon signifie seulement que l'article est éligible à un code, et with_code_price (null sinon) dit si le code fait baisser son prix. Sur les 14 pages, 943 des 947 maillots portaient un prix de déstockage ; le prix médian avec code était de 48,64 € pour un prix normal médian de 100 €. Le graphique se trouve dans le comparatif des API Fanatics.
Le filtre des ligues donne les identifiants pour affiner : "league_id": 9832 pour la Ligue 1, qui comptait 26 maillots en promotion. "type": "clearance" ne garde que les prix de déstockage de chaque page, "type": "under_25" les articles à moins de 25 €.
Étape 2 : chercher un maillot par mot-clé
curl -s https://api.scavio.dev/api/v1/fanatics/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "maillot psg", "country": "fr", "page_size": 24}'data enregistré (1 article sur 24, un filtre ; url, image et urgency retirés), en 2,9 secondes :
{
"query": "maillot psg",
"corrected_query": null,
"redirected_to": null,
"broad_match": false,
"applied_filters": [],
"total": 68,
"total_capped": false,
"page": 1,
"page_size": 24,
"total_pages": 3,
"sort": "top_sellers",
"count": 24,
"items": [
{
"id": "203532407",
"title": "Maillot Domicile Stadium PSG Nike 26/27",
"brand": "Nike",
"price": 109.99,
"regular_price": 109.99,
"sale_price": null,
"clearance_price": null,
"with_code_price": null,
"code_percent_off": null,
"percent_off": 0,
"price_label": "none",
"top_seller": null,
"customizable": true,
"ready_to_ship": false,
"ship_by": null,
"est_delivery": null,
"is_sponsored": false
}
],
"facets": [
{
"id": "allDepartmentsBoxes",
"label": "Toutes les catégories",
"values": [
{"label": "Accessoires", "filter": "d", "value": "8001", "count": 4},
{"label": "Chaussures et Chaussettes", "filter": "d", "value": "8006", "count": 4},
{"label": "Maillots", "filter": "d", "value": "8011", "count": 40},
{"label": "Short", "filter": "d", "value": "8017", "count": 24},
{"label": "T-shirts", "filter": "d", "value": "8022", "count": 2}
]
}
],
"data_as_of": "2026-11-11T18:52:03.735Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}Le maillot domicile PSG 26/27 coûtait 109,99 €, sans remise et sans prix avec code. Parmi les 24 premiers résultats, aucun maillot PSG de la saison en cours n'avait de prix avec code. La recherche trie par meilleures ventes par défaut ; sort accepte aussi price_low_to_high, price_high_to_low et newest. Si le mot-clé contient une faute, fanatics.fr la corrige et la réponse l'indique dans corrected_query.
Étape 3 : lire la page d'une équipe avec tous ses filtres
Une URL d'équipe, de ligue ou de rayon de fanatics.fr s'envoie directement à /browse :
curl -s https://api.scavio.dev/api/v1/fanatics/browse \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.fanatics.fr/fr/ligue-1/paris-saint-germain/o-32757057+t-36319226+z-966-3499838818", "country": "fr", "page_size": 24}'data enregistré (articles retirés, deux filtres avec 5 valeurs chacun), en 5,2 secondes :
{
"browse": {
"league": {
"id": "9832",
"name": "Ligue 1"
},
"team": {
"id": "3834",
"name": "Paris Saint-Germain"
},
"player": null,
"department": null,
"brand": null,
"collection": null,
"applied_filters": []
},
"total": 1141,
"total_capped": false,
"page": 1,
"page_size": 24,
"total_pages": 48,
"sort": "top_sellers",
"count": 24,
"facets": [
{
"id": "players",
"label": "Joueur",
"values": [
{"label": "Achraf Hakimi", "filter": "a", "value": "10069", "count": 10},
{"label": "Ousmane Dembélé", "filter": "a", "value": "11352", "count": 9},
{"label": "Vitinha", "filter": "a", "value": "21769", "count": 9},
{"label": "Désiré Doué", "filter": "a", "value": "97803", "count": 9},
{"label": "Khvicha Kvaratskhelia", "filter": "a", "value": "98838", "count": 9}
]
},
{
"id": "colorStyles",
"label": "Type de tenue",
"values": [
{"label": "Champion", "filter": "cs", "value": "32", "count": 52},
{"label": "Classic", "filter": "cs", "value": "96", "count": 2},
{"label": "Domicile", "filter": "cs", "value": "3", "count": 94},
{"label": "Extérieur", "filter": "cs", "value": "14", "count": 13},
{"label": "Fourth", "filter": "cs", "value": "70", "count": 4}
]
}
],
"data_as_of": "2026-11-11T18:52:41.738Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}browse.team.id est l'identifiant de l'équipe (3834 pour le PSG), les valeurs du filtre joueurs portent les identifiants des joueurs. La page PSG comptait 1 141 produits et des filtres pour 19 joueurs, plus les rayons, le genre et l'âge, les collections, les marques (Nike 348, Jordan Brand 92, New Era 30) et les produits personnalisés. Une URL fixe déjà la liste : seuls les filtres de page comme price_band ou filters peuvent s'y ajouter, par exemple {"cs": "3"} pour les tenues domicile.
Étape 4 : tous les maillots d'un joueur
curl -s https://api.scavio.dev/api/v1/fanatics/browse \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"team_id": 3834, "player_id": 11352, "country": "fr"}'data enregistré (1 article sur 9 ; url, image et urgency retirés), en 1,6 seconde :
{
"browse": {
"league": null,
"team": {
"id": "3834",
"name": "Paris Saint-Germain"
},
"player": {
"id": "11352",
"name": "Ousmane Dembélé"
},
"department": null,
"brand": null,
"collection": null,
"applied_filters": []
},
"total": 9,
"total_capped": false,
"page": 1,
"page_size": 72,
"total_pages": 1,
"sort": "top_sellers",
"count": 9,
"items": [
{
"id": "204430410",
"title": "Maillot Domicile Stadium PSG Nike 26/27 avec flocage O.Dembélé 10",
"brand": "Nike",
"price": 131.99,
"regular_price": 131.99,
"sale_price": null,
"clearance_price": null,
"with_code_price": null,
"code_percent_off": null,
"percent_off": 0,
"price_label": "none",
"top_seller": null,
"customizable": false,
"ready_to_ship": false,
"ship_by": null,
"est_delivery": null,
"is_sponsored": false
}
],
"data_as_of": "2026-11-11T18:52:50.654Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}Les maillots floqués d'Ousmane Dembélé étaient tous au prix normal, sans prix avec code : de 106,99 € pour le maillot domicile Stadium enfant à 181,99 € pour le maillot Match Aero-FIT. Seule une figurine, parmi les 9 produits, affichait un prix avec code. Les maillots floqués sont des produits à part entière, avec leur propre identifiant.
Étape 5 : un maillot taille par taille
curl -s https://api.scavio.dev/api/v1/fanatics/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": "203532407", "country": "fr"}'data enregistré (3 tailles sur 7 ; description, détails, images, fil d'Ariane et champ code du coupon retirés), en 19,8 secondes :
{
"id": "203532407",
"title": "Maillot Domicile Stadium PSG Nike 26/27",
"brand": "Nike",
"league": [
"Ligue 1"
],
"team": [
"Paris Saint-Germain"
],
"gender": [
"Men"
],
"categories": [
"Jerseys",
"Replica"
],
"price": 109.99,
"regular_price": 109.99,
"sale_price": null,
"clearance_price": null,
"with_code_price": null,
"code_percent_off": null,
"percent_off": 0,
"price_label": "none",
"on_sale": false,
"coupon": {
"percent_off": 50,
"percent_off_min": 20,
"tiered": true,
"ends_on": null,
"applies_to_product": false
},
"in_stock": true,
"sizes": [
{"item_id": "211882526", "size": "XS", "available": true, "stock_level": "low", "price": 109.99, "with_code_price": null, "ship_by": "2026-11-13T17:00:00.000Z", "est_delivery_from": "2026-11-18T11:00:00.000Z", "est_delivery_to": "2026-11-20T11:00:00.000Z", "promise_ship_days": 1, "customization_handling_days": 2},
{"item_id": "211211769", "size": "XL", "available": true, "stock_level": null, "price": 109.99, "with_code_price": null, "ship_by": "2026-11-18T17:00:00.000Z", "est_delivery_from": "2026-11-23T11:00:00.000Z", "est_delivery_to": "2026-11-25T11:00:00.000Z", "promise_ship_days": 4, "customization_handling_days": 2},
{"item_id": "211882527", "size": "3XL", "available": false, "stock_level": "out", "price": 109.99, "with_code_price": null, "ship_by": null, "est_delivery_from": null, "est_delivery_to": null, "promise_ship_days": null, "customization_handling_days": null}
],
"customizable": true,
"rating": null,
"review_count": 0,
"data_as_of": "2026-11-11T18:52:29.491Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}Six tailles sur sept étaient disponibles ; le XS en stock faible ("stock_level": "low"), le 3XL épuisé. stock_level est un niveau, pas une quantité : low quand Fanatics signale peu de stock, out quand la taille est épuisée, sinon null. Chaque taille a son prix, son prix avec code et ses dates d'expédition et de livraison : le XL partait le 18 novembre, les autres tailles le 13. Le bloc coupon décrit le code en cours : par paliers de 20 à 50 %, sans date de fin, et applies_to_product vaut false pour ce maillot, d'où with_code_price à null. Les champs gender et categories restent en anglais, le titre et la description sont en français. Ce maillot n'avait pas d'avis ; l'endpoint des avis ne fonctionne de toute façon que pour la boutique américaine.
Étape 6 : les promotions d'une équipe, chaque jour
curl -s https://api.scavio.dev/api/v1/fanatics/deals \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "sale", "team_id": 3834, "country": "fr", "page_size": 24}'data enregistré (1 article sur 24 ; url, image, urgency et filtres retirés), en 30,4 secondes :
{
"type": "sale",
"label": "En promotion",
"total": 321,
"total_capped": false,
"page": 1,
"page_size": 24,
"total_pages": 14,
"sort": "top_sellers",
"count": 24,
"items": [
{
"id": "201545414",
"title": "Maillot Extérieur Stadium PSG Nike 25/26 - Enfant",
"brand": "Nike",
"price": 66,
"regular_price": 79.99,
"sale_price": 66,
"clearance_price": 66,
"with_code_price": 52.8,
"code_percent_off": 34,
"percent_off": 17,
"price_label": "clearance",
"top_seller": null,
"customizable": false,
"ready_to_ship": false,
"ship_by": null,
"est_delivery": null,
"is_sponsored": false
}
],
"data_as_of": "2026-11-11T18:53:21.515Z",
"country": "fr",
"language": "fr",
"currency": "EUR",
"site": "fanatics"
}321 articles PSG étaient en promotion, sur 14 pages de 24. Le maillot extérieur Stadium 25/26 enfant coûtait 66 € au lieu de 79,99 €, 52,80 € avec code. L'API renvoie l'état du jour, sans historique. Pour un suivi simple :
- Relevez chaque jour cette liste pour votre équipe (
team_id), votre ligue (league_id) ou la catégorie Maillots, et enregistrez pour chaqueidles champsprice,with_code_price,price_labeletdata_as_of. - Vérifiez
totalsur chaque page et ignorez les doublons d'idd'une page à l'autre. - Comparez avec la veille : un nouvel
idest une nouvelle promotion, un nouveauclearance_priceune nouvelle baisse. - Pour le maillot que vous visez, ajoutez l'étape 5 et regardez
availabledans votre taille.
Tous les endpoints Fanatics pour fanatics.fr
| Endpoint | Ce qu'il renvoie | fanatics.fr | Crédits |
|---|---|---|---|
/api/v1/fanatics/search | Recherche par mot-clé avec filtres et tri | Oui | 1 |
/api/v1/fanatics/product | Un produit avec chaque taille, prix avec code et fenêtre de livraison | Oui | 1 |
/api/v1/fanatics/browse | Pages équipe, joueur, ligue, rayon, marque et collection, avec price_band en euros | Oui | 1 |
/api/v1/fanatics/deals | Promotions, déstockage et moins de 25 € | Oui | 1 |
/api/v1/fanatics/reviews | Avis clients d'un produit | Non, boutique américaine uniquement | 1 |
Les boutiques de ligue américaines (NFL Shop, MLB Shop, NHL Shop, MLS Store), via le paramètre site, ne concernent elles aussi que la boutique américaine. Chaque endpoint coûte 1 crédit, soit 1 $ pour 1 000 appels avec l'offre Growth ; les appels en échec ne sont pas facturés, un produit introuvable l'est.
Pour commencer
- Créez un compte et recevez 50 crédits gratuits, sans carte bancaire : Essayez l'API Fanatics gratuitement.
- Enregistrez votre clé d'API dans
SCAVIO_API_KEY. - Lancez l'étape 1 avec
"country": "fr", ou testez d'abord dans le Playground. - Reprenez les identifiants d'équipe, de joueur et de catégorie dans
facets.
À lire aussi : API Fanatics de Scavio · Les 5 meilleures API Fanatics en 2026 · Récupérer les prix Decathlon avec une API
Frequently asked questions
Comment trouver les identifiants d'équipe, de joueur ou de catégorie ?
Chaque réponse de /deals, /search et /browse contient facets : pour chaque filtre un id comme leagues, players, colorStyles ou allDepartmentsBoxes, et pour chaque valeur label, filter, value et count. Renvoyez ces identifiants dans l'appel suivant, par exemple team_id et player_id pour /browse, department_id pour /deals, ou {filter: value} dans filters. Une URL d'équipe de fanatics.fr fonctionne aussi directement ; la réponse donne alors l'identifiant d'équipe dans browse.team.
Le prix avec code est-il le prix payé au moment de la commande ?
Pas forcément. with_code_price est le prix que fanatics.fr affiche avec le code promo en cours. Le 11 novembre 2026, ce code fonctionnait par paliers (20 à 50 %) et la fiche produit indique avec applies_to_product s'il s'applique à l'article : ce n'était pas le cas du maillot domicile PSG 26/27. C'est Fanatics qui décide si le code s'applique au paiement.
Les données Fanatics sont-elles à jour ?
Chaque réponse porte data_as_of, le moment où Fanatics a généré la page ; une liste peut dater de quelques minutes. L'API ne fournit pas d'historique de prix. Pour voir les baisses de prix, relevez chaque jour la même liste ou le même produit et enregistrez id, price et with_code_price.
Que disent les conditions d'utilisation de Fanatics sur la collecte automatisée ?
Les conditions d'utilisation de fanatics.com, mises à jour le 29 février 2024, citent parmi les exemples d'usage non autorisé « Using any automated system or software to extract data from the Properties for commercial purposes (including 'screen scraping') ». Elles prévoient aussi que les prix et la disponibilité peuvent changer sans préavis. Lisez ces conditions vous-même et demandez un avis juridique si nécessaire ; cet article n'est pas un conseil juridique.
Combien coûte la récupération des maillots de fanatics.fr par API ?
Chez Scavio, 1 crédit par appel, soit 1 $ pour 1 000 appels avec l'offre Growth. La liste des maillots en promotion de fanatics.fr comptait 14 pages de 72 articles le 11 novembre 2026 : la relever entièrement coûte 14 crédits. Les nouveaux comptes reçoivent 50 crédits gratuits sans carte bancaire.