Basketball live scores API
Live scoresEvery game in play now, with the score and the clock.
Live returns every basketball game in play right now. The answer is kept for 10 seconds, so asking every 10 to 15 seconds keeps a scoreboard current. An empty list means nothing is in play. Live comes with the Basketball plan.
Try it
Your key stays in this browser and is filled in on every docs page.
{
"data": [
{
"game": {
"id": "bb_hexd1fja7j",
"competition": {
"id": "bb_w24r12xjgq",
"name": "NBA"
},
"season": {
"id": "bb_s1cp0p7mh3",
"name": "2026-27"
},
"stage": "regular",
"round": null,
"date": "2026-11-02",
"tip_off": "2026-11-03T01:00:00Z",
"status": "final",
"home": {
"id": "bb_kpbnq1y4fb",
"name": "Dallas Mavericks"
},
"away": {
"id": "bb_gt6w5ek8w0",
"name": "Sacramento Kings"
},
"home_score": 100,
"away_score": 115,
"attendance": null,
"venue": null,
"has": {
"boxscore": false,
"playbyplay": false,
"shots": false
}
},
"status": "final",
"score": {
"home": 100,
"away": 115
},
"period": 4,
"periods_ended": 4,
"clock": null,
"periods": {
"home": [
18,
35,
21
],
"away": [
19,
35,
27
]
},
"last_play": null,
"last_change": "2026-11-03T04:17:18Z",
"seconds_behind": 345
},
{
"game": {
"id": "bb_d7cn56n43e",
"competition": {
"id": "bb_w24r12xjgq",
"name": "NBA"
},
"season": {
"id": "bb_s1cp0p7mh3",
"name": "2026-27"
},
"stage": "regular",
"round": null,
"date": "2026-11-02",
"tip_off": "2026-11-03T01:00:00Z",
"status": "final",
"home": {
"id": "bb_e0k4zbh0w3",
"name": "Memphis Grizzlies"
},
"away": {
"id": "bb_t2ckwjr6rr",
"name": "New Orleans Pelicans"
},
"home_score": 134,
"away_score": 135,
"attendance": null,
"venue": null,
"has": {
"boxscore": false,
"playbyplay": false,
"shots": false
}
},
"status": "final",
"score": {
"home": 134,
"away": 135
},
"period": 5,
"periods_ended": 5,
"clock": null,
"periods": {
"home": [
31,
31,
33
],
"away": [
34,
25,
41
]
},
"last_play": null,
"last_change": "2026-11-03T04:17:18Z",
"seconds_behind": 345
}
],
"meta": {
"sport": "basketball",
"endpoint": "/live",
"count": 5,
"cached": false,
"age_seconds": 0
}
}Parameters
Query values this call takes. Anything else is refused with bad_param and the list it accepts.
| Name | Type | What it does | |
|---|---|---|---|
| competition | id | optional | Only this competition, by its id from Competitions. |
Returns
Each row of data, from a real answer. Every id is ours and opens its own endpoint.
| Field | Type | What it holds |
|---|---|---|
| game | object | Game |
| status | string | Its state: scheduled, live, finished or similar |
| score | object | The score |
| period | integer | Period |
| periods_ended | integer | Periods ended |
| clock | null | Clock |
| periods | object | Periods |
| last_play | null | Last play |
| last_change | datetime | Last change |
| seconds_behind | integer | Seconds behind |
| meta | What it holds |
|---|---|
| sport, endpoint | What you asked |
| count | Rows in this answer |
| page, per_page, total, next_cursor | Where you are in a paged list, when it is paged |
| as_of | When the data was built |
| cached, age_seconds | Whether this is a stored copy, and its age |
| access | On the free key: what it reads, and the plan that opens the rest |
Errors
Codes this call can give. Each is explained in Errors.
| Status | Code | When |
|---|---|---|
| 401 | no_key | No key sent, or not in a form we read |
| 401 | bad_key | A key we do not know |
| 403 | plan | The free key, or a sport you do not hold |
| 422 | bad_param | A value this call does not take |
| 429 | rate | Over the calls a minute for your plan |
| 503 | upstream | The data is not answering; retry after Retry-After |
Live scores comes with the Basketball plan, $49 a month, with every date held and 250,000 calls a month.
Add Basketball