Getting started

Documentation

ParlayLedger API

Sportsbook odds, line history, events, box score stats and selection grading over one REST API and one API key. AI agents can use the same key through the ParlayLedger MCP server.

  • Base URL https://api.parlayledger.com
  • Format JSON
  • Times ISO 8601, UTC
  • Odds American

Quick start

  1. Get an API keyCreate an account and pick a plan. Your key is on your dashboard. Store it in an environment variable such as PARLAYLEDGER_API_KEY.
  2. Find an event List a league's games for a day with GET /events. Each event has the id the odds and stats endpoints take.
  3. Fetch odds or stats Ask for the event's latest odds, its line movement, or its box score.
# 1. Find an event
curl "https://api.parlayledger.com/events?leagueKey=NBA&date=2026-10-21" \
  -H "X-API-Key: $PARLAYLEDGER_API_KEY"

# 2. Latest moneyline odds for it (use an id from step 1)
curl "https://api.parlayledger.com/odds/event/EVENT_ID?markets=h2h" \
  -H "X-API-Key: $PARLAYLEDGER_API_KEY"

Authentication

Send your API key in the X-API-Key header on every request.

Header
X-API-Key: YOUR_API_KEY
Warning:

Keep your API key on your server

Anyone with the key can spend your quota. Do not put it in browser code, mobile apps or public repositories. Call the API from your backend.

Note:

Header, not query string

The API reads the key only from the X-API-Key header. An apiKey query parameter is ignored and the request returns 401. The MCP server also accepts Authorization: Bearer <apiKey>.

Quotas and limits

Usage is a monthly quota per account. Every request that passes authentication counts as one call, including requests that return an error such as 404. Requests rejected with 401 do not count. Each MCP tool call also counts as one call. The count resets at 00:00 UTC on the first day of each month.

PlanCalls per month
Starter500
20K20,000
100K100,000
5M5,000,000
15M15,000,000

Quota headers

HeaderSent onMeaning
X-Quota-LimitAuthenticated responsesCalls included in your plan each month.
X-Quota-UsedAuthenticated responses, not 429Calls counted so far this month, including this one.
X-Quota-ResetAuthenticated responsesWhen the count resets: 00:00 UTC on the first day of next month, as ISO 8601.
Retry-After429 onlySeconds until the reset.

When the quota is used up, data requests return 429 until the reset:

429 Too Many Requests
{
  "statusCode": 429,
  "message": "Monthly API quota exceeded",
  "resetMonthly": "2026-11-01T00:00:00.000Z"
}

RDK searches and backtests also count toward your plan's monthly RDK limits, separately from API calls. Track your usage on the dashboard.

Errors

Errors use standard HTTP status codes and a JSON body with statusCode, message and error.

400 Bad Request
{
  "statusCode": 400,
  "message": "leagueKey is required",
  "error": "Bad Request"
}
StatusWhen
400A required parameter is missing or malformed, for example a date that is not YYYY-MM-DD or an eventId that is not a UUID.
401The X-API-Key header is missing, too short, or not a key ParlayLedger issued.
404The event does not exist.
429This month's quota is used up. Wait for X-Quota-Reset or upgrade your plan.
503Authentication is briefly unavailable. Retry with backoff.

If errors persist, check the API status page.