# Sports odds feed API: choose a verifiable data contract

Evaluate feed coverage, source clocks, history and delivery before connecting an application. Start with the GetOdds source-scoped gateway.

Canonical page: https://getoddsapi.com/odds-feed-api

## Free API key

Get a free GetOdds API key: **1,000 requests per UTC day and 60 per minute, no card**. One key covers REST and the hosted MCP server.

Sign up: https://getoddsapi.com/sign-up?ref=ai-claudebot

## Quickstart

1. Create an account at https://getoddsapi.com/sign-up?ref=ai-claudebot, open https://getoddsapi.com/dashboard and issue a key with the sources you need (draftkings, fanduel, betrivers, prizepicks or underdog). Keep it in a server environment variable named GETODDS_API_KEY.
2. Read current DraftKings NBA spreads with curl:

```bash
curl --fail-with-body "https://getoddsapi.com/api/v1/odds?sport=NBA&market=spread&fresh_only=true&limit=50" \
  -H "Authorization: Bearer $GETODDS_API_KEY"
```

3. The same request in Python (standard library only):

```python
import json, os, urllib.request

req = urllib.request.Request(
    "https://getoddsapi.com/api/v1/odds?sport=NBA&market=spread&fresh_only=true&limit=50",
    headers={"Authorization": "Bearer " + os.environ["GETODDS_API_KEY"]},
)
with urllib.request.urlopen(req) as res:
    rows = json.load(res)["data"]
for row in rows:
    print(row["away"], "at", row["home"], row["side"], row["line"], row["american"], row["observed_at"])
```

4. Check `observed_at`, `age_seconds` and `stale` on every row before using a price. Full reference: https://getoddsapi.com/docs

## Use with Claude (MCP)

```bash
claude mcp add --transport http getodds https://getoddsapi.com/api/mcp \
  --header "Authorization: Bearer $GETODDS_API_KEY"
```

The MCP tools follow the key's source grants and share its allowance. Setup guide: https://getoddsapi.com/use-with-claude

## Pricing

| Plan | Allowance | Price |
| --- | --- | --- |
| Free key | 1,000 requests a day, 60 a minute | $0, no card |
| Developer Bundle | 10,000 requests or credits a month on each of four sources | $149 a month |

Free development allowance: 1,000 requests per UTC day and 60 per minute per account, with no payment step. Paid: the Developer Bundle at $149 per month, with 10,000 monthly requests or credits on each of four sources.
Details: https://getoddsapi.com/bundle

## Guide


Canonical: https://getoddsapi.com/odds-feed-api
Reviewed: 2026-11-07 UTC

Evaluate feed coverage, source clocks, history and delivery before connecting an application. Start with the GetOdds source-scoped gateway.

## Write the coverage requirement first

List the bookmaker, sport, competition, market, period, line and selection you need. A player projection threshold, sportsbook moneyline and DFS salary are separate data products. A broad book count does not establish coverage of your exact market.

## What GetOdds returns today

The GetOdds market gateway returns partial player-threshold datasets from PrizePicks, Underdog, DraftKings Pick6 and FanDuel, including player, league, market and observation clocks. It does not return sportsbook prices. Branded services have their own data references and keys.

## Measure a feed with retained evidence

Store a bounded acceptance sample containing request time, source time, event identity and response status. Check missing rows, suspended offers, duplicates and delayed captures. Agree a staleness threshold for each use case and display stale observations explicitly. Missing data should not become zero.

## Budget the entire application

Multiply polling frequency by pages, filters and active sessions. Cache shared reads server-side. Put credentials behind an application endpoint with its own access policy. Keep an upper bound on retries and response size; a source outage must not become an unlimited polling loop.

## Questions

### Is this a multi-book feed?

The GetOdds gateway provides four source-specific threshold datasets and stored DraftKings-via-ESPN sportsbook reads through separately scoped endpoints. It does not provide multi-book comparison.

### Can a receipt timestamp prove a fresh quote?

No. Receipt time and source update time describe different events.

### How should I display missing data?

Show an explicit empty or unavailable state, with the last retained capture labelled separately if you keep it.

## Sources

- [GetOdds Node guide](https://getoddsapi.com/docs/node)
- [GetOdds Python guide](https://getoddsapi.com/docs/python)
- [GetOdds developer documentation](https://getoddsapi.com/docs)

Independent product; not affiliated with the operators named. No picks or predicted profits.

---

GetOdds is an independent developer product and is not affiliated with any sportsbook or pick’em operator. Prices describe data, not betting advice.
