In play now
L/v1/live
Everything in play right now
Everything in play right now, with the current score, period and the minute of play (elapsed_minutes, refreshed about once a minute). elapsed_minutes is filled only while a match is being played; on a match not yet started or already settled it is null.
Poll as often as you like: every answer carries Last-Modified, the moment of the last change to any match in play or just finished. Send it back as If-Modified-Since and, until something changes, the answer is 304 Not Modified with no body. For pushes instead of polling, webhooks on the Live plan send goals, cards, kickoffs, lineups and results as they land.
Plan
This endpoint needs Live & Archive.
Calling it on a lower plan returns a 403 naming the plan it needs and
a link to pricing, never a bare refusal.
Parameters
country
string
query
/v1/countries. e.g. England
league_id
string
query
/v1/leagues: 39 is the English Premier League, 62 is Ligue 2. e.g. lg_24T9Z0G
Returns
data[].match_id
string
data[].country_name
string
data[].league_name
string
data[].kickoff_utc
integer
data[].kickoff_date
string
data[].match_status
string
data[].home_team_name
string
data[].away_team_name
string
data[].home_goals
integer
data[].away_goals
integer
data[].full_time_result
empty in this example
data[].home_league_position
integer
data[].away_league_position
integer
data[].away_travel_km
integer
data[].home_kickoff_price
number
data[].draw_kickoff_price
number
data[].away_kickoff_price
number
meta.data_as_of
string
meta.request_id
string
meta.count
integer
meta.next_cursor
string
meta.page
integer
meta.per_page
integer
meta.total
integer
meta.total_pages
integer
meta.next_page
integer
meta.prev_page
empty in this example
Request
curl "https://api.footballsoccerapi.com/v1/live?country=England&league_id=lg_24T9Z0G" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/live?country=England&league_id=lg_24T9Z0G", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/live?country=England&league_id=lg_24T9Z0G", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/live?country=England&league_id=lg_24T9Z0G"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
{
"data": [
{
"match_id": "mt_28QVFGW",
"country_name": "Colombia",
"league_name": "Primera A",
"kickoff_utc": 1793228400,
"kickoff_date": "2026-10-28",
"match_status": "finished",
"home_team_name": "Once Caldas",
"away_team_name": "Alianza Valledupar",
"home_goals": 1,
"away_goals": 0,
"full_time_result": null,
"home_league_position": 7,
"away_league_position": 16,
"away_travel_km": 650,
"home_kickoff_price": 1.58,
"draw_kickoff_price": 3.7,
"away_kickoff_price": 6.25
},
{
"match_id": "mt_1SGZZ85",
"country_name": "Germany",
"league_name": "DFB Pokal",
"kickoff_utc": 1793216700,
"kickoff_date": "2026-10-28",
"match_status": "finished",
"home_team_name": "Hannover 96",
"away_team_name": "1. FC Kaiserslautern",
"home_goals": 0,
"away_goals": 2,
"full_time_result": "away",
"home_league_position": null,
"away_league_position": null,
"away_travel_km": 354,
"home_kickoff_price": 1.66,
"draw_kickoff_price": 4.2,
"away_kickoff_price": 4.4
}
],
"meta": {
"data_as_of": "2026-10-29T04:32:57Z",
"request_id": "01J9QW3C7M4KX2VB",
"count": 2,
"next_cursor": "MTcyOTMzNzQwMDoxMjA4MDk5",
"page": 1,
"per_page": 100,
"total": 380,
"total_pages": 4,
"next_page": 2,
"prev_page": null
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.