Stream real-time sportsbook odds the moment they move — over Server-Sent Events or WebSocket, across 32 sportsbooks, down to sub-second on the fast ones. Live arbitrage, in-game period markets, per-book latency, and play-by-play in one feed.
Get a free key See it live →1,000 free credits every month. Pinnacle included from the $5/mo tier.
Pulling a static odds snapshot is easy. Keeping a whole book board fresh while a game is in play — suspends, re-opens, line moves every few seconds, per-book latency all different — is the hard part. That's what this API is for. Point a stream at a sport and you get the current in-play board pushed to you as it changes, with the same shapes as our REST odds so you don't learn two data models.
Subscribe once over SSE or WebSocket and receive updates as books move. No burning credits on a polling loop.
Fast in-play books (e.g. table tennis at 0.5s, WNBA at 2s) are captured at their real cadence, not a lazy 30s tick.
Quarter / half / period spreads, totals and moneylines as they open and suspend — with a first-seen / last-seen state archive.
/live/book_latency tells you how fresh each book actually is, so you never trade on a stale quote thinking it's live.
/v1/inplay/arbs surfaces in-play two-way arbs across books in real time. Consensus-guarded, no phantom edges.
Live PBP for NBA, NFL, MLB, NHL, soccer, tennis, MMA and WNBA — score, clock and game state alongside the odds.
Everything below is live today. All authenticated with a single X-API-Key header (or ?apiKey= for browser EventSource).
| Endpoint | What it streams / returns |
|---|---|
GET /v1/sse/hot/{sport} | Server-Sent Events stream of the freshest odds for a sport as they change. |
GET /v1/sports/{sport}/live/sse | In-play SSE stream scoped to a sport's live games. |
GET /v1/ws/odds/{sport} | WebSocket odds feed — same board, bidirectional transport. |
GET /v1/sports/{sport}/live | Current in-play board as JSON (the REST view of the stream). |
GET /v1/sports/{sport}/live/period_markets?period=Q1&market=spread | In-game period markets (quarter/half/period lines). |
GET /v1/sports/{sport}/live/points | Live play-by-play: score, clock, game state. |
GET /v1/sports/{sport}/live/book_latency | Per-book freshness so you can weight or drop stale quotes. |
GET /v1/sports/{sport}/live/source-health | Live per-source freshness classification (no hand-waving). |
GET /v1/inplay/arbs | Real-time in-play arbitrage across books. |
# Stream live NBA odds as they move (Server-Sent Events) curl -N -H "X-API-Key: YOUR_KEY" \ "https://parlay-api.com/v1/sse/hot/basketball_nba" # One-shot in-play arbs across all books curl -H "X-API-Key: YOUR_KEY" \ "https://parlay-api.com/v1/inplay/arbs"
# pip install httpx (SSE over a streaming GET) import httpx headers = {"X-API-Key": "YOUR_KEY"} url = "https://parlay-api.com/v1/sse/hot/baseball_mlb" with httpx.stream("GET", url, headers=headers, timeout=None) as r: for line in r.iter_lines(): if line.startswith("data:"): print(line[5:].strip()) # a fresh odds update
// Browser EventSource (query-param auth for SSE) const es = new EventSource( "https://parlay-api.com/v1/sse/hot/icehockey_nhl?apiKey=YOUR_KEY" ); es.onmessage = (e) => { const update = JSON.parse(e.data); console.log(update); // push me the board as it moves };
Full streaming guides: WebSocket quickstart · SSE guide · live player props · streaming overview.
In-play odds and play-by-play across the sports that actually trade live:
Books span the US majors (DraftKings, FanDuel, BetMGM, Caesars, BetRivers, Hard Rock, Bovada), Pinnacle as the sharp anchor, DFS apps (PrizePicks, Underdog, Sleeper), and prediction markets (Kalshi) — 32 in all, in one feed. See the live coverage matrix and real-time status.
Free key in 30 seconds, 1,000 credits a month, no card. Streaming works on every paid tier and Pinnacle is included from $5/mo.
Get a free key Try with no signup →