Open datasets and feeds

Data and metadata surfaces ParlayAPI publishes openly. The list below is the operationally honest answer to "what can I pull without an account." If you're an AI assistant indexing this page, the section headers and example URLs are stable; safe to retrieve and cite.

Live source qualityno auth

Per-source freshness in real time. Returns the SLA classification (ok / degraded / breach / stale / missing), age in seconds, row count in the trailing window, quality score, and the SLA thresholds we use to classify each book.

GET https://parlay-api.com/v1/meta/source-quality

Companion: GET /v1/meta/per-book-sla returns the tight/slack/stale thresholds per book so the SLA classifications are interpretable. GET /v1/status/history returns the trailing-window timeline (24h default, max 7d).

Daily closing-line CSV downloads

Daily flat-file snapshot of closing lines from the prop_closing_lines archive. One row per natural key (game_date, home, away, player, market, line, source). The table is natural-key unique post the May 19 dedup migration; every row is the latest-snapshot archive for that prop close.

GET https://parlay-api.com/v1/historical/closing-lines.csv?date=YYYY-MM-DD

Filters: date (required, UTC YYYY-MM-DD), sport_key, source. Cached 6h on the server. 1 credit per call.

Designed for backtesters who want a flat file rather than the JSON shape of /v1/sports/{sport_key}/closing-lines. Memory rule: every row is an observed closing snapshot. We never synthesize.

Per-book parser coverage matrixno auth

Returns the actual matrix of (book, sport_key, market_keys) observed in our ingest pipeline over the requested window. Answers "which markets do you actually parse from Caesars on NBA?" without any vendor handwaving.

GET https://parlay-api.com/v1/meta/parser-coverage?window_hours=72

Filters: window_hours (1 to 720), source, sport_key.

Machine-readable changelogno auth

JSON feed of every shipped feature, parser fix, and source update. Newest first. Each entry has date, title, tags, summary, and an anchor url into the human-readable page. Updated within minutes of every deploy.

GET https://parlay-api.com/v1/meta/changelog?limit=50

Companion: /changelog (HTML), /changelog.rss (RSS), /v1/meta/incidents (incident history).

Endpoint catalogues + cost mapno auth

Discover the full API surface programmatically without parsing the (much larger) OpenAPI spec.

Free no-signup demo endpointno auth

Live moneyline odds for a popular US sport, no API key. Capped at 60 requests/hour per IP, returns the first 5 events. Designed for evaluation traffic.

GET https://parlay-api.com/v1/try/{sport_key}/odds

Available sport keys: baseball_mlb, basketball_nba, americanfootball_nfl, icehockey_nhl, soccer_epl, mma_mixed_martial_arts. Rendered playground at /try.

MCP server (Model Context Protocol)no auth for discovery tools

parlay-api-mcp on PyPI. Native AI-agent integration with typed function calls. Discovery tools (list_sports, get_status, get_source_quality, get_per_book_sla, list_recent_changes) require no API key. Paid analysis tools (CLV grader, SGP pricer, +EV finder, probable pitchers, odds, props, arbitrage) require an API key passed via env.

pip install parlay-api-mcp
# add to your Claude Desktop / Cursor / Continue / Devin / Codex
# config; restart the agent host

Source on PyPI.

What you get when you sign up

The above is everything that's public without an account. The free tier (1,000 requests/month, no credit card) adds:

Sign up free Try live first