Per-team post-match team statistics (soccer)
Per-team team-stat line (possession, shots breakdown, fouls, corners, offsides, cards, GK saves, passes, pass %, and xG where covered) from the upstream feed, persisted hourly into fixture_statistics. Soccer-only; the linescore stays authoritative for goals. Free plan or higher: the box score is a raw record of the match, so every factual field is free. One COMPUTED field is not: expected_goals is omitted from both sides below the Solo plan. It is absent, never null, so an omission is never mistaken for "no xG on record". Stored-only: never fetches upstream. When a real match has no stats yet (the upstream posts within ~30 min of full-time, covered leagues only) the response is 200 with meta.available=false and null sides.
Request
- Base URL: https://api.bigballsdata.com
- URL: https://api.bigballsdata.com/v1/matches/{id}/statistics
- Auth: one of:
- API key in header x-api-key
- HTTP bearer
Path parameters
Response
ok
Example response
{
"data": {
"home": {
"team_id": "cf2d81c8-8e7c-4eaf-a515-c51be3962e57"
},
"away": {
"team_id": "cf2d81c8-8e7c-4eaf-a515-c51be3962e57"
}
},
"meta": {
"date_window": {
"timezone": "UTC",
"start_utc": "2026-09-13T00:00:00.000Z",
"end_utc": "2026-09-14T00:00:00.000Z"
},
"source": "official-league",
"confidence": 0.95,
"cache_age_ms": 4200,
"request_id": "req_abc123",
"note": "match_id is omitted on 380 of 380 rows in this response. The live feed behind them does not carry an id we can resolve to a stored match, so we return no id rather than one that will not work. For rows with ids you can call back into, use /v1/stored/matches with the same sport or league, for example /v1/stored/matches?league=epl."
},
"error": {
"code": "NOT_FOUND"
}
}Changes
No recorded changes to this operation across all 3 revisions of this API.