Team Stats (Live)
Response
matchStatskeys are periods:"0"= full match,"1"= 1st half,"2"= 2nd half.- Each
valuesarray is[home, away]as strings.
Missing data vs real zero
If a metric is not provided for a match, its ID is absent from thestats object (a typical
football match returns ~74 IDs for full time and ~72 per half). If an ID is present with value
"0", that is a genuine zero. So: key missing = unknown, key present = trust the value.
Stat ID Reference
Verified against the equivalent V2/statistics payload on concurrent live matches.
123 and 124 behave like attacks and dangerous attacks, but there is no V2 equivalent to confirm
them against, so they are documented as unconfirmed. IDs not listed above are passed through from
the upstream feed without a confirmed label.
Machine-readable dictionary (authoritative):No API key required and it does not count against your daily quota. The response is
{ version, sport, endpoint, notes, stats }, cached for one hour, where stats maps each ID to
{ name, unit, confirmed }. Pin against version and refresh when it changes.A static snapshot is also published as
football-stat-ids.json for offline builds — the
live endpoint is the source of truth. IDs are append-only: new IDs may appear, existing meanings do
not change.Matching V2 and V6 fixtures
V2 and V6 come from different upstream providers, so there is no shared canonical match ID and the fixture lists are not identical (a live-feed sample returned 24 matches on each side with only 20 overlapping). Recommended join:- Kickoff time: V6
matchTimeand V2startTimestampare both Unix seconds — allow a few minutes of tolerance. - Normalized team names (lowercase, strip punctuation/suffixes like
FC,SC,U20). - Optionally validate the competition name.
Match Statistics (Generic)
Lineups
Basketball matches do not expose
/stats, /team-stats, /lineups, /incidents, /commentary, or /tables — only /match/{id}, /odds, /odds/{companyId}, and /h2h?sport_id=2.