REST + SSE + WebSocket

Sports odds API for products that need prices and context

Use one event ID for fixtures, event records, results and normalized pre-match sportsbook prices, then follow supported changes through SSE or WebSockets.

One event, filtered to two bookmakers200 OK
Request
curl --request GET \
  --header "X-API-Key: $ODDS_API_KEY" \
  "https://api.odds-api.net/v1/events/{event_id}/odds/snapshot?bookmakers=pinnacle,draftkings"
Response
{
  "event_id": "nba-example-001",
  "as_of_ts_ms": 1784092451749,
  "ttl_seconds": 60,
  "resume": "1784092451749-0",
  "items": [{
    "bookmaker": "pinnacle",
    "market": "moneyline",
    "selection": "home",
    "odds": 1.91
  }]
}

The operational contract

What your integration can rely on

Keep transport, freshness and credit semantics beside the sample response—not buried in a support thread.

Authentication
X-API-Key request header
Current-state cost
One base credit, plus payload units for large responses
Freshness
as_of_ts_ms is snapshot assembly time; ttl_seconds is current cache policy
Continuity
Persist resume, apply deltas in order and reload after a resync event
Scope
Pre-match sportsbook odds; in-play sportsbook odds are not offered

One join key

One event ID connects the product

Load the fixture once, then attach the record, result and bookmaker prices without matching the same game again.

01

Bookmaker odds

Compare normalized markets, selections, lines and prices by bookmaker.

GET /v1/events/{event_id}/odds/snapshot
02

Fixtures

Load covered games by sport, league, team and start time.

GET /v1/events
03

Match records

Retrieve the canonical event record used across every related endpoint.

GET /v1/events/{event_id}
04

Results

Attach the result to the same event without another matching layer.

GET /v1/events/{event_id}/results

Snapshot first

Current odds beside your stats

Use the REST response as state. Streams then deliver supported pre-match changes and continuity signals.

  1. 01

    Find the event

    GET /v1/events?sport={sport}&league={league}

    Find the fixture in your schedule and keep its canonical event ID.

  2. 02

    Add current odds

    GET /v1/events/{event_id}/odds/snapshot

    Use that event ID to add normalized bookmaker prices to the same match record.

  3. 03

    Keep prices updated

    SSE or WebSocket

    Open the matching SSE or WebSocket route for supported pre-match changes and resume handling.

Recommended entry point

Start with Starter at $30/month

Starter includes 50,000 base API credits, 60 requests per minute and one concurrent stream. The account can request every bookmaker and market available to it.

  • Best fit for a first commercial comparison, model, alert or match-centre integration.
  • Builder is $90/month for 2 million base credits and eight concurrent streams.
  • Confirm the exact sport, league, bookmaker and market combination in live coverage before launch.
Choose Starter

Poor fit

Use another feed when the requirement is different

This API is strongest when normalization and pre-match delivery matter more than source-native execution latency.

  • Use a direct licensed feed when ultra-low source-to-consumer latency is mandatory.
  • Use another provider when in-play sportsbook odds are required.
  • Do not treat as_of_ts_ms as the exact time a bookmaker first changed its price.

Verification

Sources and fact date

The contract below is grounded in the live documentation, coverage catalogue, pricing page and public developer package.

Product contract verified 12 September 2026. Live coverage counts are generated from the current catalogue on each request.

  1. API referenceAuthentication, endpoint parameters, response schemas and stream envelopes.
  2. Live coverageCurrent sports, leagues, bookmakers and recently observed markets.
  3. Refresh-rate policyPublished refresh targets and the meaning of freshness fields.
  4. PricingMonthly credits, request limits, streams and plan eligibility.
  5. Public developer packageOpenAPI exports, SDKs, examples, Postman collection and MCP server.

Short answers

Sports Odds API FAQs

Data, endpoints, streaming and commercial fit.

What does the sports odds API include?

The API connects sports fixtures, canonical event records, match results and normalized bookmaker odds through the same event ID.

How do I retrieve odds for a game?

Request the event list, keep the event ID, then call the event odds snapshot endpoint. Filter the response by bookmaker or market when your product needs a smaller payload.

Can I stream sports odds updates?

Yes. Start with the REST snapshot, then connect to the matching SSE or WebSocket endpoint for price updates.

Which sports can I access?

The catalog includes football, basketball, baseball, ice hockey, rugby league, AFL, combat sports and more. GET /v1/sports returns the sports available through the API.

Can I use the sports data in a commercial product?

Yes. Paid plans support customer-facing apps, comparison sites, dashboards, alerts and internal tools. The terms cover the data licence and redistribution rules.