# Historical odds API: use recorded windows, not assumed archives

Choose a branded history API, preserve observation timestamps and gaps, and distinguish PrizePicks line history from DraftKings sportsbook and Pick6 records.

Canonical page: https://getoddsapi.com/historical-odds-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/historical-odds-api
Reviewed: 2026-11-07 UTC

Choose a branded history API, preserve observation timestamps and gaps, and distinguish PrizePicks line history from DraftKings sportsbook and Pick6 records.

## History belongs to the dataset that recorded it

A historical odds integration needs a market identity, an observation time and evidence of what was retained. GetOdds /api/v1/markets returns a current PrizePicks sample; it does not offer historical queries or an archive. Use the independently authenticated branded services for their documented retained history.

## Match your question to a history endpoint

These paths belong to their named hosts and use separate credentials. Verify the current OpenAPI parameters before querying; never assume an as-of filter works on every endpoint.

| Host | Resource | Meaning |
| --- | --- | --- |
| prizepicksapi.com | /api/v1/projections/{id}/history | Recorded changes for a projection ID obtained from that service |
| prizepicksapi.com | /api/v1/changes | Recorded projection-change feed |
| draftkingsapi.com | /api/v1/pick6/history | Pick6 recorded change history |
| draftkingsapi.com | /api/v1/pick6/line-history | Pick6 line-history contract; consult required filters |
| draftkingsapi.com | /history-coverage | Dataset-specific retained coverage and gaps |

## Access windows are not retention guarantees

PrizePicksAPI currently applies a seven-day history window to Free accounts. Paid history access removes that plan window but remains limited to records actually captured and available, with historical-row allowances. Its documentation describes recorded line history beginning 28 October 2026; this is not evidence of a complete multi-season archive.

DraftKingsAPI publishes dataset-specific history coverage. Consult that report and current plan documentation instead of assuming that sportsbook, Pick6 and DFS share a start date or retention window. Purchased archive access and ordinary API plan access are distinct products.

## Avoid look-ahead bias in a backtest

Record the query, filters, source identity and capture timestamp alongside the data. Choose values observed before your decision cutoff, handle missing periods explicitly, and preserve revisions instead of silently overwriting them.

A closing price requires an explicit cutoff and evidence of the last eligible observation. No returned row does not mean the market never existed. A result endpoint is also not proof that a historical price was available at prediction time.

## Questions

### Does GetOdds have a historical markets endpoint?

The current gateway does not. This guide points to separate branded history services and their contracts.

### Does paid access mean unlimited historical coverage?

No. Entitlement to retained records cannot recreate observations that were never collected or have been removed.

### Can I reuse a GetOdds projection ID on another host?

Do not assume identity compatibility. Obtain IDs through the service whose history endpoint you intend to call.

## Sources

- [PrizePicksAPI history coverage](https://prizepicksapi.com/history-coverage)
- [PrizePicksAPI current contract](https://prizepicksapi.com/openapi.json)
- [DraftKingsAPI history coverage](https://draftkingsapi.com/history-coverage)
- [DraftKingsAPI OpenAPI](https://draftkingsapi.com/openapi.json)

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.
