Documentation / Matches
FOOTBALL MATCH DATA API
MatchComplimentary keyMCP tool
get_matchEverything about a match: the score at every stage, both clubs' positions before kickoff, the ground, the referee and the conditions on the day. On the complimentary key it reads this season's Premier League.
GET
/v1/matches/{match_id}TRY ITComplimentary
Kept in this browser for every docs page. No key yet? Get a free key
GET https://api.footballapi.org/v1/matches/mt_95kf4jw9aThe answer appears below, with its status and time.
curl "https://api.footballapi.org/v1/matches/mt_95kf4jw9a" \ -H "X-API-Key: your key"
PARAMETERS
match_idrequiredstringA match id from any result, fixture or match list, such as mt_e2hk79mn5. In the path.RETURNS
match_idstringOur id for the match, mt_ and 9 characters, the same in every answer and for goodcompetitionstringThe competition's name in the collection, such as premier-leaguecountry_namestringThe country, or World or Europe for a tournamentcompetition_namestringThe competition as people write itseason_start_yearintegerThe first year of the season: 2026 for 2026/27kickoff_utcstringKickoff in UTC, ISO 8601kickoff_datestringThe day of kickoff in UTC, YYYY-MM-DDkickoff_local_datestringThe day of kickoff where the match is playedkickoff_local_timestringThe time of kickoff where the match is playedmatch_statusstringWhere the match stands, such as finished or not startedhome_club_idstringOur id for the home clubhome_club_namestringThe home clubaway_club_idstringOur id for the away clubaway_club_namestringThe away clubhome_goalsintegerHome goals at full timeaway_goalsintegerAway goals at full timefull_time_resultstringhome, away or draw, at full timehalf_time_home_goalsintegerHome goals at half timehalf_time_away_goalsintegerAway goals at half timehalf_time_resultstringhome, away or draw, at half timestoppage_minutesnull or moreMinutes of added time; null when not recordedis_kickoff_rescheduledbooleanWhether kickoff moved from its first date or timeelapsed_minutesnull or moreMinutes played so far while the match is on; null otherwisehome_league_positionintegerThe home side's place in its league before kickoffaway_league_positionintegerThe away side's place in its league before kickoffaway_travel_kmintegerHow far the away side came, ground to ground, in kilometresground_namestringThe groundcity_namestringThe city of the groundlatitudenumberWhere the ground is, north to southlongitudenumberWhere the ground is, east to westlocation_precisionstringHow exact latitude and longitude are: ground, or citydaylight_minutesintegerMinutes of daylight that day at the groundsun_elevation_degnumberThe sun's height at kickoff, in degrees; below 0 after darkpublic_holidaynull or moreThe public holiday that day where the match is played; null when nonekickoff_temperature_cnull or moreThe temperature at kickoff, in degrees C; null when not recordedkickoff_rain_mmnull or moreRain in the hour of kickoff, in millimetres; null when not recordedkickoff_wind_msnull or moreWind at kickoff, in metres a second; null when not recordedattendanceintegerThe crowd; null when not recordedreferee_namestringThe refereeregular_time_home_goalsintegerHome goals after 90 minutes and added timeregular_time_away_goalsintegerAway goals after 90 minutes and added timeregular_time_resultstringhome, away or draw, after 90 minutes and added timeextra_time_home_goalsnull or moreHome goals after extra time; null when there was noneextra_time_away_goalsnull or moreAway goals after extra time; null when there was noneshootout_home_goalsnull or moreHome penalties scored in a shootout; null when there was noneshootout_away_goalsnull or moreAway penalties scored in a shootout; null when there was nonehome_formationstringThe home side's formation, such as 4-2-3-1away_formationstringThe away side's formationground_idstringOur id for the ground, gd_ and 9 characterscapacityintegerHow many the ground holdssurfacestringThe pitch, such as grassclub_figuresobjectEach side's figures for the matchclub_figures.homeobjectThe home sideclub_figures.home.xgnumberExpected goalsclub_figures.home.xg_estimatenumberExpected goals worked out from the shots and the other figuresclub_figures.home.shotsintegerShotsclub_figures.home.shots_on_targetintegerShots on targetclub_figures.home.cornersintegerCornersclub_figures.home.foulsintegerFouls committedclub_figures.home.yellow_cardsintegerYellow cardsclub_figures.home.red_cardsintegerRed cardsclub_figures.home.possession_pctintegerShare of the ball, as a percentageclub_figures.awayobjectThe away sideclub_figures.away.xgnumberExpected goalsclub_figures.away.xg_estimatenumberExpected goals worked out from the shots and the other figuresclub_figures.away.shotsintegerShotsclub_figures.away.shots_on_targetintegerShots on targetclub_figures.away.cornersintegerCornersclub_figures.away.foulsintegerFouls committedclub_figures.away.yellow_cardsintegerYellow cardsclub_figures.away.red_cardsintegerRed cardsclub_figures.away.possession_pctintegerShare of the ball, as a percentagestatslistEach side's figures for the matchstats[].club_namestringThe clubstats[].statsobjectEach side's figures for the matchstats[].stats.cornersintegerCornersstats[].stats.expected_goalsnumberExpected goalsstats[].stats.foulsintegerFouls committedstats[].stats.free_kicksintegerFree kicksstats[].stats.offsidesintegerTimes caught offsidestats[].stats.passes_accurateintegerPasses that reached a team-matestats[].stats.passes_totalintegerPassesstats[].stats.possession_pctintegerShare of the ball, as a percentagestats[].stats.red_cardsintegerRed cardsstats[].stats.savesintegerSaves by the goalkeeperstats[].stats.shots_blockedintegerShots blockedstats[].stats.shots_inside_boxintegerShots from inside the penalty areastats[].stats.shots_off_targetintegerShots off targetstats[].stats.shots_on_targetintegerShots on targetstats[].stats.shots_outside_boxintegerShots from outside the penalty areastats[].stats.shots_totalintegerShotsstats[].stats.yellow_cardsintegerYellow cardsEXAMPLE ANSWER
200GET /v1/matches/mt_95kf4jw9a, taken 21 Oct 2026
{ "data": { "match_id": "mt_95kf4jw9a", "competition": "premier-league", "country_name": "England", "competition_name": "Premier League", "season_start_year": 2026, "kickoff_utc": "2026-10-19T19:00:00Z", "kickoff_date": "2026-10-19", "kickoff_local_date": "2026-10-19", "kickoff_local_time": "19:00", "match_status": "finished", "home_club_id": "cl_4x2bczxvv", "home_club_name": "Tottenham", "away_club_id": "cl_frt0n2e46", "away_club_name": "Coventry", "home_goals": 3, "away_goals": 1, "full_time_result": "home", "half_time_home_goals": 1, "half_time_away_goals": 0, "half_time_result": "home", "stoppage_minutes": null, "is_kickoff_rescheduled": false, "elapsed_minutes": null, "home_league_position": 20, "away_league_position": 16, "away_travel_km": 135, "ground_name": "Tottenham Hotspur Stadium", "city_name": "London", "latitude": 51.604444444444, "longitude": -0.066388888888889, "location_precision": "ground", "daylight_minutes": 630, "sun_elevation_deg": -19.3, "public_holiday": null, "kickoff_temperature_c": null, "kickoff_rain_mm": null, "kickoff_wind_ms": null, "attendance": 60913, "referee_name": "Andrew Madley", "regular_time_home_goals": 3, "regular_time_away_goals": 1, "regular_time_result": "home", "extra_time_home_goals": null, "extra_time_away_goals": null, "shootout_home_goals": null, "shootout_away_goals": null, "home_formation": "3-4-2-1", "away_formation": "4-2-3-1", "ground_id": "gd_4wv42jcr4", "capacity": 62850, "surface": "grass", "club_figures": { "home": { "xg": 0.9, "xg_estimate": 1.66, "shots": 16, "shots_on_target": 5, "corners": 4, "fouls": 15, "yellow_cards": 1, "red_cards": 0, "possession_pct": 66 }, "away": { "xg": 0.83, "xg_estimate": 1.34, "shots": 12, "shots_on_target": 1, "corners": 4, "fouls": 14, "yellow_cards": 3, "red_cards": 0, "possession_pct": 34 } }, "stats": [ { "club_name": "Tottenham", "stats": { "corners": 4, "expected_goals": 0.9, "fouls": 15, "free_kicks": 14, "offsides": 6, "passes_accurate": 499, "passes_total": 559, "possession_pct": 66, "red_cards": 0, "saves": 0, "shots_blocked": 4, "shots_inside_box": 10, "shots_off_target": 7, "shots_on_target": 5, "shots_outside_box": 6, "shots_total": 16, "yellow_cards": 1 } }, { "club_name": "Coventry", "stats": { "corners": 4, "expected_goals": 0.83, "fouls": 14, "free_kicks": 15, "offsides": 1, "passes_accurate": 221, "passes_total": 285, "possession_pct": 34, "red_cards": 0, "saves": 2, "shots_blocked": 4, "shots_inside_box": 11, "shots_off_target": 7, "shots_on_target": 1, "shots_outside_box": 1, "shots_total": 12, "yellow_cards": 3 } } ] }, "meta": { "request_id": "req_06c6b9a0356d2a31" } }
ERRORS
401unauthorizedNo key, or a key we do not know.400bad_requestA parameter is missing or not in the right form; the message names it.403upgrade_requiredAnything outside this season's Premier League, on the complimentary key.404not_foundAn id or competition we do not have.422unknown_parameterA parameter this endpoint does not take.429quota_exceededThe day's 50 calls are used, on the complimentary key; they reset at 00:00 UTC.