Featured league example · not aggregate coverage
NBA
single-league example · response shape, not coverage
period · clockhome_team · away_teamlinescore · statusbasketball data hub
Every basketball league we serve behind one envelope and one key: live scores, box scores, season stats, and a matchup endpoint that returns the whole preview in one call. Same field names for each league, so the parser you write once reads the next without a change. Sub-100ms REST.
Aggregate sport hub · choose a league before league-specific detail calls
250 req/day free (500 with GitHub). No credit card.
NBA · NCAA Men's Basketball · 2025/26 + NBA historical to 1946
Building NBA-only? That league has its own page, and it goes deeper on props, season history and the matchup endpoint. Go to the NBA API →
Featured league example · not aggregate coverage
single-league example · response shape, not coverage
period · clockhome_team · away_teamlinescore · status80 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.
| Archive | Route | Seasons | Reaches back to | Finished games |
|---|---|---|---|---|
| Unified NBA game archive | /v1/matches?league=nba | 80 | 1946 – 2025 | 70,745 |
Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.
Unified schema
Canonical IDs, league keys, status and timestamps travel with the row. The hub describes shared fields; each league authority documents its own depth.
No featured-league field is promoted to a sport-wide guarantee.
Event surface
Event granularity differs by competition. Discover a match and league first, then use that authority’s event contract rather than assuming one featured feed applies everywhere.
/v1/nba/players/:player_id/propsPlayer prop lines + rolling hit ratesedge/v1/nba/players/:player_id/statsPer-season player aggregatesfree/v1/nba/leadersStatistical leaders with team affiliationfree/v1/matches/:id/odds?sport=basketballPre-match + in-play odds across 16+ booksedgeWhat you can build
Each concept points to a real league authority, guide or reference. The phone mockups are product patterns, not claims that every league supplies identical depth.
basketball pattern 01
1 · period · clock2 · home_team · away_team3 · linescore · statusSurface prop hit rates over the last N games and find the edge before tip-off.
Explore NBA →basketball pattern 02
1 · period · clock2 · home_team · away_team3 · linescore · statusEmbed real-time NBA and NCAA basketball scores on any site.
Explore NBA →basketball pattern 03
1 · period · clock2 · home_team · away_team3 · linescore · statusSeason stats, last-5, rest days, roster, and H2H for both teams in one call.
Explore NBA →basketball pattern 04
1 · period · clock2 · home_team · away_team3 · linescore · statusSeason averages, matchup stats, and injury status in one feed.
Explore NBA →basketball pattern 05
1 · period · clock2 · home_team · away_team3 · linescore · statusOdds, against-the-spread records, and player-prop ladders in one place.
Explore NBA →Walk through it end to end: How to build a fantasy basketball app.
League directory
League pages own seasons, participants, examples and measured depth. This hub owns discovery across them.
| League authority | Role | Next step |
|---|
Coverage strength
Counts below describe published route rows on this hub, not a promise that every league fills every field.
League authorities
Published routes
Build patterns
FAQ answers
On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys.
| Method | Path | Returns | Plan |
|---|---|---|---|
| GET | /v1/matches?sport=basketball | Live + scheduled basketball games (NBA + NCAAB) | Free |
| GET | /v1/nba/games/:match_id/matchup | Full matchup intelligence endpoint | Free |
| GET | /v1/nba/players/:player_id/props | Player prop lines + rolling hit rates | Edge |
| GET | /v1/nba/players/:player_id/stats | Per-season player aggregates | Free |
| GET | /v1/nba/leaders | Statistical leaders with team affiliation | Free |
| GET | /v1/standings?sport=basketball&league=nba | Conference + division standings | Free |
| GET | /v1/matches/:id/odds?sport=basketball | Pre-match + in-play odds across 16+ books | Edge |
| GET | /v1/injuries?sport=basketball | Active injury reports | Free |
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.
| Capability | Free | Solo | Trio | Edge | Pro | Endpoint |
|---|---|---|---|---|---|---|
| Current Elo rating | — | PENDING | PENDING | PENDING | PENDING | /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.
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.
Written after the game ends — not a live in-game feed. Last ingested 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
Held and queryable, but not currently being ingested. Last ingested 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
Written after the game ends — not a live in-game feed. Last ingested 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
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.
Player availability
Injury, lineup and participant availability vary by league and season. Missing rows stay missing; the hub does not borrow another league’s records.
Check the selected league authority and response timestamp before presenting a status as current.
Next up
Each league publishes its own schedule and its own season boundaries. Call the league you selected and read the status and kickoff on the rows it returns, rather than inferring a season from this hub.
GET /v1/leaguesChoose a real league key
/v1/matches?sport=basketballKeep league + season
GET /v1/matches/{id}Traverse canonical IDs
From response to product
This is visibly scoped to NBA, single-league example · response shape, not coverage; it demonstrates the shared envelope without claiming that league represents all basketball.
Featured league example
single-league example · response shape, not coverage
period · clockhome_team · away_teamlinescore · status{
"data": [
{
"id": "canonical-id-from-response",
"sport": "basketball",
"league": "selected-league-key",
"status": "finished",
"home": {
"name": "Home participant"
},
"away": {
"name": "Away participant"
},
"score": {
"home": null,
"away": null
}
}
],
"meta": {
"example_scope": "NBA · single-league example · response shape, not coverage",
"note": "Shape example; request the API for current values."
}
}basketball resources
Every card is a real destination. League authorities remain separate from supporting product and documentation routes.
Real API example
The request deliberately omits a featured league when the route supports sport-wide discovery. Select a returned league key before league-specific calls.
curl -H "Authorization: Bearer $BBS_API_KEY" "https://api.bigballsdata.com/v1/matches?sport=basketball"{
"data": [
{
"id": "canonical-id-from-response",
"sport": "basketball",
"league": "selected-league-key",
"status": "finished",
"home": {
"name": "Home participant"
},
"away": {
"name": "Away participant"
},
"score": {
"home": null,
"away": null
}
}
],
"meta": {
"example_scope": "NBA · single-league example · response shape, not coverage",
"note": "Shape example; request the API for current values."
}
}import { BigBallSportsClient } from '@bigballsdata/sdk';
const client = new BigBallSportsClient(process.env.BBS_API_KEY!);
// Tonight's matchup, fully assembled in one call.
const matchup = await client.nba.games.matchup(gameId);
for (const p of matchup.home_team.players) {
console.log(p.name, p.season_averages?.pts ?? '-', 'ppg');
}MCP
An agent should discover basketball leagues, select one explicitly, then traverse matches and players by returned canonical IDs.
get_leaguessport: basketballget_matchesleague: selected keyget_match_detailsmatch_id: returned UUIDData freshness
The hub never turns a single-league example into a current sport-wide claim, and it states no season of its own.
Source: League response
Source: Match response
Source: Dataset response
Source: Static label
Plan decision
Each row preserves its league or sport scope and resolves against the endpoint plan registry when that route has a canonical entry.
| Endpoint | Scope | Minimum plan |
|---|---|---|
| /v1/matches?sport=basketball | Sport/shared | free |
| /v1/nba/games/:match_id/matchup | League-specific | free |
| /v1/nba/players/:player_id/props | League-specific | edge |
| /v1/nba/players/:player_id/stats | League-specific | free |
| /v1/nba/leaders | League-specific | free |
| /v1/standings?sport=basketball&league=nba | League-specific | free |
| /v1/matches/:id/odds?sport=basketball | Sport/shared | edge |
| /v1/injuries?sport=basketball | Sport/shared | free |
Founder pricing
Prices and included dimensions come from the shared billing manifest; league coverage remains documented on each authority page.
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.
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 →250 req/day free (500 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.
Frequently asked
Yes. Scores, box scores, standings, player profiles, props, and injury reports at 250 requests/day (500 with GitHub), no credit card.
Yes. NCAA men's basketball runs on the same basketball surface as the NBA; filter with ?league=ncaab. NBA has the deepest coverage (props, matchup intelligence, and season history).
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.
The REST scores endpoint refreshes on a 15-second cache during live games (~200ms typical round trip). WebSocket push is on the Pro plan.