The NBA API for developers ballers.

Live scores, player props with historical hit rates, box scores, and a matchup endpoint that returns the whole game preview in one call. Sub-100ms REST.

250 req/day free (500 with GitHub). No credit card.

NBA · 2025/26 · regular season + playoffs + Finals · historical 1946–2026

Want the sport rather than the league? The Basketball API page covers every basketball league we serve under one schema. See the Basketball API →

80
seasons in the archive
70,745 finished games, back to 1946

How far back the NBA archive goes

80 seasons are on record, back to 1946 — 70,745 finished games you can query today. One route serves the full span. These figures are measured from the customer-facing routes listed below, so this page cannot silently drift from the product.

ArchiveRouteSeasonsReaches back toFinished games
Unified NBA game archive/v1/matches?league=nba801946 – 202570,745

What each plan reaches

Edge & Pro
all 80 seasons
Solo & Trio
5 seasons
Free
the current season

Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.

What you get, by plan

One row per capability, not per field per endpoint. Season spans are counted from rows that are actually populated, and each capability names the simplest endpoint that returns it.

Ratings and derived intelligence

CapabilityFreeSoloTrioEdgeProEndpoint
Current Elo rating—PENDINGPENDINGPENDINGPENDING/v1/teams/{id}/elo

Measured against production on 2026-09-13. A capability appears here only when it has rows, an endpoint that returns it, and a source we may both serve and quote.

Stats included

Every basketball stat field the API returns today — 76 in total, grouped by how they are produced. Each group carries its own freshness, because a sport is rarely uniformly current.

Per-game player stats

Post-game

Written after the game ends — not a live in-game feed. Last ingested 2026-09-16.

Endpoint
/v1/players/:id/stats
Last updated
2026-09-16

Fields (14)

Assists, Blocks, Defensive Rebounds, Field Goals Made/Attempted, Personal Fouls, Free Throws Made/Attempted, Minutes Played, Offensive Rebounds, Plus/Minus, Points, Rebounds, Steals, Three Point Field Goals Made/Attem, Turnovers

Season player stats

Historical

Held and queryable, but not currently being ingested. Last ingested 2026-06-03.

Endpoint
/v1/nba/players/:id/splits
Last updated
2026-06-03

Fields (46)

Ast %, Ast Ratio, Ast to, Defensive Rating, Dreb %, E Defensive Rating, E Net Rating, E Offensive Rating, E Pace, E Tov %, E Usg %, Efg %, Games Played, Losses, Minutes, Net Rating, Offensive Rating, Oreb %, Pace, Pace Per40, Pie, Poss, Rebounds %, Tm Tov %, Ts %, Usg %, W %, Wins, Ast, Blk, Dreb, Fg3 %, Fg3a, Fg3m, FG %, Fga, Fgm, Ft %, Fta, Ftm, Oreb, Pf, Points, Rebounds, Stl, Turnover

Team stats (per game)

Post-game

Written after the game ends — not a live in-game feed. Last ingested 2026-09-16.

Endpoint
/v1/matches/:id/statistics
Last updated
2026-09-16

Fields (26)

Assists, Blocks, Defensive Rebounds, Fast Break Points, Field Goal %, Field Goals Made/Attempted, Flagrant Fouls, Personal Fouls, Free Throw %, Free Throws Made/Attempted, Largest Lead, Lead Changes, Time Leading %, Offensive Rebounds, Points in the Paint, Score, Steals, Team Turnovers, Technical Fouls, Three-Point %, Three Point Field Goals Made/Attem, Total Rebounds, Total Technical Fouls, Total Turnovers, Turnover Points, Turnovers

Not included

  • Not shown here — player_per_game_box (new granularity, not yet mapped for display).
  • Not shown here — player_season_general: 176 raw upstream season keys with no route serving them.
  • Not shown here — play_by_play: play-by-play events, not a stat line — mostly identifiers once classified.
  • Not shown here — lineups: lineup composition, not a measured stat.
  • Not shown here — props: betting lines and prices, not stats — they belong on the odds surface.
  • player_season is not currently ingesting (last 2026-06-02).
  • player_season_advanced is not currently ingesting (last 2026-06-03).

Missing a stat?

We build what people actually ask for. If a field you need is not on this page, tell us — requests are how we decide what to add next.

Name the field or the endpoint shape. Specifics help more than categories.

Goes straight to the team as a product signal. No newsletter, no account, nothing else done with your address.

What you can build

  • Player props tracker

    Surface prop hit rates over the last N games and find the edge before tip-off.

  • Live score widget

    Embed real-time NBA scores and quarter-by-quarter linescores on any site.

  • Fantasy / DFS optimizer

    Season averages, matchup stats, and injury status in one feed.

  • Matchup preview page

    The full matchup — season stats, last-5, rest days, roster, H2H — in one call.

  • Historical analytics

    13.6M plays and 70,611 games back to 1946 for backtesting and ML training sets.

  • Betting research tool

    Odds, against-the-spread records, and player-prop ladders in one place.

See which endpoints are free: Free Sports API: 119 Free Endpoints.

Walk through it end to end: How to build a fantasy basketball app.

Endpoints

On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys. Click any endpoint to see every field it returns.

9 endpoints · 135 documented fields. Click any row to see every field it returns.

Start on the free tier

100 requests per minute and 250 per day, free — the highest per-minute burst of any free sports API we checked. Burst is what matters when something asks several questions in a row and waits on each answer.

  • Every sport and league we cover — the paid tiers add history depth and premium fields, not more leagues.
  • Calls are counted one for one — no credit weighting, no markets-times-regions arithmetic.
  • Link GitHub and the daily cap goes to 500.
  • No credit card.
Get a key →

Or ask your AI tool directly

Connect your account to Claude, ChatGPT, Cursor, Perplexity or any other MCP-compatible tool and ask for basketball data in conversation — scores, standings, player stats and Elo ratings, with no API key to paste and no code to write. Your plan and limits carry over exactly as they do here.

Connect your AI tool →

Integrate in a few lines

Node.js, @bigballsdata/sdktypescript
import { BigBallSportsClient } from '@bigballsdata/sdk';

const client = new BigBallSportsClient(process.env.BBS_API_KEY!);

// The SDK has no `nba` namespace — this surface is REST-only today.
const headers = { Authorization: `Bearer ${process.env.BBS_API_KEY}` };
const API = 'https://api.bigballsdata.com';

const games = await fetch(`${API}/v1/matches?league=nba&limit=50`, { headers }).then((r) => r.json());

// Source-native archive games deliberately have no v1 match bridge. Pick a
// bridged row only because the legacy matchup resource requires match_id.
const bridged = games.data.find((game: { match_id: string | null }) => game.match_id);
if (!bridged) throw new Error('No bridged NBA game in this page; request the next offset.');

const matchup = await fetch(`${API}/v1/nba/games/${bridged.match_id}/matchup`, { headers })
  .then((r) => r.json());
for (const p of matchup.data.home_team.players) {
  console.log(p.name, p.season_averages?.pts?.toFixed(1) ?? '-', 'ppg');
}

Free covers a real app. Scale when you need to.

250 req/day free (500 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.

Frequently asked

Is there a free NBA API?
Yes. The API covers scores, box scores, standings, player profiles, and injury reports. There is a free tier; pricing lists what each plan covers. Two NBA data types are paid: odds start at Edge ($149/mo), and play-by-play — including shot coordinates — is Pro. Full play-by-play logs are Pro for basketball, hockey and football, not just the NBA. Scoring plays stay free on every sport. Free keys get 250 req/day (500 with GitHub). No credit card.
Does the NBA API include player props?
Yes. /v1/nba/players/:player_id/props returns the latest prop line we hold plus a rolling hit rate over the last N games, computed from box scores. Every response carries a `freshness` block derived from the line’s own timestamp (`data_as_of`, age in days, and a status of live/recent/stale). Read freshness.status rather than assuming a returned line is a current price: when nothing is on the board the newest line we hold can be days or weeks old, and the block says so in the response. Most competitors do not offer prop hit rates at all.
How far back does NBA historical data go?
To the 1946–47 season. The unified archive holds 70,611 archive-backed games plus canonical match-only coverage, queryable through /v1/matches?league=nba. The separate play-by-play resource holds 13.6M events through 2023 at /v1/nba/games/:game_id/plays. Useful for backtesting and ML training sets.
Can I get live NBA scores and play-by-play?
Yes. The REST scores endpoint refreshes on a 15-second cache during live games (~200ms typical round trip). WebSocket push for score updates is on the Pro plan.
Is there an NBA play-by-play API?
Yes. /v1/nba/games/:game_id/plays returns event-level play-by-play, 13.6M plays across the 1946-2023 archive, with period, game clock, the players involved, running score, and a scoring-play flag on every event. Filterable by period and player. Play-by-play is a Pro-plan endpoint — on every sport, not just the NBA — and a Free, Solo, Trio or Edge key gets a 403 with an upgrade hint.
Does the NBA API have betting odds?
Yes, in two forms. The archive: archived closing-line snapshots, plus a T-24h snapshot, for finished NBA games on /v1/odds/historical — enough depth to backtest against real closing lines, with meta.snapshot_types_present naming what each response contains and /v1/coverage reporting the covered-game count under data_types.odds_historical. Live pricing: /v1/matches/:id/odds returns pre-match and in-play odds (moneyline, spread, totals) across 16+ sportsbooks while games are on the board, and nothing when none are — /v1/coverage reports freshness.next_event so you can tell which case you are in. Odds require the Edge plan ($149/mo) or higher; scores, standings, lineups, stats, and scoring events stay on the free tier.
Can I get NBA shot coordinates?
Yes. /v1/players/:id/shots returns per-shot court coordinates (coordinate_x, coordinate_y) with shot type, distance, and make/miss for the 2025-26 season. See the dedicated NBA Shot Chart API page (/nba-shot-chart-api) for the full response shape.

Get an API key in 30 seconds