ParlayAPI Docs Live demo Streaming docs Pricing Get a free key

The Live & In-Play Sports Odds API

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 →
32 sportsbooks SSE + WebSocket 0.5–2s cadence on live markets Live arbs & middles No card to start

1,000 free credits every month. Pinnacle included from the $5/mo tier.

Live is the hard part. We built the pipes.

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.

Push, don't poll

Subscribe once over SSE or WebSocket and receive updates as books move. No burning credits on a polling loop.

Sub-second where it counts

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.

In-game period markets

Quarter / half / period spreads, totals and moneylines as they open and suspend — with a first-seen / last-seen state archive.

Per-book latency, exposed

/live/book_latency tells you how fresh each book actually is, so you never trade on a stale quote thinking it's live.

Live arbitrage & middles

/v1/inplay/arbs surfaces in-play two-way arbs across books in real time. Consensus-guarded, no phantom edges.

Play-by-play built in

Live PBP for NBA, NFL, MLB, NHL, soccer, tennis, MMA and WNBA — score, clock and game state alongside the odds.

The live endpoints

Everything below is live today. All authenticated with a single X-API-Key header (or ?apiKey= for browser EventSource).

EndpointWhat 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/sseIn-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}/liveCurrent in-play board as JSON (the REST view of the stream).
GET /v1/sports/{sport}/live/period_markets?period=Q1&market=spreadIn-game period markets (quarter/half/period lines).
GET /v1/sports/{sport}/live/pointsLive play-by-play: score, clock, game state.
GET /v1/sports/{sport}/live/book_latencyPer-book freshness so you can weight or drop stale quotes.
GET /v1/sports/{sport}/live/source-healthLive per-source freshness classification (no hand-waving).
GET /v1/inplay/arbsReal-time in-play arbitrage across books.

Start streaming in under a minute

# 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.

Live coverage

In-play odds and play-by-play across the sports that actually trade live:

NBANFLMLBNHL WNBASoccerTennisMMA Table tennis (0.5s)+ more

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.

Point a stream at a live game right now

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 →