Skip to contents

A tidy player dictionary (id, name, team, bio, headshot URL) sourced from the stats.nba.com player index. Handy for joining player ids to names/teams and for fetching headshots.

Usage

nba_player_dict(season = year_to_season(most_recent_nba_season() - 1), ...)

Arguments

season

Season in "YYYY-YY" form. Defaults to the most recent completed season.

...

Additional arguments passed to nba_playerindex() (e.g. proxy).

Value

A hoopR_data tibble with one row per player:

col_nametypesdescription
player_idcharacterPlayer id (PERSON_ID).
player_namecharacterFull name.
player_slugcharacterURL-safe player slug.
team_idcharacterTeam id.
team_abbreviationcharacterTeam abbreviation.
team_namecharacterFull team name.
positioncharacterListed position.
jersey_numbercharacterJersey number.
heightcharacterListed height.
weightcharacterListed weight.
countrycharacterCountry.
draft_yearcharacterDraft year.
from_yearcharacterFirst season.
to_yearcharacterMost recent season.
headshot_urlcharacterNBA CDN headshot URL.
seasoncharacterSeason (echoes the season argument).

See also

Examples

# \donttest{
  try(nba_player_dict())
#>  2026-06-13 07:30:55.110313: Invalid arguments or no player index data for 2025-26 available!
#>  Args: college = "", country = "", draft_pick = "", draft_round = "", draft_year = "", height = "", historical = 1, league_id = "00", season = "2025-26", season_type = "Regular Season", team_id = "0", weight = ""
#>  Error: Failed to perform HTTP request. Caused by error in `curl::curl_fetch_memory()`: ! Timeout was reached [stats.nba.com]: Operation timed out after 60000 milliseconds with 0 bytes received
#>  2026-06-13 07:30:55.122188: No NBA player dictionary for 2025-26 available!
#>  Args: season = "2025-26"
#>  Error: No player index returned
#> data frame with 0 columns and 0 rows
# }