Odds history with true (de-vigged) odds + live scores
Full chronological odds history for an event. Starter tier (15-min delay); Pro+ (real-time).
Latest vs full history: Default (full_history=0) returns only the most recent odds snapshot per period — all markets and lines from Pinnacle's last update. Set full_history=1 for the complete timeline. Using since forces full-history mode for incremental polling.
How latest-only works: Pinnacle updates all markets within a period simultaneously, giving them the same line_id. The API finds the MAX(line_id) per period and returns all rows at those IDs. Off-the-board lines (which retain an older line_id) are naturally excluded.
Quota cost: 1 token per request + 1 token per row returned. Charge appears in the X-Quota-Cost response header. For incremental polling, pass since=<advance_to_max_timestamp_from_last_response> so each call returns only the new rows since your last poll — keeps cost close to 1 token. Re-using a fixed since value re-fetches everything from that point and burns tokens unnecessarily.
Response fields:
-
odds1 / odds0 / odds2 — Raw decimal odds: home / draw / away (spread/totals: team1-side / draw / team2-side)
-
todds1 / todds0 / todds2 — True (de-vigged) fair odds via Newton's method. These represent the no-vig probabilities.
-
market — moneyline, spread, totals, home_totals, away_totals
-
period — 0 = full match, 1+ = sport-specific (call /api/periods)
-
line — The spread/total value. null for moneyline.
-
line_id — Pinnacle snapshot ID. All markets in the same period share a line_id per update.
-
alt_line_id — Alternative line identifier (for alternate spreads/totals). null on main lines. Pass main_lines_only=1 to skip every row where this is non-null — useful when you only care about the main spread/total per market and want to keep token cost down.
-
cutoff — Wagering cutoff time (UTC)
-
max_win — Maximum win amount for this line
-
score_home / score_away — Live scores (populated for in-play events)
-
red_cards_home / red_cards_away — Live red card counts (soccer)
-
status — Pinnacle market status for this line: 1 = open for betting, 2 = temporarily offline (suspended). null on historical rows before this field was introduced (2026-05-14). Use this to detect Pinnacle suspensions in real time without polling for a missing line.
-
timestamp — When this odds snapshot was recorded (UTC)
Request
- Base URL: https://api.bettingiscool.com (the document declares no server; this is the origin it was published from)
- URL: https://api.bettingiscool.com/api/odds
- Auth: API key in header X-API-Key
Query parameters
Event ID (required)
Only odds after this timestamp (ISO 8601)
0 = latest odds only (default), 1 = full history
1 = main lines only (alt_line_id IS NULL); default 0 includes every alternate spread/total Pinnacle offers
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.