propzapi API reference

A REST API for sports odds — moneyline, spreads, totals and player props, normalized across books. Base URL: https://api.propzapi.com. All responses are JSON.

Quickstart

Grab a free key (500 credits, no card), then call the odds endpoint.

# 1. get a key
curl -X POST https://api.propzapi.com/v1/register
# → { "api_key": "pk_live_…", "plan": "free", "credits": 500 }

# 2. pull odds
curl "https://api.propzapi.com/v1/odds?league=NBA" -H "X-API-Key: pk_live_…"

Authentication

Every /v1 request needs your key in the X-API-Key header. Create and manage keys in the dashboard. A missing or invalid key returns 401.

X-API-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Credits & metering

Calls are metered by market — the more you ask for, the more it costs. A single market is the lightest call; requesting all game markets, or player props, costs more. Rather than track a table, read the X-Credits-Cost header on the response: it's the exact charge for that call, every time, so you are never guessing.

X-Credits-Cost — the exact credits this call charged
X-Credits-Remaining — your balance after the call

GET /v1/odds

Events with odds grouped by book.

sport — e.g. basketball, soccer (optional)
league — e.g. NBA, NFL, EPL (optional)
marketh2h · spreads · totals · player_props (optional; omit for all game markets)
limit — 1–100, default 25
curl "https://api.propzapi.com/v1/odds?league=NBA&market=spreads&limit=2" \
  -H "X-API-Key: pk_live_…"
{
  "count": 2,
  "data": [
    {
      "event_id": "401766...",
      "league": "NBA",
      "home_team": "Boston Celtics",
      "away_team": "New York Knicks",
      "commence_time": "2026-07-09T23:00:00Z",
      "status": "upcoming",
      "books": [
        { "book": "DraftKings", "markets": [
          { "market": "spreads", "outcome": "Boston Celtics", "price": -110, "point": -4.5 },
          { "market": "spreads", "outcome": "New York Knicks", "price": -110, "point": 4.5 }
        ]}
      ]
    }
  ]
}

GET /v1/props

Player props for upcoming games — the markets most odds APIs skip. Same shape as /v1/odds; it's the premium market, and the exact cost is returned in the X-Credits-Cost header.

curl "https://api.propzapi.com/v1/props?league=NBA" -H "X-API-Key: pk_live_…"

GET /v1/events

Fixtures and live scores (no odds). Params: sport, league, status (upcoming · live · final), limit. Also GET /v1/events/{event_id} for one event with all its lines.

curl "https://api.propzapi.com/v1/events?league=EPL&status=live" -H "X-API-Key: pk_live_…"

GET /v1/books

The sportsbooks currently covered.

curl "https://api.propzapi.com/v1/books" -H "X-API-Key: pk_live_…"
# → { "books": ["DraftKings", "ESPN BET", "FanDuel"], "count": 3 }

Response headers

X-Credits-Cost — credits this call charged
X-Credits-Remaining — your balance after the call

Errors

CodeMeaning
401Missing or invalid API key
402Out of credits — top up or upgrade
404Event not found
429Too many free keys minted from this IP

MCP & AI agents

propzapi ships a Model Context Protocol server so an agent can call odds directly. The server card lives at https://api.propzapi.com/.well-known/mcp/server-card.json, the OpenAPI spec at https://api.propzapi.com/openapi.json, and a plain-text brief for models at /llms.txt. Point Claude, n8n or LangChain at those and your agent has live odds in one line.