⏱ 5-minute walkthrough

Get started

From zero to your first live sportsbook odds response. No credit card. The first two steps don't even need a signup.

1 Try without signup ~30s

Every /v1/try/{sport_key}/* endpoint is no-auth, IP-rate-limited at 60 req/h. Confirm the API is reachable from your machine before you do anything else.

Run

curl -s https://parlay-api.com/v1/try/baseball_mlb/odds | head -c 400

You should see a JSON array of MLB events with bookmaker prices nested inside. If you see HTTP 429, you hit the IP rate limit, just wait a minute and retry.

Other no-auth demos worth trying: /v1/try/basketball_nba/arbitrage, /v1/try/baseball_mlb/ev, /v1/try/americanfootball_nfl/middles.

2 Sign up for a free key ~30s

Free tier: 1,000 requests/month, no credit card. Your key starts with pak_live_ and is yours alone, keep it out of public repos.

Get your free key →

Set the key

export PARLAY_API_KEY="pak_live_..."

3 Install a reference client ~1m

Pick your language. Every client is a single file, ships with retry / backoff / idempotency built in, and works against the same API.

Quick install (Python)

pip install requests
curl -O https://raw.githubusercontent.com/JacobiusMakes/ParlayAPI/main/examples/parlay_api_client.py

Don't see your language? Generate a client from the OpenAPI spec at /openapi.json:

openapi-generator-cli generate \
  -i https://parlay-api.com/openapi.json \
  -g $LANGUAGE -o ./parlay-api-$LANGUAGE

4 Make your first authenticated call ~1m

Pull MLB moneylines from US books with your key. Same shape works for any sport, any market, any region.

Python

import os
from parlay_api_client import Client

client = Client(api_key=os.environ["PARLAY_API_KEY"])
odds = client.odds("baseball_mlb", regions="us", markets="h2h,spreads,totals")
print(f"Got {len(odds)} events. First event:")
print(odds[0])

Or with curl

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/odds?regions=us&markets=h2h,spreads,totals' \
  -H "X-API-Key: $PARLAY_API_KEY" | jq '.[0]'

Read the response headers too: X-Credits-Remaining tells you what's left this month, X-Request-ID goes in any support ticket.

5 Know how errors look ~30s

Every error has the same shape: error (machine code), message (human), request_id (echo back to support), docs_url (where to learn more).

{
  "error": "rate_limit",
  "message": "Rate limit exceeded. Retry after 60 seconds.",
  "retry_after_seconds": 60,
  "request_id": "01HPK8...EXAMPLE",
  "docs_url": "https://parlay-api.com/limits"
}

The reference clients honor Retry-After automatically with capped exponential backoff. If you're rolling your own, see /docs/best-practices for the spec.

You're done. Five minutes in and you have live cross-book sportsbook odds in your script. Next step is up to you: build a daily +EV digest, set up an arb alerter, drop the API into an AI agent, or just open the playground to experiment with every endpoint.

Where to go from here