NBA GraphQL Reference
Every NBA game across the 82-game regular season, the In-Season Tournament, the play-in round, and the four-round playoffs through the Finals — with the players, coaching staffs, depth charts, injuries, betting markets, and possession-level play-by-play behind them.
Every GraphQL type, relation, and argument — generated from the served schema, so it can never disagree with the API. Root fields take the same filters as REST; requests are metered by rows resolved, nested lists included.
Main
seasons
NbaSeasonsEach NBA league year, running from October through June — the 82-game regular season, the play-in tournament, and the four-round playoffs that end with the NBA Finals.
Relations
game_lines[NbaGameLines!]!nba.game_lines rows whoseseason_idreferences this row.game_period_lines[NbaGamePeriodLines!]!nba.game_period_lines rows whoseseason_idreferences this row.game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whoseseason_idreferences this row.games[NbaGames!]!nba.games rows whoseseason_idreferences this row.playoffs[NbaPlayoffs!]!nba.playoffs rows whoseseason_idreferences this row.season_player_stats[NbaSeasonPlayerStats!]!nba.season_player_stats rows whoseseason_idreferences this row.season_team_stats[NbaSeasonTeamStats!]!nba.season_team_stats rows whoseseason_idreferences this row.team_coaching_staffs[NbaTeamCoachingStaffs!]!nba.team_coaching_staffs rows whoseseason_idreferences this row.team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whoseseason_idreferences this row.team_game_contexts[NbaTeamGameContexts!]!nba.team_game_contexts rows whoseseason_idreferences this row.team_standings[NbaTeamStandings!]!nba.team_standings rows whoseseason_idreferences this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
Columns (8) — full docs in the data dictionary
id: BigInt
start_date: String
end_date: String
start_year: Int
regular_season_start_date: String
post_season_start_date: String
created_at: String
updated_at: String
teams
NbaTeamsThe 30 NBA franchises, organized into the Eastern and Western Conferences with three divisions in each.
Relations
stadiumNbaStadiumsThe nba.stadiums row referenced bystadium_id; null when unlinked.team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whoseteam_idreferences this row.team_standings[NbaTeamStandings!]!nba.team_standings rows whoseteam_idreferences this row.team_game_contexts_by_team_id[NbaTeamGameContexts!]!nba.team_game_contexts rows whoseteam_idreferences this row.game_team_lineup_stints[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseteam_idreferences this row.team_coaching_staffs[NbaTeamCoachingStaffs!]!nba.team_coaching_staffs rows whoseteam_idreferences this row.operator_team_lookups[NbaOperatorTeamLookups!]!nba.operator_team_lookups rows whoseteam_idreferences this row.players[NbaPlayers!]!nba.players rows whoseteam_idreferences this row.season_team_stats[NbaSeasonTeamStats!]!nba.season_team_stats rows whoseteam_idreferences this row.game_team_stats[NbaGameTeamStats!]!nba.game_team_stats rows whoseteam_idreferences this row.game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whoseteam_idreferences this row.player_news[NbaPlayerNews!]!nba.player_news rows whoseteam_idreferences this row.game_possessions[NbaGamePossessions!]!nba.game_possessions rows whoseteam_idreferences this row.play_by_plays_by_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseteam_idreferences this row.play_by_plays_by_player2_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseplayer2_team_idreferences this row.play_by_plays_by_player3_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseplayer3_team_idreferences this row.game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whoseteam_idreferences this row.games_by_home_team_id[NbaGames!]!nba.games rows whosehome_team_idreferences this row.games_by_away_team_id[NbaGames!]!nba.games rows whoseaway_team_idreferences this row.playoffs_by_home_team_id[NbaPlayoffs!]!nba.playoffs rows whosehome_team_idreferences this row.playoffs_by_away_team_id[NbaPlayoffs!]!nba.playoffs rows whoseaway_team_idreferences this row.team_game_contexts_by_opponent_team_id[NbaTeamGameContexts!]!nba.team_game_contexts rows whoseopponent_team_idreferences this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.activeBooleanFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
Columns (12) — full docs in the data dictionary
id: BigInt
abbreviation: String
city: String
league_team_id: Int
conference: String
division: String
full_name: String
name: String
active: Boolean
stadium_id: BigInt
created_at: String
updated_at: String
games
NbaGamesEvery scheduled and played NBA game from the 2020-21 season onward — preseason, the 82-game regular season, the In-Season Tournament, the play-in round, and the four-round playoffs through the NBA Finals. All-Star exhibitions are not included.
Required filters: one of
season_id.Relations
seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.home_team_refNbaTeamsThe nba.teams row referenced byhome_team_id; null when unlinked.away_team_refNbaTeamsThe nba.teams row referenced byaway_team_id; null when unlinked.stadiumNbaStadiumsThe nba.stadiums row referenced bystadium_id; null when unlinked.team_game_contexts[NbaTeamGameContexts!]!nba.team_game_contexts rows whosegame_idreferences this row.game_lines[NbaGameLines!]!nba.game_lines rows whosegame_idreferences this row.game_period_lines[NbaGamePeriodLines!]!nba.game_period_lines rows whosegame_idreferences this row.game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whosegame_idreferences this row.game_team_lineup_stints[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whosegame_idreferences this row.game_broadcasters[NbaGameBroadcasters!]!nba.game_broadcasters rows whosegame_idreferences this row.game_team_stats[NbaGameTeamStats!]!nba.game_team_stats rows whosegame_idreferences this row.game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whosegame_idreferences this row.game_referees[NbaGameReferees!]!nba.game_referees rows whosegame_idreferences this row.game_possessions[NbaGamePossessions!]!nba.game_possessions rows whosegame_idreferences this row.play_by_plays[NbaPlayByPlays!]!nba.play_by_plays rows whosegame_idreferences this row.game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whosegame_idreferences this row.
Arguments (11)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a season. Defaults to the current season.home_team_idIntFilter by home team.away_team_idIntFilter by away team.statusStringFilter by game status.dayIntFilter by calendar day (YYYYMMDD integer, US Eastern) — e.g. day=20260609 for tonight's slate. Note season_id defaults to the current season; pass season_id explicitly when querying a past season's day.day__gteIntgtecomparison onday.day__lteIntltecomparison onday.day__betweenStringRange filter onday— pass "lo,hi".season_typeStringFilter by season phase (regular_season, preseason, postseason, play_in, in_season_tournament, all_star).
Columns (30) — full docs in the data dictionary
id: BigInt
season_id: BigInt
game_time: String
league_game_id: String
home_team_id: BigInt
away_team_id: BigInt
status: String
start_time: String
end_time: String
season_type: String
day: Int
away_team: String
home_team: String
stadium_id: Int
channel: String
attendance: Int
away_team_score: Int
home_team_score: Int
home_rotation_number: Int
away_rotation_number: Int
neutral_venue: Boolean
series_name: String
if_necessary: Boolean
series_game_number: String
game_label: String
game_sub_label: String
series_text: String
postponed_status: String
created_at: String
updated_at: String
players
NbaPlayersEvery individual who has played in the NBA — current rosters, two-way and 10-day contracts, G-League call-ups, free agents, and retired veterans. The roster signal lives in
roster_status (the canonical cross-league vocabulary) and team_id (null for free agents and retired players). Pass ?team_id= to scope to one franchise's current roster, or omit it to scan the full historical roster pool.Required filters: one of
roster_status.Relations
teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whoseplayer_idreferences this row.game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whoseplayer_idreferences this row.game_team_lineup_stints_by_player1_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseplayer1_idreferences this row.game_team_lineup_stints_by_player2_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseplayer2_idreferences this row.game_team_lineup_stints_by_player3_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseplayer3_idreferences this row.game_team_lineup_stints_by_player4_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseplayer4_idreferences this row.game_team_lineup_stints_by_player5_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whoseplayer5_idreferences this row.operator_player_lookups[NbaOperatorPlayerLookups!]!nba.operator_player_lookups rows whoseplayer_idreferences this row.season_player_stats[NbaSeasonPlayerStats!]!nba.season_player_stats rows whoseplayer_idreferences this row.game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whoseplayer_idreferences this row.player_news[NbaPlayerNews!]!nba.player_news rows whoseplayer_idreferences this row.play_by_plays_by_player_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseplayer_idreferences this row.play_by_plays_by_player2_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseplayer2_idreferences this row.play_by_plays_by_player3_id[NbaPlayByPlays!]!nba.play_by_plays rows whoseplayer3_idreferences this row.game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whoseplayer_idreferences this row.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.team_idIntFilter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.roster_statusStringFilter by canonical roster status. Defaults to active (current roster); pass roster_status= explicitly for other tiers (injured_reserve, free_agent, retired, inactive). The "on a team now" set is {active, injured_reserve}.
Columns (42) — full docs in the data dictionary
id: BigInt
first_name: String
last_name: String
full_name: String
jersey: String
league_player_id: Int
primary_position: String
full_position_list: String
team_id: BigInt
league_slug: String
position_category: String
height: Int
weight: Int
birth_date: String
birth_city: String
birth_state: String
birth_country: String
school: String
experience: Int
display_last_comma_first: String
display_fi_last: String
last_affiliation: String
team_name: String
team_abbreviation: String
team_code: String
team_city: String
playercode: String
from_year: String
to_year: String
dleague_flag: String
nba_flag: String
games_played_flag: String
draft_year: String
draft_round: String
draft_number: String
roster_status: String
created_at: String
updated_at: String
injury_status: String
injury_body_part: String
injury_detail: String
injury_since: String
Plays
game_possessions
NbaGamePossessionsEach offensive possession in an NBA game (regular season, play-in, IST, and playoffs — no preseason) — which team had the ball, how the possession started, how it ended (made shot, missed shot, turnover, foul), and how long it lasted.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.play_by_plays[NbaPlayByPlays!]!nba.play_by_plays rows whosegame_possession_idreferences this row.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.team_idIntFilter by team in possession.
Columns (31) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
start_nba_event_num: Int
end_nba_event_num: Int
period: Int
home_score: Int
away_score: Int
start_clock: Int
end_clock: Int
created_at: String
updated_at: String
fga: Int
fgm: Int
fg3a: Int
fg3m: Int
fta: Int
ftm: Int
oreb: Int
dreb: Int
ast: Int
stl: Int
blk: Int
tov: Int
pf: Int
pts: Int
cum_home_poss: Int
cum_away_poss: Int
game_seconds_elapsed: Int
time_actual_start: String
time_actual_end: String
play_by_plays
NbaPlayByPlaysEvery individual event in every NBA game (regular season, play-in, IST, and playoffs — no preseason) — made and missed shots, rebounds, assists, fouls, turnovers, blocks, steals, substitutions, and timeouts, with the game clock at the moment. Period and score context live on game_possessions (FK game_possession_id).
Required filters: one of
game_id.Relations
game_possessionNbaGamePossessionsThe nba.game_possessions row referenced bygame_possession_id; null when unlinked.gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.player2NbaPlayersThe nba.players row referenced byplayer2_id; null when unlinked.player2_teamNbaTeamsThe nba.teams row referenced byplayer2_team_id; null when unlinked.player3NbaPlayersThe nba.players row referenced byplayer3_id; null when unlinked.player3_teamNbaTeamsThe nba.teams row referenced byplayer3_team_id; null when unlinked.
Arguments (6)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.player_idIntFilter to plays involving a specific player.team_idIntFilter to plays by a specific team.event_typeIntFilter by event type code: 1 made shot, 2 missed shot, 3 free throw, 4 rebound, 5 turnover, 6 foul, 7 violation, 8 substitution, 9 timeout, 10 jump ball, 11 ejection, 12 period start, 13 period end, 18 instant replay (stats.nba.com codes).
Columns (23) — full docs in the data dictionary
id: BigInt
play_id: String
nba_event_num: Int
game_possession_id: BigInt
game_id: BigInt
player_id: BigInt
team_id: BigInt
event_type: Int
event_sub_type: Int
home_description: String
visitor_description: String
neutral_description: String
start_clock: Int
end_clock: Int
player2_id: BigInt
player2_team_id: BigInt
player3_id: BigInt
player3_team_id: BigInt
created_at: String
updated_at: String
time_actual: String
event_seq: Int
possession_seq: Int
Stats
operator_team_lookups
NbaOperatorTeamLookupsHow each sportsbook and fantasy operator names every NBA team — the mapping from each operator's team code to the unified franchise record.
Required filters: one of
operator_id.Relations
operatorReferenceOperatorsThe main.operators row referenced byoperator_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.operator_idIntFilter by operator.team_idIntFilter by team.
Columns (8) — full docs in the data dictionary
id: BigInt
operator_id: BigInt
operator_team_id: String
team_id: BigInt
team_name: String
abbreviation: String
created_at: String
updated_at: String
season_team_stats
NbaSeasonTeamStatsSeason totals for each NBA team — wins and losses, points scored and allowed, pace, offensive and defensive ratings, rebounding margins, shooting splits, and turnover differentials. Regular-season games only; playoff, play-in, and preseason totals are not included.
Required filters: one of
season_id.Relations
seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a single season. Defaults to the current season.team_idIntFilter by team.
Columns (11) — full docs in the data dictionary
id: BigInt
team_id: BigInt
season_id: BigInt
games_played: Int
wins: Int
losses: Int
ties: Int
pts_scored: Int
pts_allowed: Int
created_at: String
updated_at: String
team_standings
NbaTeamStandingsConference and division standings throughout the NBA season — wins, losses, win percentage, games behind, last-10 record, win/loss streak, and home/away splits as of each date.
Required filters: one of
season_id.Relations
teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (8)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a single season. Defaults to the current season.team_idIntFilter by team.dayIntStandings as of this day (YYYYMMDD integer). Omit for all daily snapshots, newest first; pass a day for a point-in-time table.day__gteIntgtecomparison onday.day__lteIntltecomparison onday.day__betweenStringRange filter onday— pass "lo,hi".
Columns (23) — full docs in the data dictionary
id: BigInt
season_id: BigInt
team_id: BigInt
day: Int
wins: Int
losses: Int
win_pct: Float
conference_rank: Int
division_rank: Int
conference_gb: Float
playoff_gb: Float
playin_gb: Float
games_played: Int
games_remaining: Int
l10_wins: Int
l10_losses: Int
streak: Int
home_wins: Int
home_losses: Int
away_wins: Int
away_losses: Int
created_at: String
updated_at: String
game_player_stats
NbaGamePlayerStatsEach NBA player's stat line for each game — points, rebounds, assists, steals, blocks, shooting line, three-point line, free-throw line, plus-minus, and minutes played.
Required filters: one of
game_id | player_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.
Arguments (9)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.player_idIntFilter to a single player — their full game log, newest first. Combine with game_date ranges to window it.team_idIntFilter by team.game_dateIntFilter by game day (YYYYMMDD integer, US Eastern).game_date__gteIntgtecomparison ongame_date.game_date__lteIntltecomparison ongame_date.game_date__betweenStringRange filter ongame_date— pass "lo,hi".
Columns (118) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
player_id: BigInt
comment: String
start_position: String
minutes: Float
pts: Int
assists: Int
rebounds: Int
steals: Int
blocks: Int
turnovers: Int
fouls: Int
field_goals_made: Int
field_goals_attempted: Int
three_pointers_made: Int
three_pointers_attempted: Int
free_throws_made: Int
free_throws_attempted: Int
offensive_rebounds: Int
defensive_rebounds: Int
potential_assists: Int
shots_blocked: Int
deflections: Int
contests: Int
charges_taken: Int
passes_deflected: Int
balls_stolen: Int
loose_balls_recovered: Int
personal_fouls: Int
offensive_fouls: Int
technical_fouls: Int
flagrant_fouls_type_1: Int
flagrant_fouls_type_2: Int
clear_path_fouls: Int
fouls_drawn: Int
and_ones: Int
traveling_violations: Int
double_dribble_violations: Int
carrying_palming_violations: Int
backcourt_violations: Int
shot_clock_violations: Int
lane_violations: Int
goaltending_violations: Int
basket_interference_violations: Int
substitutions_in: Int
substitutions_out: Int
jump_balls_won: Int
jump_balls_lost: Int
timeouts_called: Int
challenges_requested: Int
shot_contested_count: Int
dunks: Int
layups: Int
alley_oops: Int
put_backs: Int
fast_break_pts: Int
second_chance_pts: Int
hockey_assists: Int
screen_assists: Int
box_outs: Int
ejections: Int
plus_minus: Int
field_goal_percentage: Float
three_point_percentage: Float
free_throw_percentage: Float
triple_doubles: Int
double_doubles: Int
estimated_offensive_rating: Float
offensive_rating: Float
estimated_defensive_rating: Float
defensive_rating: Float
estimated_net_rating: Float
net_rating: Float
assist_percentage: Float
assist_to_turnover: Float
assist_ratio: Float
offensive_rebound_percentage: Float
defensive_rebound_percentage: Float
rebound_percentage: Float
turnover_ratio: Float
effective_field_goal_percentage: Float
true_shooting_percentage: Float
usage_percentage: Float
estimated_usage_percentage: Float
estimated_pace: Float
possessions: Int
touches: Int
front_court_touches: Int
avg_seconds_per_touch: Float
avg_dribbles_per_touch: Float
elbow_touches: Int
paint_touches: Int
time_of_possession: Float
post_touches: Int
pts_per_touch: Float
pts_per_elbow_touch: Float
pts_per_post_touch: Float
pts_per_paint_touch: Float
player_impact_estimate: Float
drives: Int
passes: Int
pass_percentage: Float
created_at: String
updated_at: String
game_date: Int
rotation_context: String
foul_trouble_severity: Int
abnormal_exit_period: Int
abnormal_exit_clock: Int
garbage_time_minutes: Float
competitive_minutes: Float
rotation_context_confidence: Float
minutes_deviation_pct: Float
role_archetype: String
role_archetype_confidence: Float
role_anomalous_game: Boolean
game_team_stats
NbaGameTeamStatsEach NBA team's stat line for each game — the same offensive, defensive, rebounding, and shooting counters as the season aggregate, broken out per game with home/away context.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.team_idIntFilter by team.
Columns (72) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
win: Int
loss: Int
minutes: Int
pts: Int
assists: Int
rebounds: Int
steals: Int
blocks: Int
turnovers: Int
fouls: Int
field_goals_made: Int
field_goals_attempted: Int
field_goal_percentage: Float
three_pointers_made: Int
three_pointers_attempted: Int
three_point_percentage: Float
free_throws_made: Int
free_throws_attempted: Int
free_throw_percentage: Float
offensive_rebounds: Int
defensive_rebounds: Int
fast_break_pts: Int
pts_in_paint: Int
second_chance_pts: Int
pts_off_turnovers: Int
bench_pts: Int
timeouts_remaining: Int
assists_to_turnovers: Float
steals_to_turnovers: Float
defensive_rating: Float
offensive_rating: Float
net_rating: Float
assist_percentage: Float
assist_ratio: Float
offensive_rebound_percentage: Float
defensive_rebound_percentage: Float
rebound_percentage: Float
turnover_percentage: Float
possessions: Int
pace: Float
pace_per40: Float
true_shooting_percentage: Float
effective_field_goal_percentage: Float
player_impact_estimate: Float
estimated_offensive_rating: Float
estimated_defensive_rating: Float
estimated_net_rating: Float
estimated_pace: Float
free_throw_attempt_rate: Float
pct_fga_2pt: Float
pct_fga_3pt: Float
pct_pts_2pt: Float
pct_pts_2pt_mr: Float
pct_pts_3pt: Float
pct_pts_fb: Float
pct_pts_ft: Float
pct_pts_off_tov: Float
pct_pts_paint: Float
pct_ast_2pm: Float
pct_uast_2pm: Float
pct_ast_3pm: Float
pct_uast_3pm: Float
pct_ast_fgm: Float
pct_uast_fgm: Float
created_at: String
updated_at: String
wins: Int
losses: Int
conference_rank: Int
operator_player_lookups
NbaOperatorPlayerLookupsHow each sportsbook and fantasy operator names every NBA player — the mapping from each operator's player identifier to a unified player record.
Required filters: one of
operator_id.Relations
operatorReferenceOperatorsThe main.operators row referenced byoperator_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.operator_idIntFilter by operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io, 83 stats.nba.com.player_idIntFilter to a single player.
Columns (8) — full docs in the data dictionary
id: BigInt
operator_id: BigInt
operator_player_id: String
player_id: BigInt
player_name: String
position: String
created_at: String
updated_at: String
season_player_stats
NbaSeasonPlayerStatsSeason totals for each NBA player — scoring, rebounding, assists, steals, blocks, shooting splits, advanced metrics, plus-minus, and minutes played. Regular-season games only; playoff, play-in, and preseason totals are not included. Players traded mid-season have one merged row (no per-team split).
Required filters: one of
season_id | player_id.Relations
seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.season_idIntFilter to a single season. Defaults to the current season.player_idIntFilter to a single player.
Columns (51) — full docs in the data dictionary
id: BigInt
player_id: BigInt
season_id: BigInt
games_played: Int
created_at: String
updated_at: String
wins: Int
losses: Int
minutes: Float
pts: Int
assists: Int
rebounds: Int
steals: Int
blocks: Int
turnovers: Int
fouls: Int
field_goals_made: Int
field_goals_attempted: Int
three_pointers_made: Int
three_pointers_attempted: Int
free_throws_made: Int
free_throws_attempted: Int
offensive_rebounds: Int
defensive_rebounds: Int
plus_minus: Int
double_doubles: Int
triple_doubles: Int
field_goal_percentage: Float
three_point_percentage: Float
free_throw_percentage: Float
offensive_rating: Float
defensive_rating: Float
net_rating: Float
assist_percentage: Float
assist_to_turnover: Float
assist_ratio: Float
offensive_rebound_percentage: Float
defensive_rebound_percentage: Float
rebound_percentage: Float
turnover_percentage: Float
effective_field_goal_percentage: Float
true_shooting_percentage: Float
usage_percentage: Float
pace: Float
player_impact_estimate: Float
possessions: Int
touches: Int
front_court_touches: Int
time_of_possession: Float
avg_seconds_per_touch: Float
avg_dribbles_per_touch: Float
Odds
game_lines
NbaGameLinesNBA game betting lines — point spreads, moneylines, and over/under totals from sportsbooks, captured over time as the lines move from opening to closing.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.operatorReferenceOperatorsThe main.operators row referenced byoperator_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (6)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.season_idIntFilter by season.operator_idIntFilter by sportsbook id: 6 Consensus (full history), 1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET (per-book rows begin 2026-05).is_openingBooleanFilter to opening lines only. Reliable from the 2025-26 season; earlier seasons largely lack opener flags.
Columns (32) — full docs in the data dictionary
id: BigInt
game_id: BigInt
season_id: BigInt
operator_id: BigInt
spread: Float
spread_home_odds: Int
spread_away_odds: Int
moneyline_home: Int
moneyline_away: Int
total: Float
over_odds: Int
under_odds: Int
implied_home_score: Float
implied_away_score: Float
implied_home_win_pct: Float
implied_away_win_pct: Float
captured_at: String
is_opening: Boolean
created_at: String
updated_at: String
spread_bet_pct_home: Int
spread_bet_pct_away: Int
spread_money_pct_home: Int
spread_money_pct_away: Int
moneyline_bet_pct_home: Int
moneyline_bet_pct_away: Int
moneyline_money_pct_home: Int
moneyline_money_pct_away: Int
total_bet_pct_over: Int
total_bet_pct_under: Int
total_money_pct_over: Int
total_money_pct_under: Int
game_period_lines
NbaGamePeriodLinesPeriod-specific NBA betting lines — first-half, second-half, and individual-quarter spreads, moneylines, and totals offered alongside the full-game markets.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.operatorReferenceOperatorsThe main.operators row referenced byoperator_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (6)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.season_idIntFilter by season.operator_idIntFilter by sportsbook.period_codeStringFilter by period (1H, 2H, Q1, Q2, Q3, Q4).
Columns (19) — full docs in the data dictionary
id: BigInt
game_id: BigInt
season_id: BigInt
operator_id: BigInt
period_code: String
spread: Float
spread_home_odds: Int
spread_away_odds: Int
moneyline_home: Int
moneyline_away: Int
total: Float
over_odds: Int
under_odds: Int
implied_home_win_pct: Float
implied_away_win_pct: Float
captured_at: String
is_opening: Boolean
created_at: String
updated_at: String
game_player_props
NbaGamePlayerPropsNBA player prop bets for each game — points, rebounds, assists, threes made, steals, blocks, and other player-statistic markets offered by sportsbooks.
Required filters: one of
game_id | player_id + season_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.operatorReferenceOperatorsThe main.operators row referenced byoperator_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (8)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.player_idIntFilter to a single player. With season_id: the player's prop history across a season.season_idIntFilter by season.operator_idIntFilter by sportsbook. Historical rows are operator 6 (Consensus); per-book rows (1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET) begin 2026-05.categoryStringFilter by prop category (points, rebounds, assists, pra, etc.).market_keyStringFilter by raw market key (e.g., player_points).
Columns (20) — full docs in the data dictionary
id: BigInt
game_id: BigInt
player_id: BigInt
season_id: BigInt
operator_id: BigInt
category: String
market_key: String
subcategory: String
period_code: String
outcome_type: String
line: Float
over_odds: Int
under_odds: Int
yes_odds: Int
no_odds: Int
book_count: Int
captured_at: String
is_opening: Boolean
created_at: String
updated_at: String
Lineups & Roster
coaching_staffs
NbaCoachingStaffsNBA coaches and staff — head coaches, lead assistants, player-development coaches, and other basketball-operations staff who appear on team benches.
Relations
team_coaching_staffs[NbaTeamCoachingStaffs!]!nba.team_coaching_staffs rows whosecoaching_staff_idreferences this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
Columns (7) — full docs in the data dictionary
id: BigInt
first_name: String
last_name: String
name: String
coach_id: Int
created_at: String
updated_at: String
team_coaching_staffs
NbaTeamCoachingStaffsThe coaching staff each NBA team carries through the season — head coach, assistants, trainers — with the dates each staff member started and ended their tenure.
Required filters: one of
team_id.Relations
teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.coaching_staffNbaCoachingStaffsThe nba.coaching_staffs row referenced bycoaching_staff_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.team_idIntFilter by team.season_idIntFilter to a season.coach_typeStringFilter by coach role (Head Coach, Assistant Coach, Trainer).
Columns (11) — full docs in the data dictionary
id: BigInt
team_id: BigInt
season_id: BigInt
coach_type: String
is_assistant: Boolean
sort_sequence: Int
created_at: String
updated_at: String
start_date: String
end_date: String
coaching_staff_id: BigInt
game_team_lineup_stints
NbaGameTeamLineupStintsEach continuous stretch an NBA team had the same five players on the floor (regular season, play-in, IST, and playoffs — no preseason) — the five-man unit, when it started and ended, and the team's net production while it was in.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.player1NbaPlayersThe nba.players row referenced byplayer1_id; null when unlinked.player2NbaPlayersThe nba.players row referenced byplayer2_id; null when unlinked.player3NbaPlayersThe nba.players row referenced byplayer3_id; null when unlinked.player4NbaPlayersThe nba.players row referenced byplayer4_id; null when unlinked.player5NbaPlayersThe nba.players row referenced byplayer5_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.team_idIntFilter by team.
Columns (27) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
period: Int
player1_id: BigInt
player2_id: BigInt
player3_id: BigInt
player4_id: BigInt
player5_id: BigInt
start_clock: Int
end_clock: Int
start_event_seq: Int
end_event_seq: Int
possessions: Int
pts_scored: Int
pts_allowed: Int
created_at: String
updated_at: String
pace: Float
offensive_rating: Float
defensive_rating: Float
net_rating: Float
offensive_rebound_pct: Float
defensive_rebound_pct: Float
assist_pct: Float
turnover_pct: Float
player_stats: JSON
game_team_rosters
NbaGameTeamRostersThe gameday roster for each NBA game — every player available that night, who started, who sat, and who was on a minutes restriction, with the pre-tip snapshot and the reconciled post-game truth side by side.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.team_idIntFilter by team.player_idIntFilter to a single player.
Columns (17) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
player_id: BigInt
position: String
comment: String
day: Int
created_at: String
updated_at: String
pre_game_status: Int
pre_game_starter: Boolean
pre_game_injury_status: String
pre_game_confirmed: Boolean
status: Int
starter: Boolean
injury_status: String
confirmed: Boolean
team_depth_charts
NbaTeamDepthChartsEach NBA team's depth chart by position on each date — the starter, second-unit, and bench order at point guard, shooting guard, small forward, power forward, and center, with injury designations layered in.
Required filters: one of
team_id + season_id.Relations
teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.
Arguments (9)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.team_idIntFilter by team.season_idIntFilter to a season. Defaults to the current season.positionStringFilter by position (PG, SG, SF, PF, C).dayIntSnapshot day (YYYYMMDD integer). The table holds one snapshot per day; pass the latest day for the current depth chart.day__gteIntgtecomparison onday.day__lteIntltecomparison onday.day__betweenStringRange filter onday— pass "lo,hi".
Columns (10) — full docs in the data dictionary
id: BigInt
team_id: BigInt
player_id: BigInt
season_id: BigInt
day: Int
position: String
depth_rank: Int
injury_status: String
created_at: String
updated_at: String
Misc
stadiums
NbaStadiumsNBA arenas — current home venues and historical buildings the league's teams have played in.
Relations
teams[NbaTeams!]!nba.teams rows whosestadium_idreferences this row.games[NbaGames!]!nba.games rows whosestadium_idreferences this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
Columns (21) — full docs in the data dictionary
id: BigInt
name: String
league_stadium_id: Int
longitude: Float
latitude: Float
elevation: Float
description: String
city: String
state: String
country: String
capacity: Int
surface: String
roof_type: String
opened_date: String
closed_date: String
team_name: String
timezone: String
address: String
image_url: String
created_at: String
updated_at: String
referees
NbaRefereesNBA officials — the three-person crew of referees who work each game.
Relations
game_referees[NbaGameReferees!]!nba.game_referees rows whosereferee_idreferences this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.activeBooleanFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
Columns (15) — full docs in the data dictionary
id: BigInt
first_name: String
last_name: String
full_name: String
jersey_number: String
nba_referee_id: Int
experience: Int
active: Boolean
birth_date: String
birth_city: String
birth_state: String
birth_country: String
college: String
created_at: String
updated_at: String
broadcasters
NbaBroadcastersNetworks, regional sports networks, and streaming services that air NBA games — ESPN, TNT, ABC, NBA TV, plus team-local RSNs like YES, MSG, and Bally Sports.
Relations
game_broadcasters[NbaGameBroadcasters!]!nba.game_broadcasters rows whosebroadcaster_idreferences this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
Columns (14) — full docs in the data dictionary
id: BigInt
broadcaster_scope: String
broadcaster_media: String
broadcaster_id: Int
broadcaster_display: String
broadcaster_abbreviation: String
broadcaster_description: String
tape_delay_comments: String
broadcaster_video_link: String
region_id: Int
broadcaster_team_id: Int
broadcaster_ranking: Int
created_at: String
updated_at: String
playoffs
NbaPlayoffsThe NBA postseason bracket — the play-in tournament, the four conference series rounds, and the NBA Finals, tracked as best-of-seven matchups with seeds, wins, and outcomes.
Relations
seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.home_teamNbaTeamsThe nba.teams row referenced byhome_team_id; null when unlinked.away_teamNbaTeamsThe nba.teams row referenced byaway_team_id; null when unlinked.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
Columns (14) — full docs in the data dictionary
id: BigInt
season_id: BigInt
series_id: BigInt
series_name: String
home_team_id: BigInt
away_team_id: BigInt
home_team_wins: Int
away_team_wins: Int
games_played: Int
max_games: Int
status: String
series_text: String
created_at: String
updated_at: String
game_broadcasters
NbaGameBroadcastersWhich networks broadcast each NBA game — the national TV partner, home and away regional carriers, radio calls, and streaming providers.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.broadcasterNbaBroadcastersThe nba.broadcasters row referenced bybroadcaster_id; null when unlinked.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.broadcaster_idIntFilter by broadcaster.broadcaster_typeStringFilter by broadcaster role.
Columns (6) — full docs in the data dictionary
id: BigInt
game_id: BigInt
broadcaster_id: BigInt
broadcaster_type: String
created_at: String
updated_at: String
game_referees
NbaGameRefereesThe officiating crew assigned to each NBA game — the three referees who worked the matchup.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.refereeNbaRefereesThe nba.referees row referenced byreferee_id; null when unlinked.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.referee_idIntFilter by referee.
Columns (6) — full docs in the data dictionary
id: BigInt
game_id: BigInt
referee_id: BigInt
position: String
created_at: String
updated_at: String
player_news
NbaPlayerNewsNews about NBA players — trades, injuries, lineup decisions, suspensions, and general beat-reporter updates.
Required filters: one of
player_id | team_id.Relations
playerNbaPlayersThe nba.players row referenced byplayer_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.
Arguments (9)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.player_idIntFilter to news about a single player.team_idIntFilter by team — a team-level news feed, newest first.categoryStringFilter by news category (injury, transaction, lineup, general).news_timeStringFilter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check.news_time__gteStringgtecomparison onnews_time.news_time__lteStringltecomparison onnews_time.news_time__betweenStringRange filter onnews_time— pass "lo,hi".
Columns (18) — full docs in the data dictionary
id: BigInt
player_id: BigInt
team_id: BigInt
title: String
description: String
analysis: String
source: String
link: String
news_time: String
priority: Int
created_at: String
updated_at: String
content: String
category: String
external_id: String
ai_processed: Boolean
situational_impact: JSON
team_game_contexts
NbaTeamGameContextsSituational context for each NBA team in each game — how much the game matters (playoff push, tanking, contender mode, In-Season Tournament stakes), what phase of the season it's in, and how far along the schedule the team is.
Required filters: one of
game_id.Relations
gameNbaGamesThe nba.games row referenced bygame_id; null when unlinked.teamNbaTeamsThe nba.teams row referenced byteam_id; null when unlinked.seasonNbaSeasonsThe nba.seasons row referenced byseason_id; null when unlinked.opponent_teamNbaTeamsThe nba.teams row referenced byopponent_team_id; null when unlinked.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.game_idIntFilter to a single game.team_idIntFilter by team.season_idIntFilter by season.
Columns (22) — full docs in the data dictionary
id: BigInt
game_id: BigInt
team_id: BigInt
season_id: BigInt
opponent_team_id: BigInt
motivation: String
intensity: Int
season_phase: String
season_pct: Float
game_type: String
conference_rank: Int
win_pct: Float
games_remaining: Int
team_series_wins: Int
is_elimination: Boolean
is_clinch: Boolean
ist_group_rank: Int
ist_group_record: String
rest_days: Int
is_back_to_back: Boolean
created_at: String
updated_at: String