Football stats API

Football stats API
for fixtures and results.

Query football fixtures, results, competitions, seasons, teams and match statistics — corners, shots, possession, cards and expected goals — through a stable JSON REST API. Every dataset and unavailable capability is described before you integrate.

Why Stats API

Football data your product can query without guessing.

Stats API turns enabled sources into normalized competition, season, team, fixture, result, statistic, lineup, timeline, standing, and player resources. Search by a human name once, retain the stable Stats API IDs, and use those IDs in later filters and joins.

Statistics, lineups, timelines, standings, squads and injuries have explicit coverage or observation fields. Team and player season summaries preserve missing values and transfer splits. Odds responses include source and observation times plus availability and expiry. Heat maps and shot maps remain unavailable.

01

Stable resource IDs

Competition, season, team, and match IDs stay inside the public contract instead of exposing source-specific identifiers.

02

Fixture and result filters

Query matches by competition, season, team, status, or an inclusive UTC date window.

03

Match and player statistics

Team match statistics with nullable expected goals, plus separate per-player appearance statistics.

04

Coverage in the payload

Match statistics report coverage; season summaries report available and support_status. Read the documented timing fields where present.

05

Inspectable JSON contract

OpenAPI 3.1, predictable errors, pagination, UTC timestamps, and copy-ready requests make integration behavior visible.

Current football data coverage

Supported resources, with the gaps left visible.

Use the public contract and the availability fields of the requested resource. Match statistics have coverage flags; season summaries distinguish missing and explicitly empty observations. Timing fields describe stored observations and do not establish complete or current coverage.

Available now
32 of 35 endpoints
Competitions and seasons ✓ Search enabled competitions and list their seasons with stable IDs.
Teams and squads ✓ Normalised teams, rosters, and player records keyed by durable identifiers.
Fixtures and results ✓ Filter match records by competition, season, team, status, or date.
Match statistics ✓ Corners, possession, shots, cards and nullable expected goals per team, plus documented player appearance statistics.
Lineups and timelines ✓ Formations, starters, benches, and minute-stamped goals, cards and substitutions.
Standings and availability ✓ League tables, named season groups, referee assignments, injuries and suspensions.
Season statistics ✓ Provider season summaries with separate team rows after player transfers and null unknown fields.
Odds observations ✓ Prematch, live and supported prematch player markets with explicit availability and expiry.
Contract and provenance ✓ Pagination, UTC timestamps, errors, cache headers, and observed ingestion times.
Not available today
Requires another source
Predictions — No betting signals or model predictions.
Uniform odds coverage — Named bookmakers and player markets vary; live prices are unattributed.
Heat maps and shot maps — Positional and spatial data is not published.
Sub-minute streaming — In-play endpoints are polled on a schedule, not pushed. Read the observed time.
Football stats API example

Discover stable IDs, then filter the match collection.

Search by a human competition name once. Store the returned Stats API ID, pass it to the matches endpoint, and paginate using the documented response metadata.

Read the match endpoint guide →
1 · Find a competition ID
curl --silent --show-error \
  "https://stats-api.com/api/v1/football/competitions?q=Premier%20League" \
  -H "Authorization: Bearer ${STATS_API_KEY}" \
  -H "Accept: application/json"
2 · Fetch its completed matches
curl --silent --show-error \
  "https://stats-api.com/api/v1/football/matches?competition_id=${COMPETITION_ID}&status=finished" \
  -H "Authorization: Bearer ${STATS_API_KEY}" \
  -H "Accept: application/json"
Build with football data

One key. One contract.
A clearer path to production.

View pricing →