Fixtures, live scores, lineups, player and team stats, standings, odds and 10 years of history: accurate, complete, and all in one simple API. One key, clean JSON, and it works with any language or project.
Every dataset works the same way, for every league. Learn one request and you can use them all.
Schedules, kick-off times, status, venue and final scores — past, live and future rounds.
Every match in play, updated every 15 seconds, with the minute and the period.
Confirmed starting XIs, substitutes, shirt numbers, positions and the coach for both sides.
Goals, assists, cards, substitutions, penalties and VAR decisions, each with the minute it happened.
Shots, possession, passing accuracy, corners, duels, expected goals — per match or per season.
Minutes, goals, xG/xA, shots, key passes, tackles and ratings for 80,000 players.
Live league tables with home and away records, recent form and group stages.
Pre-match and live odds from five major bookmakers, including opening and closing prices.
Who is out, why, and since when — updated as clubs publish their team news.
Full transfer history, loans and every squad, season by season.
Every past meeting between two teams, across all competitions.
Stadium capacity, surface and city, plus the match official and their card record.
Pre-match and live odds from five major bookmakers, linked to the same matches as all our other stats. Show odds next to lineups, form or xG without adding a second provider.
Live prices, updated every 15 seconds alongside the score. Pre-match and live odds come in exactly the same format, so the same code handles both.
Opening and closing prices for every match, and every change in between. Test a betting model against 10 years of real results.
Build pricing and settlement on accurate, real-time match data, with bookmaker odds alongside.
Score contests in real time. Lineups arrive before kick-off, and points update as the goals go in.
Power live blogs, league tables and match centres for every competition you cover, from a single provider.
Load ten years of data into your analysis in minutes, and compare players across leagues on the same, consistent stats.
Ship a scores app, a manager game or a club companion without collecting the data yourself. Crests and squads included.
Connect Claude or ChatGPT to our MCP server and ask questions in plain English. Real numbers, no made-up scores.
Six of our 40+ endpoints. Every response has the same simple layout, so once you've used one, you know them all.
No SDK to install and no complicated sign-in. Add your key to a request and get clean JSON back. It works from any language, framework or tool that can call a URL.
curl -s "https://api.soccer-data.co/v1/fixtures?league=39&date=2026-09-25" \ -H "X-Api-Key: $SOCCER_DATA_KEY"
const res = await fetch( "https://api.soccer-data.co/v1/fixtures?league=39&date=2026-09-25", { headers: { "X-Api-Key": process.env.SOCCER_DATA_KEY } } ); const { response } = await res.json(); // → response[0].goals ⇒ { home: 2, away: 1 }
import os, requests r = requests.get( "https://api.soccer-data.co/v1/fixtures", params={"league": 39, "date": "2026-09-25"}, headers={"X-Api-Key": os.environ["SOCCER_DATA_KEY"]}, ) for f in r.json()["response"]: print(f["teams"]["home"]["name"], f["goals"])
$res = Http::withHeaders(['X-Api-Key' => config('services.soccer_data.key')]) ->get('https://api.soccer-data.co/v1/fixtures', [ 'league' => 39, 'date' => '2026-09-25', ]); foreach ($res->json('response') as $fixture) { echo $fixture['teams']['home']['name']; }
Every plan covers all 1,100 competitions and every stats endpoint. Paid plans add requests, history and the 15-second live feed — odds and webhooks come with Business and Enterprise.
Prototype and evaluate.
Indie apps and side projects.
Production traffic and paying users.
Betting operators, media and broadcasters.
Get a free key, copy an example, and see real match data in your project within minutes.
Enter your email and we'll send your invite straight away, with your API key and a quickstart for your first request.
Your invite is on its way, with your API key and a quickstart for your first request. Can't see it in a minute or two? Check your spam folder.