Skip to main content
Competitions are the league-level container. From a competition ID you can fetch standings, results, upcoming games, brackets, top scorers, transfers, and news.

Endpoints

Standings (real sample)

recentForm[] values: 1 win, 0 draw, -1 loss.

Historical seasons

Append ?seasonNum={num} to standings, results, and stats. Discover season numbers from the current standings[].seasonNum and walk back.

Stats — top scorers and team stats

Returns two arrays under data.stats:
  • athletesStats[] — 16 player categories: Goals, Expected Goals, Assists, Expected Assists, Goals and Assists, Expected Goals + Assists, Shots On Target, Big Chances Created, Successful Dribbles, Tackles Won, Interceptions, Clearances, Clean Sheets, Saves, Yellow Cards, Red Cards.
  • competitorsStats[] — 9 team categories: Goals Scored, Goals Conceded, Shots On Target, Possession %, Pass Accuracy %, Tackles Won, Clean Sheets, Yellow Cards, Red Cards.
Each row exposes top-20 entities with entity (id, name, positionName, nameForURL) and stats[].value. See Sports & Format for the numeric category IDs.

Basketball stat leaders

The same endpoint is the only way to fetch many basketball players in one request — Basketball V2 has no season leaderboard.
Verified live on WNBA (106) and Australian NBL (5486).
  • athletesStats[] — 7 player categories, top 20 rows each: 1 Points Per Game, 2 Assists Per Game, 3 Rebounds Per Game, 4 Steals Per Game, 5 Turnovers Per Game, 6 Blocks Per Game, 7 Fouls Per Game.
  • competitorsStats[] — 10 team categories, all teams: 1 Field Goal %, 2 3 Point %, 3 Free Throw %, 4 Rebounds Per Game, 5 Defensive Rebounds Per Game, 6 Offensive Rebounds Per Game, 7 Assists Per Game, 8 Blocks Per Game, 9 Steals Per Game, 10 Turnovers Per Game.
  • athletesInfoText — the eligibility rule: for non-aggregative statistics a player must have played at least 30% of completed team games.
Each player row carries entity with id, name, competitorId (team), positionName and imageVersion, so headshots and drill-down work directly.
Basketball caveats, all confirmed by testing:
  • Empty payloads out of season. Some competitions return data: {} — NBA (53) while the season has not tipped off, Japan B.League (8361), Euroleague Women (6817). There is no hasStats flag on the competition object: probe the endpoint and treat an empty data object as “not available yet”. Historical seasons are not a workaround — ?seasonNum={num} on an empty competition still returns {}.
  • The competitors filter is ignored. ?competitors={teamId} returns the unfiltered leader tables. Filter client-side on entity.competitorId.
  • Competition IDs are global across sports. Passing a football ID to /v1/basketball/... returns that football competition’s “Goals” leaders with no error. Always resolve IDs from /v1/basketball/competitions.

Brackets (knockout)

Walk brackets[].stages[].groups[].games[].gameId to drive a knockout view.

Transfers

type: 1 = Loan, 2 = Permanent, 3 = End of loan, 6 = Staff appointment.
For a fully built-out World Cup integration with hardcoded IDs, see V1 World Cup 2026.
  • Teams — drill from a standings row into team fixtures.
  • Head-to-Head — compare two teams.
  • News — competition-scoped news.
Last modified on September 23, 2026