Skip to contents

Player season totals and averages of a season (the leaderboard), one row per player and period.

Endpoint: GET https://prod.rosetta.nbl.com.au/get/{org}/stats/leaders/for/season/id/{season_id}

Usage

nbl_rosetta_stats_leaders(season_id, org = "wnbl", limit = NULL)

Arguments

season_id

(character required): Season id: the DataCore season id (season_id of nbl_rosetta_seasons) or Rosetta's own id (rosetta_season_id); either is accepted. Not the year.

org

(character default "wnbl", the women's WNBL): Organisation: nbl (men's NBL), wnbl (women's) or nbl1 (the second tier, men's and women's conferences). One of "nbl", "wnbl", "nbl1".

limit

(integer default NULL): Rows to return. Omitted = a page large enough for the whole list (a short page cut by Rosetta's path cache is refused).

Value

A wehoop_data tibble (one row per player and period):

col_nametypedescription
orgcharacterOrganisation the row belongs to: nbl, wnbl or nbl1. From the row's competition, else from the request.
assists_averagedoubleAssists per game.
blocks_averagedoubleBlocks per game.
field_goals_attemptedintegerField goals attempted, season total.
field_goals_madeintegerField goals made, season total.
field_goals_attempted_averagedoubleField goals attempted per game.
field_goals_made_averagedoubleField goals made per game.
field_goals_percentagedoubleField goals made / attempted, a 0-1 FRACTION.
fouls_averagedoubleFouls committed (personal + technical + others) per game.
free_throws_attemptedintegerFree throws attempted, season total.
free_throws_madeintegerFree throws made, season total.
free_throws_attempted_averagedoubleFree throws attempted per game.
free_throws_made_averagedoubleFree throws made per game.
free_throws_percentagedoubleFree throws made / attempted, a 0-1 FRACTION.
gamesintegerGames played in the season (in the period rows, by the player or team).
games_startedintegerGames in the starting five.
offensive_reboundsintegerOffensive rebounds, season total.
foulsintegerFouls committed (personal + technical + others), season total.
personal_foulsintegerPersonal fouls, season total.
technical_foulsintegerTechnical fouls, season total.
periodintegerPeriod as a STRING: 0 = game or season total, 1-4 = quarters, 11/12/13 = first/second/third overtime (inferred: fewer teams have each)
three_points_attemptedintegerThree-point field goals attempted, season total.
three_points_attempted_averagedoubleThree-point field goals attempted per game.
three_points_madeintegerThree-point field goals made, season total.
three_points_made_averagedoubleThree-point field goals made per game.
three_points_percentagedoubleThree-point field goals made / attempted, a 0-1 FRACTION.
turnovers_averagedoubleTurnovers per game.
turnoversintegerTurnovers, season total.
two_points_attemptedintegerTwo-point field goals attempted, season total.
two_points_attempted_averagedoubleTwo-point field goals attempted per game.
two_points_madeintegerTwo-point field goals made, season total.
two_points_made_averagedoubleTwo-point field goals made per game.
two_points_percentagedoubleTwo-point field goals made / attempted, a 0-1 FRACTION.
minutesdoubleMinutes played, decimal minutes.
minutes_averagedoubleMinutes per game, decimal minutes.
pointsintegerPoints, season total.
reboundsintegerTotal rebounds, season total.
assistsintegerAssists, season total.
blocksintegerBlocks, season total.
stealsintegerSteals, season total.
plus_minusintegerPoint differential while on court, season total.
plus_minus_averagedoublePoint differential while on court per game.
efficiencyintegerEfficiency rating (PTS + REB + AST + STL + BLK - missed FG - missed FT - TOV), season total.
efficiency_averagedoubleEfficiency rating (PTS + REB + AST + STL + BLK - missed FG - missed FT - TOV) per game.
points_averagedoublePoints per game.
rebounds_averagedoubleTotal rebounds per game.
steals_averagedoubleSteals per game.
player_idcharacterDataCore id (UUID v1, Sportradar) of the player; stable across seasons and the id to join on across routes.
rosetta_player_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the player; routes that take this entity accept it as well as the DataCore id.
player_first_namecharacterThe player's given name, e.g. Elijah.
player_jersey_numbercharacterJersey number, a STRING.
player_last_namecharacterThe player's family name, e.g. Pepper.
player_playing_positioncharacterPlaying position code (G, F, C, PG, SF, FC, ...); null when not recorded.
team_idcharacterDataCore id (UUID v1, Sportradar) of the team; stable across seasons and the id to join on across routes.
rosetta_team_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the team; routes that take this entity accept it as well as the DataCore id.
team_namecharacterName of the team as Rosetta spells it, e.g. Perth Wildcats.
team_codecharacterTeam code, e.g. PER (the {team_code} path value)
season_idcharacterDataCore id (UUID v1, Sportradar) of the season; stable across seasons and the id to join on across routes.
rosetta_season_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the season; routes that take this entity accept it as well as the DataCore id.
season_yearintegerRosetta's year of the season: the START year for the NBL and WNBL from 1998-99 (2025 = 2025-26), the calendar year for NBL1 and the 1979-1997 winter seasons. See season_end_year for the sdv key.
season_typecharacterSeason type: regular (includes finals), preseason, in_season (cups, blitz, exhibition), test.
season_competition_divisioncharacterNBL1 divisions (conference x gender); empty for NBL and WNBL.
sc_total_scoreintegerSuperCoach score including double-double / triple-double bonuses.
sc_total_score_without_dd_and_tdintegerSuperCoach score without those bonuses.
sc_breakdown_points_valueintegerThe stat's value for the game or season.
sc_breakdown_points_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_rebounds_valueintegerThe stat's value for the game or season.
sc_breakdown_rebounds_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_assists_valueintegerThe stat's value for the game or season.
sc_breakdown_assists_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_blocks_valueintegerThe stat's value for the game or season.
sc_breakdown_blocks_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_steals_valueintegerThe stat's value for the game or season.
sc_breakdown_steals_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_turnovers_valueintegerThe stat's value for the game or season.
sc_breakdown_turnovers_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_breakdown_triple_double_valueintegerThe stat's value for the game or season.
sc_breakdown_triple_double_pointsintegerSuperCoach points this stat earns (e.g. 3 per steal or block, -2 per turnover)
sc_double_figure_countintegerStats in double figures (for the double-double / triple-double bonus)
season_end_yearintegersdv season key: the END year of the season (2026 = 2025-26), derived from season_year (a START year for the NBL and WNBL from 1998-99, a calendar year for NBL1 and the 1979-1997 winter seasons; year 1998 is split on the start date). Where the body carries no year it is the season asked for.

Columns the body adds beyond these follow, in body order (sdv-py keeps them too).

Details

  • Unofficial: the JSON proxy behind nbl.com.au (not an API the NBL documents or supports). The terms of use were not reviewed; payloads are not redistributed as release assets.

  • Gated by a referer, not a key: every request carries Origin / Referer set to nbl.com.au (the runtime sends them); without them the host answers 403 MISSING_API_KEY, which is raised as wehoop_asset_fetch.

  • Fills a hole in ESPN: ESPN's nbl feed has box scores but no plays for the 2025-26 NBL season (the stats provider changed from Genius Sports to Sportradar DataCore that year). nbl_rosetta_match_pbp has the full event log with shot x/y for 2025-26 and, in the same shape, back to 2011-12 (WNBL about 2014-15). Matches from 1979 have box scores only.

  • One host serves three organisations; pass org='nbl' (default), 'wnbl' or 'nbl1'. NBL1 is the second tier (men's and women's conferences, calendar-year seasons).

  • Season = the END year (2026 = 2025-26) everywhere. Rosetta's own year is the START year for the NBL and WNBL from 1998-99 and a calendar year for NBL1 and the 1979-1997 winter seasons; the runtime maps it. Year 1998 holds two seasons (calendar 1998 and 1998-99).

  • Ids: <entity>id columns are DataCore ids (UUID v1; join on them), rosetta<entity>_id Rosetta's own. match_id is the DataCore fixture id every match route is keyed on.

  • Unknown ids, orgs and types answer 200 with no rows (wehoop_no_data). Rosetta caches a body per path and serves it whatever the query string, so a page cut by someone else's limit is refused (wehoop_asset_fetch); retry after the cache entry expires.

Errors: wehoop_no_data when Rosetta answers 404 or no rows (an unknown match, team, player or season id, an org or season type with nothing, or no season in progress); wehoop_asset_fetch for the 403 gate body, a stub or error envelope, a page cut by Rosetta's path cache, a body for another org, season or entity than the one asked for, or any other failed fetch; wehoop_bad_request for an unknown org / season_type, a malformed id, or HTTP 400 / 422.

 nbl_rosetta_stats_leaders(org = "nbl", season_id = "1f8e4a79-e98b-457b-85a5-e4b898c6c0bd")