sports

Domestic-league expected-goals leaderboard (season aggregates)

Per-league season xG leaderboard for the big-five European leagues, 2014 through the current season. Ranks players by expected goals and exposes the surrounding shot-quality picture: xG, xA, npxG, xGChain, xGBuildup, plus goals, assists, shots, key passes, matches and minutes. goals_above_xg (goals minus xG) is derived for finishing over- and under-performance.

Solo plan or higher: every field this endpoint ranks on is a model estimate rather than a record of what happened, so it sits with the rest of the model layer. Free receives a 403 naming the tier and linking the docs and pricing pages. The factual view of the same leagues, goals and assists, stays free on GET /v1/leagues/{id}/top-scorers.

LEAGUE-LEVEL ONLY. Rows are keyed by player NAME, not by a BigBalls player_id; the xG-to-players entity bridge is not built yet, so a per-player or per-match xG surface would serve a mostly-empty join. Those endpoints are not offered until that bridge lands; see docs/scoping/soccer-xg-bridge.md. Season rows we cannot attribute to a league are excluded, so this leaderboard only ever reflects players in the league you asked for.

team is the source team title verbatim and may be a comma-separated list for a player who transferred mid-season. Refreshed daily; when season is omitted, this endpoint and the sibling top-scorers endpoint use the newest season present in both datasets. 5-minute Redis cache keyed by league+season+stat+min_minutes+limit.

get/v1/leagues/{id}/xg-leaders

Request

  • Base URL: https://api.bigballsdata.com
  • URL: https://api.bigballsdata.com/v1/leagues/{id}/xg-leaders
  • Auth: one of:
    • API key in header x-api-key
    • HTTP bearer

Path parameters

id'epl' | 'laliga' | 'serie-a' | 'bundesliga' | 'ligue-1' required

League code. Same vocabulary as /v1/leagues/{id}/top-scorers.

Query parameters

stat'xg' | 'xa' | 'npxg' | 'goals' | 'assists' | 'shots' | 'key_passes'

Sort metric. Defaults to xg.

seasoninteger

Season label: the year the campaign starts. If omitted, uses the newest season also present on the sibling top-scorers leaderboard. Pass explicitly when reproducing a historical result.

min_minutesinteger

Minimum minutes played. Defaults to 0: no player is silently dropped.

limitinteger

Number of leaders to return.

Response

ok

updated_atstring date-time nullable

Changes

No recorded changes to this operation across all 3 revisions of this API.