Live football scores,
every 15 seconds.
One call returns every match in play right now, with the score, minute, period and latest changes, across 1,100 competitions. The IDs match our fixtures, lineups and stats, so the live view slots straight into the rest of your app.
Call GET /v1/fixtures?live=all to get every match in play. Poll it every 15 seconds on Pro or above, compare each match's updated time with the one you stored, and only fetch events for the matches that changed.
One request, every live match
curl -s "https://api.soccer-data.co/v1/fixtures?live=all" \ -H "X-Api-Key: $SOCCER_DATA_KEY"
Poll once, not per match
Three matches in play or three hundred, ?live=all is a single request. Narrow it with &league=39 if you only follow a few competitions.
Or skip polling
On Business and Enterprise, webhooks push goals, cards and the final whistle to your server as they happen.
{
"get": "fixtures",
"parameters": { "live": "all" },
"results": 2,
"response": [
{
"fixture": {
"id": 1183422,
"status": { "short": "2H", "elapsed": 67, "extra": null },
"updated": "2026-09-25T19:38:04+00:00"
},
"league": { "id": 39, "name": "Premier League" },
"teams": {
"home": { "id": 50, "name": "Manchester City" },
"away": { "id": 42, "name": "Arsenal" }
},
"goals": { "home": 2, "away": 1 }
},
{
"fixture": {
"id": 1191307,
"status": { "short": "1H", "elapsed": 31, "extra": null },
"updated": "2026-09-25T19:37:51+00:00"
},
"league": { "id": 140, "name": "La Liga" },
"teams": {
"home": { "id": 541, "name": "Real Madrid" },
"away": { "id": 536, "name": "Sevilla" }
},
"goals": { "home": 0, "away": 0 }
}
]
}
What each match tells you
fixture.status.shortWhere the match is: 1H, HT, 2H, ET, P for penalties, then FT.
fixture.status.elapsedThe match minute. Added time played so far sits next to it in extra.
fixture.updatedWhen anything in this match last changed. If it matches what you stored, nothing new has happened.
goalsThe running score for each side, updated as goals are confirmed.
league.idThe competition. Pass it back as ?league= to follow only the leagues you care about.
Made for things that move
Score widgets
Put a live strip or ticker on a site or app without running your own ingest pipeline.
Goal alerts
Send a push notification, Telegram or Discord message the moment a score changes.
Fantasy & predictions
Update points and leaderboards while the matches are still being played.
Live blogs
Keep commentary pages and match centres in step with what's happening on the pitch.