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, injuries and minute-stamped incidents — plus the competition and fixture layer underneath them.

Why Stats API

Every input a fantasy scoring engine needs.

Player scoring is supported. Squads, lineups with formations and shirt numbers, per-player match statistics, injuries and suspensions, and minute-by-minute incidents are all live endpoints, alongside the competition, season, team and fixture layer a league calendar is built on.

A fantasy product needs three things in order: who is available, who actually started, and what they did. Those map to the squad endpoint, the lineups endpoint, and per-player match statistics. Read them in that sequence and the scoring engine has every input it needs without inference.

One real gap: season-aggregate player statistics are not published yet. Per-match player rows are, so a season total is a sum you compute and store on your side. That is more work at first, but it means your scoring rules — not ours — decide what counts, which is usually what a fantasy product wants anyway.

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, duels and expected goals for each 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

Every scoring input, with the gaps left visible.

Squads, lineups, per-player match statistics, injuries and incidents are live endpoints. What you compute yourself is the season aggregate, which means your scoring rules decide what counts.

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, goals, assists, cards, shots, passing, duels and expected goals per appearance.
Injuries and suspensions Availability with the observation time attached, so a stale flag reads as stale.
Incident timelines Minute-stamped goals, cards and substitutions for scoring and narration.
Competition calendars Fixtures and results by competition, season, team, status and UTC date.
Compute or source elsewhere
Not published today
Season player totals Sum the per-match rows on your side; the aggregate endpoint is planned.
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