Référence

Documentation de l'API football

Tout ce dont vous avez besoin pour intégrer des données football dans votre application : un démarrage rapide, chaque endpoint avec du code en cURL, Python, JavaScript et PHP, un spéc OpenAPI 3.1 et une collection Postman.

Démarrage rapide

Passez de zéro à des données football en direct en trois étapes. L'offre Free vous donne 2 000 requêtes par jour (14 000 par mois) sans carte bancaire.

  1. Créez un compte sur sportapi.ai (par e-mail ou Google).
  2. Copiez votre clé API depuis la page Clés API. Les clés commencent par sk_live_.
  3. Faites votre première requête. Le programme ci-dessous affiche les matchs du jour avec les scores en direct. Remplacez YOUR_API_KEY et lancez-le.
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
  -H "X-Api-Key: YOUR_API_KEY"

Résultat attendu : une ligne par match, par exemple Premier League: Arsenal 2-1 Leeds United (FT). Ensuite : consultez les événements, compositions et statistiques d'un match, le classement, ou recevez les scores en direct via le WebSocket.

Authentification

Chaque endpoint de données (matchs, équipes, classements, ligues, joueurs) nécessite votre clé API dans l'en-tête X-Api-Key. Créez une clé dans votre tableau de bord.

En-tête HTTP
X-Api-Key: your_api_key
curl
curl -H "X-Api-Key: your_api_key" https://sportapi.ai/api/fixtures/date/2026-10-10

Les endpoints de compte (/api/auth/me, /api/profile) utilisent le jeton de connexion à la place : Authorization: Bearer your_token. Obtenez-en un depuis /api/auth/login ou la connexion Google.

Sans clé, « Essayez » sur les endpoints de données utilise l'accès limité en débit du site, afin que vous puissiez explorer avant de vous inscrire.

URL de base

https://sportapi.ai/api

Tous les endpoints sont relatifs à cette URL de base. Une spécification OpenAPI 3.1 lisible par machine est disponible pour les générateurs de code et des outils comme Postman.

Réponses et limites

Les réponses sont au format JSON avec un indicateur success. Les erreurs incluent un statut HTTP et un message error : 401 clé manquante ou invalide, 404 non trouvé, 429 limite journalière ou mensuelle atteinte.

Limites de requêtes

Chaque offre a une limite de requêtes par jour qui se réinitialise à 00:00 UTC. L'offre Free a aussi une limite mensuelle de 14 000 requêtes par mois civil (UTC), à partir du 1er novembre 2026 ; les offres payantes n'ont pas de plafond mensuel. Chaque réponse vous indique où vous en êtes :

En-têtes de réponse
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9876
X-RateLimit-Reset: 1791763200   (Unix time of the next reset)

# Free plan, from 1 November 2026:
X-RateLimit-Month-Limit: 14000
X-RateLimit-Month-Remaining: 9120
X-RateLimit-Month-Reset: 1793491200   (00:00 UTC on the 1st of next month)

Au-delà de la limite, vous recevez 429 avec un en-tête Retry-After (secondes jusqu'à la réinitialisation). Le corps JSON contient scope : day ou month, pour identifier quelle limite est atteinte.

Mise en cache avec ETag

Les réponses GET réussies incluent un ETag. Renvoyez-le dans If-None-Match et, si les données n'ont pas changé, vous obtenez un 304 Not Modified vide au lieu du corps complet — idéal pour le polling des matchs et des classements.

curl
curl -H "X-Api-Key: your_api_key" -H 'If-None-Match: "d1c0f0ad5808c8d8a0f13108edd63278"' https://sportapi.ai/api/leagues/24

Dates et heures

kickoff_utc et updated_at sont en UTC (ISO 8601). date et datetime sont en heure d'Europe centrale (CET/CEST), le fuseau horaire utilisé pour le calendrier des matchs.

Spécification OpenAPI & collection Postman

Ces deux fichiers décrivent chaque endpoint de données avec des paramètres, des schémas de réponse et de vrais exemples de réponses, et ils sont générés à partir de la même source, donc ils correspondent toujours à cette page.

Générer un client Python à partir de la spécification
pip install openapi-python-client
openapi-python-client generate --url https://sportapi.ai/api/openapi.json

Matchs

Récupérez les données des matchs incluant les scores en direct, les événements et les résultats historiques.

status est l'un de Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended ; pendant qu'un match est en direct, minute contient l'horloge ("HT" à la mi-temps). result est 1 victoire domicile, 0 match nul, -1 victoire extérieur (null jusqu'à la fin), et winner indique la même chose en mots, en tenant compte d'une séance de tirs au but (penalty_home/penalty_away).

GET/api/fixtures/date/{date}

Récupérer tous les matchs pour une date spécifique.

ParamètreTypeDescription
datestringDate au format AAAA-MM-JJ
Essayer+
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "date": "2026-10-10",
  "data": [
    {
      "id": 13596176,
      "home_id": 311,
      "away_id": 352,
      "date": "2026-10-10",
      "datetime": "2026-10-10 13:30:00",
      "kickoff_utc": "2026-10-10T11:30:00Z",
      "updated_at": "2026-10-11T01:43:09Z",
      "home_score": 2,
      "away_score": 1,
      "result": 1,
      "status": "FT",
      "minute": null,
      "stage": "",
      "league_id": 24,
      "league_name": "Premier League",
      "league_geo": "GB-ENG",
      "league_zone": "England",
      "home_team": "Arsenal",
      "home_short": "Arsenal",
      "home_logo": "espn-359.png",
      "home_geo": "",
      "away_team": "Leeds United",
      "away_short": "Leeds",
      "away_logo": "espn-357.png",
      "away_geo": "",
      "penalty_home": null,
      "penalty_away": null,
      "winner": "home"
    }
  ]
}
GET/api/fixtures/{id}

Récupérer les informations détaillées sur un match spécifique, y compris les événements du match.

ParamètreTypeDescription
idintegerID du match
Essayer+
curl "https://sportapi.ai/api/fixtures/13596176" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "fixture": {
    "id": 13596176,
    "home_id": 311,
    "away_id": 352,
    "date": "2026-10-10",
    "datetime": "2026-10-10 13:30:00",
    "kickoff_utc": "2026-10-10T11:30:00Z",
    "updated_at": "2026-10-11T01:43:09Z",
    "home_score": 2,
    "away_score": 1,
    "ht_home": 0,
    "ht_away": 0,
    "result": 1,
    "status": "FT",
    "minute": null,
    "stage": "",
    "league_id": 24,
    "league_name": "Premier League",
    "league_geo": "GB-ENG",
    "league_zone": "England",
    "home_team": "Arsenal",
    "home_short": "Arsenal",
    "home_logo": "espn-359.png",
    "home_geo": "",
    "home_stadium": "Emirates Stadium",
    "home_city": "London",
    "home_coach": "Mikel Arteta",
    "home_founded": 1886,
    "away_team": "Leeds United",
    "away_short": "Leeds",
    "away_logo": "espn-357.png",
    "away_geo": "",
    "away_stadium": "Elland Road",
    "away_city": "Leeds",
    "away_coach": "Daniel Farke",
    "away_founded": 1919,
    "penalty_home": null,
    "penalty_away": null,
    "winner": "home",
    "events": [
      {
        "event_type": "goal",
        "team_side": "away",
        "player_name": "J. Justin",
        "minute": "55'",
        "extra_info": "Goal"
      },
      {
        "event_type": "yellow_card",
        "team_side": "away",
        "player_name": "A. Tanaka",
        "minute": "36'",
        "extra_info": null
      }
    ]
  }
}
GET/api/fixtures/{id}/events

Récupérer uniquement les événements pour un match spécifique (buts, cartons, remplacements).

ParamètreTypeDescription
idintegerID du match
Essayer+
curl "https://sportapi.ai/api/fixtures/13596176/events" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "fixture_id": 13596176,
  "data": [
    {
      "id": 19194470,
      "event_type": "goal",
      "team_side": "away",
      "player_name": "J. Justin",
      "player_urn": "urn:bbc:sportsdata:football:player:s-6icypdqtfk2k81ax0i49j5xpl",
      "minute": "55'",
      "extra_info": "Goal"
    },
    {
      "id": 18933975,
      "event_type": "yellow_card",
      "team_side": "away",
      "player_name": "A. Tanaka",
      "player_urn": "urn:bbc:sportsdata:football:player:s-28ucbvor6b0yxreoieehudfc9",
      "minute": "36'",
      "extra_info": null
    }
  ]
}
GET/api/fixtures/{id}/stats

Récupérer les statistiques du match pour un match : tirs, passes, fautes, tacles, arrêts et cartons jaunes par équipe.

ParamètreTypeDescription
idintegerID du match
Essayer+
curl "https://sportapi.ai/api/fixtures/13596176/stats" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "fixture_id": 13596176,
  "available": true,
  "data": {
    "home": {
      "shots": 13,
      "shots_on_target": 6,
      "shots_off_target": 7,
      "fouls": 12,
      "total_passes": 512,
      "pass_accuracy": 85.3,
      "tackles": 12,
      "tackle_success": 66.7,
      "saves": 4,
      "yellow_cards": 1
    },
    "away": {
      "shots": 11,
      "shots_on_target": 5,
      "shots_off_target": 6,
      "fouls": 20,
      "total_passes": 356,
      "pass_accuracy": 78.9,
      "tackles": 10,
      "tackle_success": 60,
      "saves": 4,
      "yellow_cards": 4
    }
  }
}
GET/api/fixtures/{id}/lineups

Récupérer les compositions de match, y compris les onze titains et les remplaçants des deux équipes.

ParamètreTypeDescription
idintegerID du match
Essayer+
curl "https://sportapi.ai/api/fixtures/13596176/lineups" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "fixture_id": 13596176,
  "available": true,
  "data": {
    "home": {
      "starters": [
        {
          "name": "David Raya",
          "position": "Goalkeeper",
          "shirt": 1,
          "is_captain": false,
          "mins_played": 90
        },
        {
          "name": "B. White",
          "position": "Defender",
          "shirt": 4,
          "is_captain": false,
          "mins_played": 63
        }
      ],
      "subs": [
        {
          "name": "P. Hincapié",
          "position": "Substitute",
          "shirt": 5,
          "is_captain": false,
          "mins_played": 8
        }
      ]
    },
    "away": {
      "starters": [
        {
          "name": "J. Trafford",
          "position": "Goalkeeper",
          "shirt": 1,
          "is_captain": false,
          "mins_played": 90
        },
        {
          "name": "J. Bogle",
          "position": "Midfielder",
          "shirt": 2,
          "is_captain": false,
          "mins_played": 86
        }
      ],
      "subs": [
        {
          "name": "S. Longstaff",
          "position": "Substitute",
          "shirt": 8,
          "is_captain": false,
          "mins_played": 0
        }
      ]
    }
  }
}

Équipes

Accédez aux informations sur les équipes incluant les détails, l'effectif, les matchs et l'historique des trophées.

GET/api/teams/{id}

Récupérer les informations sur l'équipe avec les matchs récents et les ligues.

ParamètreTypeDescription
idintegerID de l'équipe
Essayer+
curl "https://sportapi.ai/api/teams/311" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "team": {
    "id": 311,
    "name": "Arsenal",
    "short_name": "Arsenal",
    "league_id": 24,
    "geo": "GB-ENG",
    "country": "England",
    "city": "London",
    "coach_name": "Mikel Arteta",
    "stadium_name": "Emirates Stadium",
    "founded_year": 1886,
    "logo_file": "espn-359.png"
  },
  "matches": [
    {
      "id": 16096707,
      "home_id": 311,
      "away_id": 10165,
      "date": "2026-11-07",
      "home_score": null,
      "away_score": null,
      "result": null,
      "status": "Scheduled",
      "league_id": 24,
      "league_name": "Premier League",
      "home_team": "Arsenal",
      "away_team": "Hull City"
    },
    {
      "id": 15868670,
      "home_id": 162,
      "away_id": 311,
      "date": "2026-11-04",
      "home_score": null,
      "away_score": null,
      "result": null,
      "status": "Scheduled",
      "league_id": 18,
      "league_name": "UEFA Champions League",
      "home_team": "Slavia Prague",
      "away_team": "Arsenal"
    }
  ],
  "leagues": [
    {
      "id": 24,
      "name": "Premier League"
    },
    {
      "id": 18,
      "name": "UEFA Champions League"
    }
  ]
}
GET/api/teams/{id}/logo

Récupérer l'image du logo de l'équipe. Retourne PNG/SVG ou un bouclier par défaut.

ParamètreTypeDescription
idintegerID de l'équipe
Essayer+
curl "https://sportapi.ai/api/teams/311/logo" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -o logo.png
Exemple de réponse
Content-Type: image/png
Binary image data
GET/api/teams/slug/{slug}

Récupérer une équipe par son slug URL, avec sa ligue, ses derniers résultats, ses matchs à venir et son effectif.

ParamètreTypeDescription
slugstringSlug de l'équipe
Essayer+
curl "https://sportapi.ai/api/teams/slug/arsenal" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "team": {
    "id": 311,
    "name": "Arsenal",
    "short_name": "Arsenal",
    "slug": "arsenal",
    "country": "England",
    "city": "London",
    "geo": "GB-ENG",
    "founded_year": 1886,
    "coach_name": "Mikel Arteta",
    "stadium_name": "Emirates Stadium",
    "logo_file": "espn-359.png",
    "league": {
      "id": 24,
      "name": "Premier League",
      "slug": "premier-league"
    }
  },
  "results": [
    {
      "id": 13596176,
      "date": "2026-10-10",
      "home_score": 2,
      "away_score": 1,
      "status": "FT",
      "result": 1,
      "home_team": "Arsenal",
      "home_slug": "arsenal",
      "away_team": "Leeds United",
      "away_slug": "leeds-united",
      "league_name": "Premier League",
      "league_slug": "premier-league"
    }
  ],
  "upcoming": [
    {
      "id": 13596702,
      "date": "2026-10-13",
      "datetime": "2026-10-13 21:00:00",
      "status": "Scheduled",
      "home_team": "Arsenal",
      "home_slug": "arsenal",
      "away_team": "Lille",
      "away_slug": "lille",
      "league_name": "UEFA Champions League"
    }
  ],
  "squad": [
    {
      "full_name": "David Raya",
      "position": "Goalkeeper",
      "jersey_number": 1,
      "nationality": "ES",
      "slug": "david-raya"
    },
    {
      "full_name": "Kepa Arrizabalaga",
      "position": "Goalkeeper",
      "jersey_number": 13,
      "nationality": "ES",
      "slug": "kepa-arrizabalaga"
    }
  ]
}
GET/api/teams/{id}/squad

Récupérer l'effectif des joueurs de l'équipe organisé par poste.

ParamètreTypeDescription
idintegerID de l'équipe
Essayer+
curl "https://sportapi.ai/api/teams/311/squad" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "squad": [
    {
      "id": 4904,
      "full_name": "David Raya",
      "position": "Goalkeeper",
      "jersey_number": 1,
      "nationality": "ES",
      "date_of_birth": "1995-09-15",
      "height": null,
      "weight": null
    },
    {
      "id": 4903,
      "full_name": "Kepa Arrizabalaga",
      "position": "Goalkeeper",
      "jersey_number": 13,
      "nationality": "ES",
      "date_of_birth": "1994-10-03",
      "height": null,
      "weight": null
    }
  ]
}
GET/api/teams/{id}/trophies

Récupérer l'historique des trophées et championnats de l'équipe.

ParamètreTypeDescription
idintegerID de l'équipe
Essayer+
curl "https://sportapi.ai/api/teams/311/trophies" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "trophies": [
    {
      "year": 1994,
      "position": 1,
      "tournament_id": 26,
      "name": "1994 UEFA Cup Winners' Cup Final",
      "short_name": null,
      "type": "domestic_league",
      "country": null
    },
    {
      "year": 1993,
      "position": 1,
      "tournament_id": 24,
      "name": "1987 Football League Cup Final",
      "short_name": null,
      "type": "domestic_league",
      "country": null
    }
  ]
}

Classements

Obtenez les tableaux des ligues et les données de forme des équipes.

GET/api/standings/leagues

Récupérer la liste de toutes les ligues disponibles avec les données de classement.

Essayer+
curl "https://sportapi.ai/api/standings/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "data": [
    {
      "id": 24,
      "name": "Premier League",
      "slug": "premier-league",
      "zone": "England",
      "geo": "GB-ENG"
    },
    {
      "id": 1,
      "name": "Spanish La Liga",
      "slug": "spanish-la-liga",
      "zone": "Spain",
      "geo": "ES"
    }
  ]
}
GET/api/standings/{leagueId}

Récupérer le tableau actuel de la ligue. La forme liste les 6 derniers matchs, du plus ancien au plus récent. Vous pouvez également passer le slug de la ligue (par exemple /api/standings/premier-league) ; la réponse inclut alors la ligue.

ParamètreTypeDescription
leagueIdintegerID de la ligue (ou slug)
Essayer+
curl "https://sportapi.ai/api/standings/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "data": [
    {
      "position": 1,
      "team": {
        "id": 324,
        "name": "Manchester City",
        "short_name": "Man City",
        "slug": "manchester-city",
        "logo": "espn-382.png"
      },
      "played": 5,
      "won": 5,
      "draw": 0,
      "lost": 0,
      "goals_for": 13,
      "goals_against": 5,
      "goal_difference": 8,
      "points": 15,
      "form": [
        {
          "result": "W",
          "date": "2026-09-13",
          "home_team": "Manchester United",
          "away_team": "Manchester City",
          "home_score": 0,
          "away_score": 1,
          "is_home": false
        },
        {
          "result": "W",
          "date": "2026-09-20",
          "home_team": "Manchester City",
          "away_team": "Sunderland",
          "home_score": 5,
          "away_score": 3,
          "is_home": true
        }
      ]
    },
    {
      "position": 2,
      "team": {
        "id": 311,
        "name": "Arsenal",
        "short_name": "Arsenal",
        "slug": "arsenal",
        "logo": "espn-359.png"
      },
      "played": 6,
      "won": 5,
      "draw": 0,
      "lost": 1,
      "goals_for": 10,
      "goals_against": 5,
      "goal_difference": 5,
      "points": 15,
      "form": [
        {
          "result": "L",
          "date": "2026-09-19",
          "home_team": "Brighton & Hove Albion",
          "away_team": "Arsenal",
          "home_score": 3,
          "away_score": 0,
          "is_home": false
        },
        {
          "result": "W",
          "date": "2026-10-10",
          "home_team": "Arsenal",
          "away_team": "Leeds United",
          "home_score": 2,
          "away_score": 1,
          "is_home": true
        }
      ]
    }
  ]
}

Ligues

Accédez aux informations sur les ligues incluant les meilleurs buteurs, les passes décisives, les cartons et l'historique des confrontations.

GET/api/leagues

Récupérer toutes les ligues groupées par pays avec les informations de couverture des données.

Essayer+
curl "https://sportapi.ai/api/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "data": [
    {
      "country": "England",
      "geo": "GB-ENG",
      "leagues": [
        {
          "id": 53,
          "name": "Championship",
          "geo": "GB-ENG",
          "domestic": 1,
          "has_standings": true,
          "has_fixtures": true,
          "fixtures_count": 737,
          "teams_count": 24
        },
        {
          "id": 26,
          "name": "English Community Shield",
          "geo": "GB-ENG",
          "domestic": 1,
          "has_standings": true,
          "has_fixtures": true,
          "fixtures_count": 2,
          "teams_count": 0
        }
      ]
    }
  ]
}
GET/api/leagues/{id}

Récupérer les détails de la ligue avec les équipes, les matchs à venir et les résultats récents.

ParamètreTypeDescription
idintegerID de la ligue
Essayer+
curl "https://sportapi.ai/api/leagues/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "id": 24,
  "name": "Premier League",
  "geo": "GB-ENG",
  "country": "England",
  "domestic": 1,
  "teams": [
    {
      "id": 370,
      "name": "AFC Bournemouth",
      "logo_file": "espn-349.png"
    },
    {
      "id": 311,
      "name": "Arsenal",
      "logo_file": "espn-359.png"
    }
  ],
  "upcoming_fixtures": [
    {
      "id": 13596518,
      "date": "2026-10-11",
      "datetime": "2026-10-11 15:00:00",
      "home_team": "Crystal Palace",
      "away_team": "Nottingham Forest"
    }
  ],
  "recent_results": [
    {
      "id": 13596181,
      "date": "2026-10-10",
      "home_team": "Manchester United",
      "away_team": "Tottenham Hotspur",
      "home_score": 1,
      "away_score": 1
    }
  ]
}
GET/api/leagues/{id}/topscorers

Récupérer les meilleurs buteurs pour une ligue spécifique. Saison en cours par défaut.

ParamètreTypeDescription
idintegerID de la ligue
limitintegerLignes à retourner, 1-100 (par défaut 20)
seasonstringall = toutes les saisons au lieu de la saison en cours
Essayer+
curl "https://sportapi.ai/api/leagues/24/topscorers?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "E. Haaland",
      "player_urn": "urn:bbc:sportsdata:football:player:s-atzboo800gv7gic2rgvgo0kq1",
      "team_id": 324,
      "team_name": "Manchester City",
      "goals": 5,
      "penalties": 0
    },
    {
      "rank": 1,
      "player_name": "João Pedro",
      "player_urn": "urn:bbc:sportsdata:football:player:s-eaqqezw2ed1u0tt3zc128mr1m",
      "team_id": 322,
      "team_name": "Chelsea",
      "goals": 5,
      "penalties": 0
    }
  ]
}
GET/api/leagues/{id}/topassists

Récupérer les meilleurs passeurs pour une ligue spécifique. Saison en cours par défaut.

ParamètreTypeDescription
idintegerID de la ligue
limitintegerLignes à retourner, 1-100 (par défaut 20)
seasonstringall = toutes les saisons au lieu de la saison en cours
Essayer+
curl "https://sportapi.ai/api/leagues/24/topassists?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "A. Semenyo",
      "player_urn": "",
      "team_id": 324,
      "team_name": "Manchester City",
      "assists": 3
    },
    {
      "rank": 1,
      "player_name": "C. Palmer",
      "player_urn": "",
      "team_id": 322,
      "team_name": "Chelsea",
      "assists": 3
    }
  ]
}
GET/api/leagues/{id}/topcards

Récupérer les joueurs avec le plus de cartons (jaunes/rouges) dans une ligue. Saison en cours par défaut.

ParamètreTypeDescription
idintegerID de la ligue
limitintegerLignes à retourner, 1-100 (par défaut 20)
seasonstringall = toutes les saisons au lieu de la saison en cours
Essayer+
curl "https://sportapi.ai/api/leagues/24/topcards?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "A. Fatawu",
      "player_urn": "urn:bbc:sportsdata:football:player:s-6cx5c6bzp1hq6c1vui53mxzx0",
      "team_id": 10158,
      "team_name": "Ipswich Town",
      "yellow_cards": 3,
      "red_cards": 1,
      "total_cards": 4
    },
    {
      "rank": 1,
      "player_name": "V. Janelt",
      "player_urn": "urn:bbc:sportsdata:football:player:s-9k8gysrsy1a261nhcszo4aoyx",
      "team_id": 366,
      "team_name": "Brentford",
      "yellow_cards": 4,
      "red_cards": 0,
      "total_cards": 4
    }
  ]
}
GET/api/fixtures/h2h/{team1}/{team2}

Récupérer l'historique des confrontations directes entre deux équipes.

ParamètreTypeDescription
team1integerPremier ID d'équipe
team2integerDeuxième ID d'équipe
Essayer+
curl "https://sportapi.ai/api/fixtures/h2h/311/312" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "team1": 311,
  "team2": 312,
  "data": [
    {
      "id": 604,
      "home_id": 311,
      "away_id": 312,
      "date": "2026-01-08",
      "home_score": 0,
      "away_score": 0,
      "result": 0,
      "status": "FT",
      "home_team": "Arsenal",
      "away_team": "Liverpool",
      "league_name": "Premier League"
    },
    {
      "id": 577,
      "home_id": 312,
      "away_id": 311,
      "date": "2025-08-31",
      "home_score": 1,
      "away_score": 0,
      "result": 1,
      "status": "FT",
      "home_team": "Liverpool",
      "away_team": "Arsenal",
      "league_name": "Premier League"
    }
  ]
}

Joueurs

Accédez aux statistiques des joueurs et aux données de performance par match.

GET/api/players/{slug}

Récupérer un profil joueur : bio, équipe et ligue actuelles, statistiques de carrière et de la saison en cours, matchs récents et prochain match.

ParamètreTypeDescription
slugstringSlug du joueur
Essayer+
curl "https://sportapi.ai/api/players/bukayo-saka" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "player": {
    "id": 4928,
    "full_name": "Bukayo Saka",
    "slug": "bukayo-saka",
    "position": "Forward",
    "nationality": "GB-ENG",
    "date_of_birth": "2001-09-05",
    "height": null,
    "weight": null,
    "photo_url": null,
    "jersey_number": 7,
    "team_id": 311
  },
  "team": {
    "id": 311,
    "full_name": "Arsenal",
    "slug": "arsenal",
    "country": "England",
    "geo": "GB-ENG",
    "league_id": 24
  },
  "league": {
    "id": 24,
    "name": "Premier League",
    "slug": "premier-league"
  },
  "linked": false,
  "career": null,
  "season": null,
  "rank": null,
  "matches": [],
  "recent": [],
  "next_match": {
    "date": "2026-10-13",
    "datetime": "2026-10-13 21:00:00",
    "home_team": "Arsenal",
    "home_slug": "arsenal",
    "away_team": "Lille",
    "away_slug": "lille",
    "league_name": "UEFA Champions League"
  },
  "squad": [
    {
      "full_name": "David Raya",
      "slug": "david-raya",
      "position": "Goalkeeper",
      "jersey_number": 1
    }
  ]
}
GET/api/players/stats

Récupérer les statistiques par match et les totaux de carrière d'un joueur. Recherche par nom de joueur et ID d'équipe.

ParamètreTypeDescription
namestringNom complet du joueur
team_idintegerID de l'équipe à laquelle appartient le joueur
shirt_numberintegerFacultatif — aide à dissocier les joueurs aux noms similaires
Essayer+
curl "https://sportapi.ai/api/players/stats?name=Bukayo%20Saka&team_id=311&shirt_number=7" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemple de réponse
{
  "success": true,
  "player": {
    "shirt_number": 7,
    "position": "Forward",
    "nationality": "GB-ENG",
    "team": {
      "id": 311,
      "name": "Arsenal"
    }
  },
  "totals": {
    "appearances": 46,
    "goals": 12,
    "assists": 6,
    "mins_played": 2775,
    "shots_total": 96,
    "total_passes": 957,
    "tackles": 42,
    "saves": 0
  },
  "matches": [
    {
      "goals": 0,
      "assists": 0,
      "mins_played": 90,
      "shots_total": 2,
      "total_passes": 34,
      "tackles": 1,
      "saves": 0,
      "position": "Attacking Midfielder",
      "shirt_number": 7,
      "is_starter": 1,
      "date": "2026-10-10",
      "home_score": 2,
      "away_score": 1,
      "home_id": 311,
      "away_id": 352,
      "home_team": "Arsenal",
      "away_team": "Leeds United",
      "league_name": "Premier League"
    }
  ]
}

Endpoints d'authentification

Endpoints d'inscription et de connexion.

POST/api/auth/register

Enregistrer un nouveau compte utilisateur.

ParamètreTypeDescription
emailstringEmail utilisateur (obligatoire)
passwordstringMot de passe utilisateur (obligatoire)
namestringNom d'affichage (optionnel)
Essayer+
curl -X POST "https://sportapi.ai/api/auth/register" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD","name":"John Doe"}'
Exemple de réponse
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
POST/api/auth/login

Connexion avec email et mot de passe.

ParamètreTypeDescription
emailstringEmail utilisateur (obligatoire)
passwordstringMot de passe utilisateur (obligatoire)
Essayer+
curl -X POST "https://sportapi.ai/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD"}'
Exemple de réponse
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
GET/api/auth/me

Récupérer l'utilisateur authentifié actuel.

Authentification requise
Essayer+
curl "https://sportapi.ai/api/auth/me" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Exemple de réponse
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
GET/api/auth/google

Récupurer l'URL d'autorisation Google OAuth.

Essayer+
curl "https://sportapi.ai/api/auth/google"
Exemple de réponse
{
  "success": true,
  "url": "https://accounts.google.com/o/oauth2/v2/auth?..."
}

Endpoints utilisateur

Endpoints du profil et du contact utilisateur.

GET/api/profile

Récupérer le profil de l'utilisateur actuel.

Authentification requise
Essayer+
curl "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Exemple de réponse
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
POST/api/profile

Mettre à jour le profil utilisateur.

Authentification requise
ParamètreTypeDescription
namestringNouveau nom d'affichage
Essayer+
curl -X POST "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"New Name"}'
Exemple de réponse
{
  "success": true,
  "message": "Profile updated successfully"
}
POST/api/contact

Soumettre une demande via le formulaire de contact.

ParamètreTypeDescription
namestringVotre nom (obligatoire)
emailstringVotre email (obligatoire)
subjectstringObjet (optionnel)
messagestringVotre message (obligatoire)
Essayer+
curl -X POST "https://sportapi.ai/api/contact" \
  -H "Content-Type: application/json" \
  -d '{"name":"John Doe","email":"[email protected]","subject":"API Question","message":"Your message..."}'
Exemple de réponse
{
  "success": true,
  "message": "Contact request submitted successfully"
}

WebSocket

Connectez-vous au serveur WebSocket SportAPI pour recevoir les mises à jour des scores en direct poussées vers votre client en temps réel — sans polling.

Connexion

URL WebSocket
wss://sportapi.ai/ws?key=YOUR_API_KEY

Authentifiez-vous en transmettant votre clé API en tant que paramètre de requête. La connexion sera rejetée avec un message d'erreur si la clé est absente ou invalide.

Latence de mise à jour

Les mises à jour des scores sont poussées environ 30 à 60 secondes après qu'un but ait été marqué. Cela reflète notre intervalle de rafraîchissement de la source de données en direct.

Messages client

Après la connexion, envoyez des messages JSON pour vous abonner aux matchs :

S'abonner à tous les matchs en direct
{ "action": "subscribe_all" }
S'abonner à un match spécifique
{ "action": "subscribe", "fixture_id": 12345 }
Se désabonner d'un match
{ "action": "unsubscribe", "fixture_id": 12345 }
Ping
{ "action": "ping" }

Messages serveur

Mise à jour du score
{
  "type": "score_update",
  "fixture_id": 12345,
  "home_score": 2,
  "away_score": 1,
  "home_pen": null,
  "away_pen": null,
  "status": "LIVE",
  "minute": "67'"
}

status valeurs : Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended. À la mi-temps, le statut reste LIVE et minute est "HT". home_pen/away_pen contiennent le score aux tirs au but s'il y en a un (les endpoints REST les appellent penalty_home/penalty_away).

Exemple JavaScript

JavaScript
const ws = new WebSocket('wss://sportapi.ai/ws?key=YOUR_API_KEY')

ws.onopen = () => {
  // Subscribe to all live matches
  ws.send(JSON.stringify({ action: 'subscribe_all' }))

  // Or subscribe to a specific fixture
  ws.send(JSON.stringify({ action: 'subscribe', fixture_id: 12345 }))
}

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data)
  if (msg.type === 'score_update') {
    console.log(`Fixture ${msg.fixture_id}: ${msg.home_score}–${msg.away_score} (${msg.status})`)
  }
}

ws.onclose = () => console.log('Disconnected')
ws.onerror = (err) => console.error('WebSocket error', err)