API reference · Live games
List games
GET/v1/sports/games
NBA, NHL and MLB games of a day with their score, period and clock on Langbot's clock, and the Kalshi and Polymarket markets linked to each.
On this page
Auth. None. Without a token the call is served as Free (the Free delay and request budget, shared per IP); send Authorization: Bearer lb_… for your plan's.
Limits. Counts against your plan's API requests (60, 600 or 3,000 a minute on Free, Builder and Standard). Served at your plan's delay (+60 s Free, +10 s Builder, +2 s Standard).
Parameters
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
league | string | no | Comma-separated: nba, nhl, mlb. |
date | string | no | The league's game date, YYYY-MM-DD (default today, US Eastern). |
status | string | no | Comma-separated: scheduled, live, final, postponed, cancelled, suspended. |
ticker | string | no | A Kalshi market or event ticker (KXNHLGAME-26NOV07VANEDM-EDM), a Polymarket slug or pm_<id>: the game it is linked to, any date. |
links | boolean | no | true to include each game's venue links. Default false. |
limit | integer | no | Page size. 1 to 500. Default 100. |
Request
curl "https://api.langbot.ai/v1/sports/games?league=nhl&date=2026-11-07&status=live"from langbot import LangbotClient
async with LangbotClient() as lb:
for g in await lb.sports_games(league="nhl", date="2026-11-07", status="live"):
print(g.title, g.away.score, g.home.score, g.period, g.clock, g.markets)import { LangbotClient } from "@langbotai/sdk";
const lb = new LangbotClient();
const games = await lb.sportsGames({ league: "nhl", date: "2026-11-07", status: "live" });
for (const g of games) console.log(g.title, g.away.score, g.home.score, g.clock);Response
200 OK
{
"ts": 1794113400000,
"date": "2026-11-07",
"league": "nhl",
"delay_ms": 0,
"count": 1,
"games": [
{
"id": "nhl_2026020276",
"league": "nhl",
"game_id": "2026020276",
"event_id": "ev_sports_nhl_2026020276",
"date": "2026-11-07",
"start_time": 1794106800000,
"title": "VAN @ EDM",
"away": {"code": "VAN", "name": "Vancouver Canucks", "score": 1},
"home": {"code": "EDM", "name": "Edmonton Oilers", "score": 1},
"status": "live",
"status_detail": null,
"period": 3,
"period_type": "REG",
"clock": "14:21",
"score_at": 1794110943512,
"markets": {"kalshi": 9, "polymarket": 1},
"linked": null
}
]
}Scores come from the leagues' own live data (NHL and MLB; NBA when its feed admits Langbot) and are what your plan's delay lets you see: score, status, period and clock are those of the last game event visible to you, and score_at is when Langbot detected that score. event_id is the game's key on the live stream (types=score_changed,game_status or the event id), in recent events and in the Sim replay. markets counts the linked venue events (game, spread, total, periods, player props on Kalshi; the game's event on Polymarket). NFL and college games are not covered.
Errors
| Status | code | When |
|---|---|---|
| 422 | validation_error | An unknown league or status, or a date that is not YYYY-MM-DD. |
| 401 | token_invalid | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 429 | rate_limited | Over your request budget; wait Retry-After seconds. |
Every error body is {"detail": …, "code": "…"}; branch on code. All codes: Errors.