List Odds
Bulk odds for a sport. Filter by market keys (comma-separated).
Served through a short-TTL single-flight cache — this is the single highest-volume read path (48% of peak-hour traffic on the 2026-08-08 record day) and the response is tier-independent. See api/odds_cache.py for the TTL rationale. No session dependency: the loader opens its own read session so a cancelled leader request can't poison coalesced callers.
Path parameters
Query parameters
Comma-separated bookmaker keys (e.g. 'draftkings,fanduel'). Omitted = all books. Matches the-odds-api's bookmakers param.
Comma-separated bookmaker keys (e.g. 'draftkings,fanduel'). Omitted = all books. Matches the-odds-api's bookmakers param.
Game-period filter. Omitted = full-game markets only (backwards-compatible default). Pass a comma-separated list of canonical codes (e.g. 'q1,q2' or 'h1') to filter to specific periods. Pass 'all' to include every period alongside full-game.
Game-period filter. Omitted = full-game markets only (backwards-compatible default). Pass a comma-separated list of canonical codes (e.g. 'q1,q2' or 'h1') to filter to specific periods. Pass 'all' to include every period alongside full-game.
When true, each bookmaker block carries a link — that book's public event-page URL (plain navigation, no affiliate tagging). Only books with a verified URL template emit links (Bovada, DraftKings, FanDuel, BetMGM, Kalshi, Polymarket, Smarkets); others return null. Matches the-odds-api's includeLinks param.
When true, each bookmaker block carries a link — that book's public event-page URL (plain navigation, no affiliate tagging). Only books with a verified URL template emit links (Bovada, DraftKings, FanDuel, BetMGM, Kalshi, Polymarket, Smarkets); others return null. Matches the-odds-api's includeLinks param.
When true, each bookmaker block carries book_event_id (that book's own event identifier) and every outcome carries book_outcome_id (that book's own selection/contract id). Use these to join PropLine rows onto a book's native feed without matching on team names, players and lines. Kalshi ships both — the event ticker and the per-contract market ticker (e.g. KXMLBGAME-26AUG08NYYBOS-NYY). Books that don't publish a stable id return null. PropLine-specific; both fields are always present in the response shape and are null unless this param is set (same convention as link/includeLinks), so no existing consumer's parsing changes.
When true, each bookmaker block carries book_event_id (that book's own event identifier) and every outcome carries book_outcome_id (that book's own selection/contract id). Use these to join PropLine rows onto a book's native feed without matching on team names, players and lines. Kalshi ships both — the event ticker and the per-contract market ticker (e.g. KXMLBGAME-26AUG08NYYBOS-NYY). Books that don't publish a stable id return null. PropLine-specific; both fields are always present in the response shape and are null unless this param is set (same convention as link/includeLinks), so no existing consumer's parsing changes.
Response
Successful Response