Fantasy soccer data use case

Fantasy football API
for soccer fixtures and results.

Build fantasy soccer scoring on squads, confirmed lineups, per-player match statistics with started and played flags, injuries and minute-stamped incidents — plus the competition and fixture layer underneath them.

Why Stats API

Football inputs for your scoring rules.

Use squads, lineups, player match and season statistics, injury observations and match incidents where populated. These documented endpoints complement the competition, season, team and fixture records behind a league calendar; individual fields and competitions can have gaps.

Resolve the squad, read confirmed lineups where observed, then join per-player statistics by match and player ID. Apply your scoring rules to supported fields and keep missing observations separate from genuine zeros.

Season totals are published where the source supplied them: the season statistics endpoint returns appearances, minutes, goals, assists and more for a requested season, separated by team after a transfer, and its support_status says whether the numbers are available, were not observed, or were confirmed empty. Per-match rows remain the way to build your own windows, such as the last five matches, because your scoring rules — not ours — decide what counts.

Once a match has been played, the per-player statistics say who started and who played: started is true or false, and played is true, false or null when it cannot be told. Count null as unknown, never as a player who stayed on the bench.

Availability data deserves care. Injuries and suspensions are reported as observed at the last sync rather than continuously, so surface the observation time next to a doubtful flag instead of presenting it as certain. A lineup published an hour before kickoff is the authoritative answer to "is this player starting"; anything earlier is a forecast.

01

Squads and player records

Team rosters and player profiles, keyed by identifiers that stay stable across seasons.

02

Confirmed lineups

Starting eleven, substitutes, formation and shirt numbers once a team sheet is published.

03

Per-player match statistics

Goals, assists, cards, minutes, shots, passing and duels where observed for an appearance.

04

Availability signals

Injuries and suspensions with the observation time attached, so a stale flag reads as stale.

05

Incident timelines

Minute-stamped goals, cards and substitutions for live scoring and match narration.

06

League calendar foundation

Filter fixtures and results by team, competition, season, status and UTC date.

Fantasy soccer scope

Scoring inputs with explicit coverage.

Squads, lineups, player match and season statistics, injury observations and incidents have documented endpoints. Season summaries preserve team splits after transfers. Your application defines fantasy points and handles fields that are not observed.

Useful today
Player scoring supported
Squads and players ✓ Team rosters and player records with identifiers stable across seasons.
Confirmed lineups ✓ Starting eleven, bench, formation and shirt numbers once the team sheet lands.
Per-player statistics ✓ Minutes, started and played flags, goals, assists, cards, shots, passing and duels where observed per appearance.
Season summaries ✓ Provider aggregates for a requested season, separated by team after transfers; missing values stay null.
Injuries and suspensions ✓ Availability with the observation time attached, so a stale flag reads as stale.
Incident timelines ✓ Minute-stamped goals, cards and substitutions in provider order, each with a sequence number, for scoring and narration.
Competition calendars ✓ Fixtures and results by competition, season, team, status and UTC date.
Compute or source elsewhere
Not published today
Fantasy points — No opinionated scoring model — the raw events are yours to weight.
Heat maps — Positional data is not published.
Push notifications — In-play endpoints are polled on a schedule, not streamed.
Fantasy soccer workflow

Resolve a squad, then score the appearances.

Resolve the league to a stable ID, list the team squad, then read per-player match statistics for each fixture. Player identifiers stay constant across seasons, so a scoring table keeps joining after a transfer window.

Review supported match fields →
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 →