Leagues
Standings
GET/v2/leagues/{id}/standingsAll plans
Standings for one season. By default the season’s primary table (the league table, or the first group of a group stage — meta.overall says whether it holds every team); with group=all every table (conferences, divisions, groups); with type=home or away the table of home games or away games only.
Some seasons have several tables, in the source’s order — the NHL has two conferences, four divisions and the league; MLS two conferences and the overall table; a World Cup one per group. Exactly one table is primary (the default: the league table where there is one, otherwise the one with the most teams; the first group when all are equal); overall is true only on a table that holds every team of the season. position is always 1..n (re-ranked by us when the source’s is not). Columns that do not apply to the sport are null: points is null in the NBA (it ranks by winPercentage); draws is null wherever a table cannot draw (basketball, ice hockey, baseball, volleyball, …); overtimeLosses is set in ice hockey; scoresFor / scoresAgainst count scoreUnit (goals, points, runs, sets, …); streak (+3 = three wins in a row, −2 = two losses) is set where the source has it (NBA, EuroLeague, Liga ACB, …). form (since 2026-10-24) is the team’s last results in this competition season, up to five, oldest first (home / away tables: home / away results only); null where the source has none. Home / away tables exist for football and for basketball, handball, volleyball and ice-hockey leagues such as the EuroLeague, Liga ACB, the Handball-Bundesliga, the SuperLega and the KHL. The NBA and the NHL publish none, and the NFL’s stop updating: for basketball, ice hockey and American football we compute them (meta.source computed) from the season’s finished regular-season fixtures — home rows from home games, away rows from away games — with the columns of the total table that the same computation over every game reproduces exactly (NBA: wins, losses, winPercentage, gamesBehind per table, scores; NHL: wins, losses, overtimeLosses = overtime + shoot-out, points = 2 per win + 1 per overtime loss, scores; NFL: wins, losses, draws, winPercentage, scores). A published home / away table in those sports that is missing games is replaced by the computed one. winPercentage counts a tie as half a win. Ties are ranked by points or win share, then wins and score difference, not by head-to-head. Refreshed daily.
Parameters
id
our numeric id (positive integer)
season
a season id from /v2/leagues/{id}/seasons
group
all → every table of the season as StandingsGroup[]
type
overall (every game, default), home (home games only) or away (away games only); total is still accepted for one release and answered as overall
Response
- data
StandingsRow[] (default) | StandingsGroup[] (group=all)- meta
- season, type, source (upstream = the source’s table, computed = built by us from the fixtures), count (rows; tables with group=all); by default also group (the table’s name), groupCount (tables in the season), overall (whether this table holds every team), tieBreakRule, scoreUnit
- errors
- 400 bad_request — missing or invalid season, group other than all, type other than overall|home|away404 no_data — the source has no such table for that season (e.g. a home / away table it does not publish, outside basketball, ice hockey and American football); 404 not_found — an id we never issued404 not_found — season is not one of this league’s seasons (the message names the parameter; list them with /v2/leagues/{id}/seasons)
Every /v2 call can also answer the common errors.
$ curl -H "Authorization: Bearer sk_live_…" \ "https://api.sportsapi.app/v2/leagues/{id}/standings?season=…"
Example
{ "data": [ { "position": 1, "team": { "id": 4438, "name": "Manchester City", … }, "played": 7, "wins": 7, "draws": 0, "losses": 0, "overtimeWins": null, "overtimeLosses": null, "scoresFor": 19, "scoresAgainst": 7, "scoreDifference": 12, "points": 21, "winPercentage": null, "gamesBehind": null, "zone": "Champions League", "form": ["win", "win", "win", "win", "win"] }, … ], "meta": { "season": 200386, "type": "overall", "source": "upstream", "group": "Premier League 26/27", "groupCount": 1, "count": 20, "overall": true, "tieBreakRule": null, "scoreUnit": "goals" } }