STAT-API

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

seasonsNbaSeasons
Each 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 whose season_id references this row.
  • game_period_lines[NbaGamePeriodLines!]!nba.game_period_lines rows whose season_id references this row.
  • game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whose season_id references this row.
  • games[NbaGames!]!nba.games rows whose season_id references this row.
  • playoffs[NbaPlayoffs!]!nba.playoffs rows whose season_id references this row.
  • season_player_stats[NbaSeasonPlayerStats!]!nba.season_player_stats rows whose season_id references this row.
  • season_team_stats[NbaSeasonTeamStats!]!nba.season_team_stats rows whose season_id references this row.
  • team_coaching_staffs[NbaTeamCoachingStaffs!]!nba.team_coaching_staffs rows whose season_id references this row.
  • team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whose season_id references this row.
  • team_game_contexts[NbaTeamGameContexts!]!nba.team_game_contexts rows whose season_id references this row.
  • team_standings[NbaTeamStandings!]!nba.team_standings rows whose season_id references 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
teamsNbaTeams
The 30 NBA franchises, organized into the Eastern and Western Conferences with three divisions in each.
Relations
  • stadiumNbaStadiumsThe nba.stadiums row referenced by stadium_id; null when unlinked.
  • team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whose team_id references this row.
  • team_standings[NbaTeamStandings!]!nba.team_standings rows whose team_id references this row.
  • team_game_contexts_by_team_id[NbaTeamGameContexts!]!nba.team_game_contexts rows whose team_id references this row.
  • game_team_lineup_stints[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose team_id references this row.
  • team_coaching_staffs[NbaTeamCoachingStaffs!]!nba.team_coaching_staffs rows whose team_id references this row.
  • operator_team_lookups[NbaOperatorTeamLookups!]!nba.operator_team_lookups rows whose team_id references this row.
  • players[NbaPlayers!]!nba.players rows whose team_id references this row.
  • season_team_stats[NbaSeasonTeamStats!]!nba.season_team_stats rows whose team_id references this row.
  • game_team_stats[NbaGameTeamStats!]!nba.game_team_stats rows whose team_id references this row.
  • game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whose team_id references this row.
  • player_news[NbaPlayerNews!]!nba.player_news rows whose team_id references this row.
  • game_possessions[NbaGamePossessions!]!nba.game_possessions rows whose team_id references this row.
  • play_by_plays_by_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whose team_id references this row.
  • play_by_plays_by_player2_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whose player2_team_id references this row.
  • play_by_plays_by_player3_team_id[NbaPlayByPlays!]!nba.play_by_plays rows whose player3_team_id references this row.
  • game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whose team_id references this row.
  • games_by_home_team_id[NbaGames!]!nba.games rows whose home_team_id references this row.
  • games_by_away_team_id[NbaGames!]!nba.games rows whose away_team_id references this row.
  • playoffs_by_home_team_id[NbaPlayoffs!]!nba.playoffs rows whose home_team_id references this row.
  • playoffs_by_away_team_id[NbaPlayoffs!]!nba.playoffs rows whose away_team_id references this row.
  • team_game_contexts_by_opponent_team_id[NbaTeamGameContexts!]!nba.team_game_contexts rows whose opponent_team_id references 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
gamesNbaGames
Every 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 by season_id; null when unlinked.
  • home_team_refNbaTeamsThe nba.teams row referenced by home_team_id; null when unlinked.
  • away_team_refNbaTeamsThe nba.teams row referenced by away_team_id; null when unlinked.
  • stadiumNbaStadiumsThe nba.stadiums row referenced by stadium_id; null when unlinked.
  • team_game_contexts[NbaTeamGameContexts!]!nba.team_game_contexts rows whose game_id references this row.
  • game_lines[NbaGameLines!]!nba.game_lines rows whose game_id references this row.
  • game_period_lines[NbaGamePeriodLines!]!nba.game_period_lines rows whose game_id references this row.
  • game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whose game_id references this row.
  • game_team_lineup_stints[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose game_id references this row.
  • game_broadcasters[NbaGameBroadcasters!]!nba.game_broadcasters rows whose game_id references this row.
  • game_team_stats[NbaGameTeamStats!]!nba.game_team_stats rows whose game_id references this row.
  • game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whose game_id references this row.
  • game_referees[NbaGameReferees!]!nba.game_referees rows whose game_id references this row.
  • game_possessions[NbaGamePossessions!]!nba.game_possessions rows whose game_id references this row.
  • play_by_plays[NbaPlayByPlays!]!nba.play_by_plays rows whose game_id references this row.
  • game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whose game_id references 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__gteIntgte comparison on day.
  • day__lteIntlte comparison on day.
  • day__betweenStringRange filter on day — 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
playersNbaPlayers
Every 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 by team_id; null when unlinked.
  • team_depth_charts[NbaTeamDepthCharts!]!nba.team_depth_charts rows whose player_id references this row.
  • game_player_props[NbaGamePlayerProps!]!nba.game_player_props rows whose player_id references this row.
  • game_team_lineup_stints_by_player1_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose player1_id references this row.
  • game_team_lineup_stints_by_player2_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose player2_id references this row.
  • game_team_lineup_stints_by_player3_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose player3_id references this row.
  • game_team_lineup_stints_by_player4_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose player4_id references this row.
  • game_team_lineup_stints_by_player5_id[NbaGameTeamLineupStints!]!nba.game_team_lineup_stints rows whose player5_id references this row.
  • operator_player_lookups[NbaOperatorPlayerLookups!]!nba.operator_player_lookups rows whose player_id references this row.
  • season_player_stats[NbaSeasonPlayerStats!]!nba.season_player_stats rows whose player_id references this row.
  • game_player_stats[NbaGamePlayerStats!]!nba.game_player_stats rows whose player_id references this row.
  • player_news[NbaPlayerNews!]!nba.player_news rows whose player_id references this row.
  • play_by_plays_by_player_id[NbaPlayByPlays!]!nba.play_by_plays rows whose player_id references this row.
  • play_by_plays_by_player2_id[NbaPlayByPlays!]!nba.play_by_plays rows whose player2_id references this row.
  • play_by_plays_by_player3_id[NbaPlayByPlays!]!nba.play_by_plays rows whose player3_id references this row.
  • game_team_rosters[NbaGameTeamRosters!]!nba.game_team_rosters rows whose player_id references 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_possessionsNbaGamePossessions
Each 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • play_by_plays[NbaPlayByPlays!]!nba.play_by_plays rows whose game_possession_id references 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_playsNbaPlayByPlays
Every 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 by game_possession_id; null when unlinked.
  • gameNbaGamesThe nba.games row referenced by game_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • player2NbaPlayersThe nba.players row referenced by player2_id; null when unlinked.
  • player2_teamNbaTeamsThe nba.teams row referenced by player2_team_id; null when unlinked.
  • player3NbaPlayersThe nba.players row referenced by player3_id; null when unlinked.
  • player3_teamNbaTeamsThe nba.teams row referenced by player3_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_lookupsNbaOperatorTeamLookups
How 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 by operator_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_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_statsNbaSeasonTeamStats
Season 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 by season_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_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_standingsNbaTeamStandings
Conference 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 by team_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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__gteIntgte comparison on day.
  • day__lteIntlte comparison on day.
  • day__betweenStringRange filter on day — 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_statsNbaGamePlayerStats
Each 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_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__gteIntgte comparison on game_date.
  • game_date__lteIntlte comparison on game_date.
  • game_date__betweenStringRange filter on game_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_statsNbaGameTeamStats
Each 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_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_lookupsNbaOperatorPlayerLookups
How 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 by operator_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_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_statsNbaSeasonPlayerStats
Season 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 by season_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_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_linesNbaGameLines
NBA 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 by game_id; null when unlinked.
  • operatorReferenceOperatorsThe main.operators row referenced by operator_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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_linesNbaGamePeriodLines
Period-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 by game_id; null when unlinked.
  • operatorReferenceOperatorsThe main.operators row referenced by operator_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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_propsNbaGamePlayerProps
NBA 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 by game_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_id; null when unlinked.
  • operatorReferenceOperatorsThe main.operators row referenced by operator_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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_staffsNbaCoachingStaffs
NBA 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 whose coaching_staff_id references 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_staffsNbaTeamCoachingStaffs
The 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 by team_id; null when unlinked.
  • coaching_staffNbaCoachingStaffsThe nba.coaching_staffs row referenced by coaching_staff_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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_stintsNbaGameTeamLineupStints
Each 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • player1NbaPlayersThe nba.players row referenced by player1_id; null when unlinked.
  • player2NbaPlayersThe nba.players row referenced by player2_id; null when unlinked.
  • player3NbaPlayersThe nba.players row referenced by player3_id; null when unlinked.
  • player4NbaPlayersThe nba.players row referenced by player4_id; null when unlinked.
  • player5NbaPlayersThe nba.players row referenced by player5_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_rostersNbaGameTeamRosters
The 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_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_chartsNbaTeamDepthCharts
Each 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 by team_id; null when unlinked.
  • playerNbaPlayersThe nba.players row referenced by player_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_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__gteIntgte comparison on day.
  • day__lteIntlte comparison on day.
  • day__betweenStringRange filter on day — 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

stadiumsNbaStadiums
NBA arenas — current home venues and historical buildings the league's teams have played in.
Relations
  • teams[NbaTeams!]!nba.teams rows whose stadium_id references this row.
  • games[NbaGames!]!nba.games rows whose stadium_id references 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
refereesNbaReferees
NBA officials — the three-person crew of referees who work each game.
Relations
  • game_referees[NbaGameReferees!]!nba.game_referees rows whose referee_id references 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
broadcastersNbaBroadcasters
Networks, 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 whose broadcaster_id references 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
region_id: Int
broadcaster_team_id: Int
broadcaster_ranking: Int
created_at: String
updated_at: String
playoffsNbaPlayoffs
The 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 by season_id; null when unlinked.
  • home_teamNbaTeamsThe nba.teams row referenced by home_team_id; null when unlinked.
  • away_teamNbaTeamsThe nba.teams row referenced by away_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_broadcastersNbaGameBroadcasters
Which 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 by game_id; null when unlinked.
  • broadcasterNbaBroadcastersThe nba.broadcasters row referenced by broadcaster_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_refereesNbaGameReferees
The 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 by game_id; null when unlinked.
  • refereeNbaRefereesThe nba.referees row referenced by referee_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_newsNbaPlayerNews
News 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 by player_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_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__gteStringgte comparison on news_time.
  • news_time__lteStringlte comparison on news_time.
  • news_time__betweenStringRange filter on news_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
news_time: String
priority: Int
created_at: String
updated_at: String
content: String
author: String
category: String
external_id: String
ai_processed: Boolean
situational_impact: JSON
team_game_contextsNbaTeamGameContexts
Situational 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 by game_id; null when unlinked.
  • teamNbaTeamsThe nba.teams row referenced by team_id; null when unlinked.
  • seasonNbaSeasonsThe nba.seasons row referenced by season_id; null when unlinked.
  • opponent_teamNbaTeamsThe nba.teams row referenced by opponent_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