Skip to main content

sdv.nba — dataset loaders

41 loaders reading the published sportsdataverse-data releases (parquet) — the JS mirror of sportsdataverse-py's load_* functions. Each is a camelCase export plus its snake_case alias and resolves to an array of plain row objects (or { [column]: values[] } with format: "columns").

  • Size: row objects cost ~60-100 bytes per cell on the heap, so before decoding each season a loader adds its rows × columns (from the parquet footer) to a running total and checks it against maxCells — by default heap limit / 100 for rows (≈45M cells on Node's default 4 GB heap) and heap limit / 30 for format: "columns" — and throws a catchable SdvError instead of running out of memory. Play-by-play is the usual case: pass columns, use format: "columns", or raise the heap (node --max-old-space-size=8192).
  • Seasons: seasons takes one season or a list. A season with no published asset (HTTP 404) is skipped with a warning (loaders marked so in their seasons row — sdv-py's hand-written ones — throw NoDataError instead); any other failure raises AssetFetchError (a failed download is never an empty season); a season below the loader's floor raises SeasonNotFoundError before anything is fetched. Multi-season results union the columns, null-filling gaps, and cast a column whose type changed between seasons to the common type (an integer id that became a string → strings, "123" not "123.0"), as sdv-py's diagonal_relaxed concat does.
  • Integers: an id column (id, *_id, *_ids, game_pk, athlete_id_1, id_play, playerId, homeTeamId, start.team.id, …) of integers comes back as exact decimal strings in every row and every season, whatever width the release stores it with (INT32, INT64, or a DOUBLE holding integers: "401628579101849903", "39", never "39.0"), so ids join across seasons and across releases. Code-like id columns (type_id, status_id, …) are strings too. An id column that is not exact integers (a fraction, a DOUBLE past 2^53) is left as read with one warning. Any other INT64 column comes back as number when every value is a safe integer, otherwise as BigInt with one warning (code SDV_INT64) per column per process.
  • Runtime: Node only. Downloads go through the releases transport family (see Transport, auth & errors); each asset is downloaded whole, then decoded.
LoaderReleaseSeasons
loadNbaPbpespn_nba_pbp2002+
loadNbaPlayerBoxscoreespn_nba_player_boxscores2002+
loadNbaScheduleespn_nba_schedules2002+
loadNbaTeamBoxscoreespn_nba_team_boxscores2002+
loadNbaGameRostersespn_nba_game_rosters2002+
loadNbaOfficialsespn_nba_officials2002+
loadNbaShotsespn_nba_shots2002+
loadNbaStandingsespn_nba_standings2002+
loadNbaPlayerSeasonStatsespn_nba_player_season_stats2002+
loadNbaTeamSeasonStatsespn_nba_team_season_stats2002+
loadNbaDraftespn_nba_draft2003+
loadNbaRostersespn_nba_rosters2025+
loadNbaStatsSchedulesnba_stats_schedules1996+
loadNbaStatsCoachesnba_stats_coaches1996+
loadNbaStatsGameRostersnba_stats_game_rosters1996+
loadNbaStatsLineupsnba_stats_lineups2007+
loadNbaStatsLineupsV3 (deprecated)nba_stats_game_lineups1996+
loadNbaStatsOfficialsnba_stats_officials1996+
loadNbaStatsPbpnba_stats_pbp1996+
loadNbaStatsPossessionsnba_stats_possessions1996+
loadNbaStatsGameLineupsnba_stats_game_lineups1996+
loadNbaStatsGameMatchupsnba_stats_game_matchups2017+
loadNbaStatsPbpV3 (deprecated)nba_stats_pbp1996+
loadNbaStatsPlayerBoxscoresnba_stats_player_boxscores1996+
loadNbaStatsPlayerGameLogsnba_stats_player_game_logs1996+
loadNbaStatsPlayerSeasonStatsnba_stats_player_season_stats1996+
loadNbaStatsPossessionsV3 (deprecated)nba_stats_possessions1996+
loadNbaStatsRostersnba_stats_rosters1996+
loadNbaStatsShotsnba_stats_shots1996+
loadNbaStatsStandingsnba_stats_standings1996+
loadNbaStatsTeamBoxscoresnba_stats_team_boxscores1996+
loadNbaStatsTeamSeasonStatsnba_stats_team_season_stats1996+
loadNbaPlayerCrosswalknba_crosswalk2026+
loadNbaScheduleCrosswalknba_crosswalk2026+
loadNbaTeamCrosswalknba_crosswalk2026+
loadNbaPlayerCoreespn_nba_player_core2002+
loadNbaPlayerImpactnba_player_impact1996+
loadNbaGroupsnba_groupsone asset
loadNbaGroupSeasonsnba_groupsone asset
loadNbaGroupAliasesnba_groupsone asset
loadNbaTeamGroupSeasonsnba_groups1971+

loadNbaPbp​

Release: espn_nba_pbp · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_pbp/play_by_play_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPbp({ seasons: 2024, columns: ['game_id', 'sequence_number', 'type_text', 'text', 'score_value'] });
// snake_case alias (py/R parity): sdv.nba.load_nba_pbp(...)

loadNbaPlayerBoxscore​

Release: espn_nba_player_boxscores · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_player_boxscores/player_box_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPlayerBoxscore({ seasons: 2024 });
// snake_case alias (py/R parity): sdv.nba.load_nba_player_boxscore(...)

loadNbaSchedule​

Release: espn_nba_schedules · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_schedules/nba_schedule_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaSchedule({ seasons: 2024 });
// snake_case alias (py/R parity): sdv.nba.load_nba_schedule(...)

loadNbaTeamBoxscore​

Release: espn_nba_team_boxscores · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_team_boxscores/team_box_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaTeamBoxscore({ seasons: 2024 });
// snake_case alias (py/R parity): sdv.nba.load_nba_team_boxscore(...)

loadNbaGameRosters​

Release: espn_nba_game_rosters · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_game_rosters/game_rosters_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaGameRosters({ seasons: 2002 });
// snake_case alias (py/R parity): sdv.nba.load_nba_game_rosters(...)

loadNbaOfficials​

Release: espn_nba_officials · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_officials/officials_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaOfficials({ seasons: 2002 });
// snake_case alias (py/R parity): sdv.nba.load_nba_officials(...)

loadNbaShots​

Release: espn_nba_shots · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_shots/shots_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaShots({ seasons: 2002 });
// snake_case alias (py/R parity): sdv.nba.load_nba_shots(...)

loadNbaStandings​

Release: espn_nba_standings · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_standings/standings_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStandings({ seasons: 2002 });
// snake_case alias (py/R parity): sdv.nba.load_nba_standings(...)

loadNbaPlayerSeasonStats​

Release: espn_nba_player_season_stats · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_player_season_stats/player_season_stats_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPlayerSeasonStats({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_player_season_stats(...)

loadNbaTeamSeasonStats​

Release: espn_nba_team_season_stats · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_team_season_stats/team_season_stats_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaTeamSeasonStats({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_team_season_stats(...)

loadNbaDraft​

Release: espn_nba_draft · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_draft/draft_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2003)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaDraft({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_draft(...)

loadNbaRosters​

Release: espn_nba_rosters · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_rosters/rosters_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2025)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaRosters({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_rosters(...)

loadNbaStatsSchedules​

Release: nba_stats_schedules · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_schedules/nba_schedule_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsSchedules({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_schedules(...)

loadNbaStatsCoaches​

Release: nba_stats_coaches · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_coaches/coaches_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsCoaches({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_coaches(...)

loadNbaStatsGameRosters​

Release: nba_stats_game_rosters · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_game_rosters/game_rosters_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsGameRosters({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_game_rosters(...)

loadNbaStatsLineups​

Release: nba_stats_lineups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_lineups/lineups_{season + 1}.parquet

Pass the season's START year (e.g. 2007 for the 2007-08 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2007)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsLineups({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_lineups(...)

loadNbaStatsLineupsV3​

Deprecated

Use loadNbaStatsGameLineups — same seasons convention. Emits a one-time DeprecationWarning.

Release: nba_stats_game_lineups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_game_lineups/nba_lineups_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsLineupsV3({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_lineups_v3(...)

loadNbaStatsOfficials​

Release: nba_stats_officials · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_officials/officials_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsOfficials({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_officials(...)

loadNbaStatsPbp​

Release: nba_stats_pbp · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_pbp/nba_play_by_play_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPbp({ seasons: 2025, columns: ['game_id', 'period', 'clock', 'event_type', 'description'] });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_pbp(...)

loadNbaStatsPossessions​

Release: nba_stats_possessions · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_possessions/nba_possessions_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPossessions({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_possessions(...)

loadNbaStatsGameLineups​

Release: nba_stats_game_lineups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_game_lineups/nba_lineups_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsGameLineups({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_game_lineups(...)

loadNbaStatsGameMatchups​

Release: nba_stats_game_matchups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_game_matchups/game_matchups_{season + 1}.parquet

Pass the season's START year (e.g. 2017 for the 2017-18 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2017)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsGameMatchups({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_game_matchups(...)

loadNbaStatsPbpV3​

Deprecated

Use loadNbaStatsPbp — same seasons convention. Emits a one-time DeprecationWarning.

Release: nba_stats_pbp · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_pbp/nba_play_by_play_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPbpV3({ seasons: 2025, columns: ['game_id', 'period', 'clock', 'event_type', 'description'] });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_pbp_v3(...)

loadNbaStatsPlayerBoxscores​

Release: nba_stats_player_boxscores · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_player_boxscores/player_boxscores_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPlayerBoxscores({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_player_boxscores(...)

loadNbaStatsPlayerGameLogs​

Release: nba_stats_player_game_logs · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_player_game_logs/player_game_logs_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPlayerGameLogs({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_player_game_logs(...)

loadNbaStatsPlayerSeasonStats​

Release: nba_stats_player_season_stats · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_player_season_stats/player_season_stats_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPlayerSeasonStats({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_player_season_stats(...)

loadNbaStatsPossessionsV3​

Deprecated

Use loadNbaStatsPossessions — same seasons convention. Emits a one-time DeprecationWarning.

Release: nba_stats_possessions · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_possessions/nba_possessions_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsPossessionsV3({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_possessions_v3(...)

loadNbaStatsRosters​

Release: nba_stats_rosters · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_rosters/rosters_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsRosters({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_rosters(...)

loadNbaStatsShots​

Release: nba_stats_shots · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_shots/shots_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsShots({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_shots(...)

loadNbaStatsStandings​

Release: nba_stats_standings · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_standings/standings_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsStandings({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_standings(...)

loadNbaStatsTeamBoxscores​

Release: nba_stats_team_boxscores · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_team_boxscores/team_boxscores_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsTeamBoxscores({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_team_boxscores(...)

loadNbaStatsTeamSeasonStats​

Release: nba_stats_team_season_stats · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_stats_team_season_stats/team_season_stats_{season + 1}.parquet

Pass the season's START year (e.g. 1996 for the 1996-97 season); the asset is keyed by the END year and the loader translates internally, so a season column in the rows carries that END year.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaStatsTeamSeasonStats({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_stats_team_season_stats(...)

loadNbaPlayerCrosswalk​

Release: nba_crosswalk · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_crosswalk/nba_player_crosswalk_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2026)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPlayerCrosswalk({ seasons: 2026 });
// snake_case alias (py/R parity): sdv.nba.load_nba_player_crosswalk(...)

loadNbaScheduleCrosswalk​

Release: nba_crosswalk · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_crosswalk/nba_schedule_crosswalk_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2026)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaScheduleCrosswalk({ seasons: 2026 });
// snake_case alias (py/R parity): sdv.nba.load_nba_schedule_crosswalk(...)

loadNbaTeamCrosswalk​

Release: nba_crosswalk · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_crosswalk/nba_team_crosswalk_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2026)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaTeamCrosswalk({ seasons: 2026 });
// snake_case alias (py/R parity): sdv.nba.load_nba_team_crosswalk(...)

loadNbaPlayerCore​

Release: espn_nba_player_core · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/espn_nba_player_core/player_core_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 2002)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPlayerCore({ seasons: 2025 });
// snake_case alias (py/R parity): sdv.nba.load_nba_player_core(...)

loadNbaPlayerImpact​

Release: nba_player_impact · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_player_impact/nba_player_impact_{season}.parquet

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1996)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaPlayerImpact({ seasons: 2024 });
// snake_case alias (py/R parity): sdv.nba.load_nba_player_impact(...)

loadNbaGroups​

Release: nba_groups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_groups/nba_groups.parquet

Coverage

One season-less file: one row per group lineage (the league, subdivisions, conferences, divisions) with the first and last season it had members. group_id is SDV's own id (e.g. nba:atlantic) and names a lineage: a rename that keeps continuity keeps the id, a new body gets a new one, and notes records each call. Seasons are the ENDING year (2025 = the 2024-25 season).

optiontyperequireddescription
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaGroups();
// snake_case alias (py/R parity): sdv.nba.load_nba_groups(...)

loadNbaGroupSeasons​

Release: nba_groups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_groups/nba_group_seasons.parquet

Coverage

One season-less file: one row per group per season it existed, with its name, short name, abbreviation and parent group AS OF that season (never today's label applied to the past) and its member count. season is the ENDING year (2025 = the 2024-25 season).

optiontyperequireddescription
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaGroupSeasons();
// snake_case alias (py/R parity): sdv.nba.load_nba_group_seasons(...)

loadNbaGroupAliases​

Release: nba_groups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_groups/nba_group_aliases.parquet

Coverage

One season-less file: every name, abbreviation, slug and source id that a source (espn, nba_stats, sdv) uses for a group, each with the seasons it is valid for (valid_from / valid_to, inclusive; null = unbounded). Match a source's conference or division label here to reach group_id.

optiontyperequireddescription
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaGroupAliases();
// snake_case alias (py/R parity): sdv.nba.load_nba_group_aliases(...)

loadNbaTeamGroupSeasons​

Release: nba_groups · asset https://github.com/sportsdataverse/sportsdataverse-data/releases/download/nba_groups/nba_team_group_seasons_{season}.parquet

Coverage

One row per team per season: the SDV subdivision, conference and division group ids the team belonged to that season (null where a level does not apply), the team name as of that season, where the membership came from, and whether a second source agreed (null when only one source covers the season). team_id is a string: the ESPN team id; team_id_source names the id space. season is the ENDING year (2025 = the 2024-25 season); seasons 1971-2027.

optiontyperequireddescription
seasonsnumber | number[]yesseason(s) to load (>= 1971)
columnsstring[]noread only these columns
format"rows" | "columns"norow objects (default) or column arrays
maxCellsnumbernosize guard; default scales with the heap, Infinity disables
timeoutMsnumbernodownload timeout in ms (default 300000)
const rows = await sdv.nba.loadNbaTeamGroupSeasons({ seasons: 2024 });
// snake_case alias (py/R parity): sdv.nba.load_nba_team_group_seasons(...)