balldontlie logo

balldontlie

balldontlie

A sports-data API covering NBA, WNBA, NFL, MLB, NHL, and 20+ leagues, priced per sport: the free tier exposes only Teams / Players / Games at 5 req/min, All-Star ($9.99/mo) raises that to 60 req/min and unlocks per-game player stats plus injuries, and GOAT ($39.99/mo) gives 600 req/min with season averages, advanced stats, box scores, standings, odds, and player props

Visit site ↗Documentation ↗Health checked 12h ago
Use it when

Dead-simple API-key auth: every request carries an `Authorization: YOUR_API_KEY` header — no OAuth handshake, no request signing. Sign up, grab the key, and the first request works in five minutes

Watch for

The free tier is read-mostly: beyond Teams / Players / Games, season averages, box scores, standings, leaders, and odds all sit behind GOAT ($39.99/mo). Per-game player stats require at least All-Star ($9.99/mo)

First check

Sign up at balldontlie.io to get an API key. The base URL is https://api.balldontlie.io/v1/ (some features such as odds live under v2), and auth is just the HTTP header `Authorization: YOUR_API_KEY` (no Bearer prefix). Validate the key with GET /teams on the free tier, then try GET /players?search=curry. Upgrade to All-Star ($9.99/mo) for per-game player stats, or GOAT ($39.99/mo) for season_averages, box_scores, standings, and odds. When polling scores, keep request frequency under your tier’s per-minute cap — the free tier’s 5 req/min is really only enough for development.

Auth
api_key
CORS
No
HTTPS
Yes
Signup
Required
Latency
753 ms
Protocol
REST
Pricing
freemium

Uptime · 30-day window

Probes: 18Uptime: 100%Avg latency: 698ms
01

About this API

balldontlie is a developer-facing sports-data API that first earned a reputation for being free, easy, and key-less for pulling NBA data. It has since expanded to NBA, WNBA, NFL, MLB, NHL, EPL, and 20+ leagues, and moved to an API-key, tiered-subscription model. The base URL is https://api.balldontlie.io/v1/, and auth is minimal: every request carries one HTTP header, `Authorization: YOUR_API_KEY` — no OAuth, no signing. NBA coverage is broad: Teams, Players, Games, Game Player Stats, Season Averages, Team Season Averages, Game Advanced Stats (v1/v2), Box Scores (live and historical), Lineups, Plays (play-by-play), Player Injuries, Standings, Leaders, Betting Odds, Player Props, and Contracts. These endpoints unlock progressively by tier: the free tier ($0, 5 req/min) exposes only Teams / Players / Games; All-Star ($9.99/mo, 60 req/min) adds Game Player Stats, Active Players, and Player Injuries; GOAT ($39.99/mo, 600 req/min) unlocks everything, including season averages, advanced stats, box scores, lineups, play-by-play, standings, leaders, odds, player props, and contracts. The top All-Access tier ($299.99/mo, 600 req/min) is the only one spanning every sport — the rest are billed per sport, so an NBA + NFL product means either two GOAT subscriptions or a jump to All-Access, a fairly steep cost step. Against the official stats.nba.com (undocumented, key-less, prone to 429s or breaking changes), balldontlie’s value is stability, public pricing, and simple auth — ideal for indie developers and small teams getting started quickly. Against API-Sports (API-NBA), balldontlie meters per minute rather than per day, so the free tier’s 5 req/min is really only enough for debugging; production should start at All-Star. Two common gotchas: first, many assume the free tier returns scores and player data, but it has no box scores at all and per-game player stats need at least All-Star; second, limits are per-minute, so any polling loop must throttle or it will hit 429s immediately.

02

What you can build

  • 1Roster and player pages: the free tier’s /teams and /players are enough to build a static NBA 30-team roster and player-profile site without paying or scraping stats.nba.com
  • 2Schedule and score apps: /games filters by date, season, and team_ids; pair it with box_scores (GOAT tier) for live-score push. Free-tier polling must stay under 5 req/min, so production should start at All-Star
  • 3Fantasy and analytics dashboards: season_averages + advanced_stats + leaders (GOAT tier) drive player-comparison radar charts, while odds and player props come from the v2 odds endpoints
03

Strengths & limitations

Strengths

  • Dead-simple API-key auth: every request carries an `Authorization: YOUR_API_KEY` header — no OAuth handshake, no request signing. Sign up, grab the key, and the first request works in five minutes
  • Transparent tiered pricing: Free (5 req/min) → All-Star $9.99 (60 req/min) → GOAT $39.99 (600 req/min), all publicly listed. Far friendlier to indie developers than SportsDataIO’s contact-sales-for-a-quote model
  • One API spans 20+ leagues: NBA, WNBA, NFL, MLB, NHL, EPL, and more share the same auth and pagination conventions, so a multi-sport product needs only one integration. All-Access ($299.99/mo) unlocks every sport at once

Limitations

  • The free tier is read-mostly: beyond Teams / Players / Games, season averages, box scores, standings, leaders, and odds all sit behind GOAT ($39.99/mo). Per-game player stats require at least All-Star ($9.99/mo)
  • Pricing is per sport: GOAT at $39.99 covers a single sport, so an NBA + NFL product means either two subscriptions or jumping straight to All-Access at $299.99/mo — a steep step up
  • Rate limits are tight and per-minute: 5 req/min on the free tier is not enough for any real polling loop. Unlike API-Sports’ per-day quota, balldontlie meters per minute, so bursty traffic hits 429s quickly
04

Official quickstart

Read the official quickstart at docs.balldontlie.io.

05

Getting started

Sign up at balldontlie.io to get an API key. The base URL is https://api.balldontlie.io/v1/ (some features such as odds live under v2), and auth is just the HTTP header `Authorization: YOUR_API_KEY` (no Bearer prefix). Validate the key with GET /teams on the free tier, then try GET /players?search=curry. Upgrade to All-Star ($9.99/mo) for per-game player stats, or GOAT ($39.99/mo) for season_averages, box_scores, standings, and odds. When polling scores, keep request frequency under your tier’s per-minute cap — the free tier’s 5 req/min is really only enough for development.

06

FAQ

Is balldontlie still free? Do I need an API key now?+

You need a key now. balldontlie used to offer key-less free access; it has moved to an API key plus tiered subscriptions. The free tier ($0) still exists but exposes only Teams / Players / Games, caps at 5 req/min, and has no box scores, player stats, season averages, or odds. Sign up to get a key and authenticate with the `Authorization: YOUR_API_KEY` header.

Can the free tier get per-game player stats and scores?+

No. The free tier has only Teams, Players, and Games — not even box scores. Per-game player stats and injuries require at least All-Star ($9.99/mo); season averages, box scores, standings, leaders, odds, and player props require GOAT ($39.99/mo).

How is balldontlie different from the official stats.nba.com?+

The official stats.nba.com has no public API, issues no keys, and leaves its endpoints undocumented — access relies on community reverse-engineering (e.g. the Python nba_api package), it can 429 or change endpoints at any time, and there is no SLA. balldontlie is a proper commercial API: public pricing, stable endpoints, simple key auth, and documentation. The trade-off is that full data is paid, and depth (such as fine-grained historical play-by-play) may not match stats.nba.com.

Is a balldontlie subscription per sport or all-inclusive?+

Except for the top All-Access tier ($299.99/mo, covering all 20+ sports), the Free / All-Star / GOAT tiers are billed per single sport. One GOAT subscription at $39.99 covers only one sport (e.g. NBA only). To do NBA + NFL together, you either buy two GOAT subscriptions or move up to All-Access.

07

Technical details

CORS: NoHTTPS: YesSignup: YesOpen source: No
Auth type
api_key
Pricing
freemium
Rate limit
Rate limits are per-tier, per-sport: Free = 5 requests/minute, All-Star ($9.99/mo) = 60 requests/minute, GOAT ($39.99/mo) = 600 requests/minute, All-Access ($299.99/mo, all sports) = 600 requests/minute. Limits are enforced per minute, not per day.
Free tier quota
Free tier ($0): 5 requests/minute, NBA endpoints limited to Teams, Players, and Games (no stats, box scores, standings, or odds). Pagination via cursor; the free tier is meant for prototyping, not production traffic.
Protocols
REST
SDKs
JavaScript, Python
Response time
753 ms
Last health check
5/30/2026, 7:34:45 AM
08

Tags