Games
One game: per-book odds, period odds, period scores, weather
GET/v1/games/{game_id}
Bearer keySingle objectJSON onlyReturns GameDetail
Request
curl
curl "https://api.thebettinginsider.com/v1/games/NFL-20240905-BAL-KC" \
-H "Authorization: Bearer tbi_live_YOUR_KEY"Parameters
| Parameter | Type | Description |
|---|---|---|
| game_idrequired | path · string | — e.g. NFL-20240908-KC-BAL |
Response
Captured from production on 2026-10-13, book and period arrays trimmed. GET /v1/games/NFL-20240905-BAL-KC
200 OK
{
"data": {
"game_id": "NFL-20240905-BAL-KC",
"sport": "nfl",
"season": 2024,
"season_type": "regular",
"week": 1,
"game_date": "2024-09-05",
"start_time": "2024-09-06T00:40:00.000Z",
"status": "final",
"home": {
"team_id": 139,
"abbreviation": "KC",
"name": "Kansas City Chiefs",
"score": 27
},
"away": {
"team_id": 126,
"abbreviation": "BAL",
"name": "Baltimore Ravens",
"score": 20
},
"neutral_site": false,
"overtime": null,
"venue": {
"venue_id": 2300,
"name": "GEHA Field at Arrowhead Stadium",
"city": "Kansas City",
"indoor": false
},
"referee": "Shawn Hochuli",
"result": {
"margin_home": 7,
"home_covered": true,
"went_over": null,
"favorite": "home"
},
"consensus": {
"moneyline": {
"home_open": -148,
"home_close": -148,
"away_open": 124,
"away_close": 124
},
"spread": {
"open": -3,
"close": -3,
"home_juice_open": null,
"home_juice_close": -105,
"away_juice_open": null,
"away_juice_close": -115
},
"total": {
"open": 46.5,
"close": 47,
"over_juice_close": -112,
"under_juice_close": -108
}
},
"period_scores": {
"q1": {
"home": 7,
"away": 7
},
"q2": {
"home": 6,
"away": 3
},
"q3": {
"home": 7,
"away": 0
},
"q4": {
"home": 7,
"away": 10
},
"1h": {
"home": 13,
"away": 10
},
"2h": {
"home": 14,
"away": 10
}
},
"weather": {
"temp_f": 71,
"wind_mph": 16,
"wind_direction": null,
"condition": "Clear"
},
"books": [
{
"book_id": 1002,
"book": "betmgm",
"book_name": "BetMGM",
"moneyline": {
"home_open": -155,
"home_close": -150,
"away_open": 130,
"away_close": 125
},
"spread": {
"open": -3,
"close": -3,
"home_juice_open": null,
"home_juice_close": -105,
"away_juice_open": null,
"away_juice_close": -115
},
"total": {
"open": 46.5,
"close": 46.5,
"over_juice_open": null,
"over_juice_close": -115,
"under_juice_open": null,
"under_juice_close": -105
},
"team_total": {
"home_open": 23.5,
"home_close": 23.5,
"away_open": 23.5,
"away_close": 23.5
}
},
{
"book_id": 1001,
"book": "betonlineag",
"book_name": "BetOnline.ag",
"moneyline": {
"home_open": -145,
"home_close": -145,
"away_open": 125,
"away_close": 125
},
"spread": {
"open": -3,
"close": -2.5,
"home_juice_open": null,
"home_juice_close": -115,
"away_juice_open": null,
"away_juice_close": -105
},
"total": {
"open": 46.5,
"close": 46.5,
"over_juice_open": null,
"over_juice_close": -108,
"under_juice_open": null,
"under_juice_close": -112
},
"team_total": {
"home_open": 24.5,
"home_close": 24.5,
"away_open": 21.5,
"away_close": 21.5
}
}
],
"period_odds": [
{
"period": "1h",
"book_id": 1002,
"book": "betmgm",
"moneyline": {
"home_open": -140,
"home_close": -145,
"away_open": 115,
"away_close": 120
},
"spread": {
"open": -1,
"close": -1.5,
"home_juice_close": -110,
"away_juice_close": -110
},
"total": {
"open": 23,
"close": 23,
"over_juice_close": -105,
"under_juice_close": -115
}
},
{
"period": "1h",
"book_id": 1001,
"book": "betonlineag",
"moneyline": {
"home_open": -140,
"home_close": -145,
"away_open": 120,
"away_close": 125
},
"spread": {
"open": -1.5,
"close": -1.5,
"home_juice_close": 100,
"away_juice_close": -120
},
"total": {
"open": 23,
"close": 23,
"over_juice_close": 100,
"under_juice_close": -120
}
},
{
"period": "1h",
"book_id": 1003,
"book": "betrivers",
"moneyline": {
"home_open": null,
"home_close": null,
"away_open": null,
"away_close": null
},
"spread": {
"open": -1.5,
"close": -1.5,
"home_juice_close": -105,
"away_juice_close": -120
},
"total": {
"open": 22.5,
"close": 22.5,
"over_juice_close": -118,
"under_juice_close": -106
}
}
]
},
"meta": {
"request_id": "7db797d3-c65a-4959-92f7-edab4eddcf96"
}
}GameDetail fields
| Field | Type | Description |
|---|---|---|
| game_id | string | — |
| sport | enum | Sport. ncaaf is FBS college football.mlbnflncaafnbanhl |
| season | integer | — |
| season_type | string | null | regular | postseason |
| week | integer | null | NFL/NCAAF week |
| game_date | string | YYYY-MM-DD in America/New_York. |
| start_time | string | ISO-8601 UTC kickoff / first pitch / tip. |
| status | enum | —final |
| home | object | — |
| home.team_id | integer | null | Team id |
| home.abbreviation | string | null | Abbreviation as in /v1/teams |
| home.name | string | null | Team name |
| home.score | integer | null | Final score |
| away | object | — |
| away.team_id | integer | null | Team id |
| away.abbreviation | string | null | Abbreviation as in /v1/teams |
| away.name | string | null | Team name |
| away.score | integer | null | Final score |
| neutral_site | boolean | null | Neutral site |
| overtime | boolean | null | Went to OT / extra innings / shootout |
| venue | object | null | — |
| venue.venue_id | integer | null | Venue id |
| venue.name | string | null | Venue name |
| venue.city | string | null | City |
| venue.indoor | boolean | null | Indoor / dome |
| referee | string | null | Lead official / home-plate umpire name |
| result | object | — |
| result.margin_home | integer | null | home score − away score |
| result.home_covered | boolean | null | Home covered the consensus closing spread (null on push or no line). |
| result.went_over | boolean | null | Final total went over the consensus closing total (null on push or no line). |
| result.favorite | enum | null | Consensus closing favorite.homeaway |
| consensus | object | Market-wide consensus: the modal line across US books and the mean implied-probability price of the books on that line. Same numbers the web builder grades against. Null when no US book posted the market. |
| consensus.moneyline | object | — |
| consensus.moneyline.home_open | integer | null | Home ML open. American odds (e.g. -110). |
| consensus.moneyline.home_close | integer | null | Home ML close. American odds (e.g. -110). |
| consensus.moneyline.away_open | integer | null | Away ML open. American odds (e.g. -110). |
| consensus.moneyline.away_close | integer | null | Away ML close. American odds (e.g. -110). |
| consensus.spread | object | — |
| consensus.spread.open | number | null | Home spread open (negative = home favored). Decimal line (e.g. -3.5, 47.5). |
| consensus.spread.close | number | null | Home spread close. Decimal line (e.g. -3.5, 47.5). |
| consensus.spread.home_juice_open | integer | null | Home spread price at open. American odds (e.g. -110). |
| consensus.spread.home_juice_close | integer | null | Home spread price at close. American odds (e.g. -110). |
| consensus.spread.away_juice_open | integer | null | Away spread price at open. American odds (e.g. -110). |
| consensus.spread.away_juice_close | integer | null | Away spread price at close. American odds (e.g. -110). |
| consensus.total | object | — |
| consensus.total.open | number | null | Total open. Decimal line (e.g. -3.5, 47.5). |
| consensus.total.close | number | null | Total close. Decimal line (e.g. -3.5, 47.5). |
| consensus.total.over_juice_close | integer | null | Over price at close. American odds (e.g. -110). |
| consensus.total.under_juice_close | integer | null | Under price at close. American odds (e.g. -110). |
| period_scores | map<object> | Per-period scores keyed by period (q1…q4, 1h, 2h, p1…p3, inn1, inn5, ot). Only periods we have. |
| period_scores.*.home | integer | null | — |
| period_scores.*.away | integer | null | — |
| weather | object | null | — |
| weather.temp_f | number | null | °F |
| weather.wind_mph | number | null | mph |
| weather.wind_direction | string | null | — |
| weather.condition | string | null | Text condition; Indoor for domes |
| books | BookOdds[] | Per-book full-game odds. US books only. |
| books[].book_id | integer | — |
| books[].book | string | Book slug, e.g. draftkings. |
| books[].book_name | string | — |
| books[].moneyline | object | — |
| books[].moneyline.home_open | integer | null | Home ML open. American odds (e.g. -110). |
| books[].moneyline.home_close | integer | null | Home ML close. American odds (e.g. -110). |
| books[].moneyline.away_open | integer | null | Away ML open. American odds (e.g. -110). |
| books[].moneyline.away_close | integer | null | Away ML close. American odds (e.g. -110). |
| books[].spread | object | — |
| books[].spread.open | number | null | Home spread open. Decimal line (e.g. -3.5, 47.5). |
| books[].spread.close | number | null | Home spread close. Decimal line (e.g. -3.5, 47.5). |
| books[].spread.home_juice_open | integer | null | American odds (e.g. -110). |
| books[].spread.home_juice_close | integer | null | American odds (e.g. -110). |
| books[].spread.away_juice_open | integer | null | American odds (e.g. -110). |
| books[].spread.away_juice_close | integer | null | American odds (e.g. -110). |
| books[].total | object | — |
| books[].total.open | number | null | Total open. Decimal line (e.g. -3.5, 47.5). |
| books[].total.close | number | null | Total close. Decimal line (e.g. -3.5, 47.5). |
| books[].total.over_juice_open | integer | null | American odds (e.g. -110). |
| books[].total.over_juice_close | integer | null | American odds (e.g. -110). |
| books[].total.under_juice_open | integer | null | American odds (e.g. -110). |
| books[].total.under_juice_close | integer | null | American odds (e.g. -110). |
| books[].team_total | object | — |
| books[].team_total.home_open | number | null | Decimal line (e.g. -3.5, 47.5). |
| books[].team_total.home_close | number | null | Decimal line (e.g. -3.5, 47.5). |
| books[].team_total.away_open | number | null | Decimal line (e.g. -3.5, 47.5). |
| books[].team_total.away_close | number | null | Decimal line (e.g. -3.5, 47.5). |
| period_odds | PeriodOdds[] | — |
| period_odds[].period | string | 1h, 2h, q1–q4, p1, inn1, inn5. |
| period_odds[].book_id | integer | — |
| period_odds[].book | string | — |
| period_odds[].moneyline | object | — |
| period_odds[].moneyline.home_open | integer | null | American odds (e.g. -110). |
| period_odds[].moneyline.home_close | integer | null | American odds (e.g. -110). |
| period_odds[].moneyline.away_open | integer | null | American odds (e.g. -110). |
| period_odds[].moneyline.away_close | integer | null | American odds (e.g. -110). |
| period_odds[].spread | object | — |
| period_odds[].spread.open | number | null | Decimal line (e.g. -3.5, 47.5). |
| period_odds[].spread.close | number | null | Decimal line (e.g. -3.5, 47.5). |
| period_odds[].spread.home_juice_close | integer | null | American odds (e.g. -110). |
| period_odds[].spread.away_juice_close | integer | null | American odds (e.g. -110). |
| period_odds[].total | object | — |
| period_odds[].total.open | number | null | Decimal line (e.g. -3.5, 47.5). |
| period_odds[].total.close | number | null | Decimal line (e.g. -3.5, 47.5). |
| period_odds[].total.over_juice_close | integer | null | American odds (e.g. -110). |
| period_odds[].total.under_juice_close | integer | null | American odds (e.g. -110). |
Errors
| Status | When |
|---|---|
| 400 | Invalid parameter |
| 401 | Missing or unknown API key |
| 403 | Key revoked or subscription inactive |
| 404 | Unknown game, or game not yet final |
| 429 | Rate limit or monthly quota exceeded (see Retry-After) |
All errors share one envelope — see Errors.