# DraftKings DFS Contests API: Entry Fees and Prize Pools

Read DraftKings DFS contests by sport and slate: contest name, format, entry fee, maximum entries and prize pool, with the source row and capture time.

Canonical page: https://draftkingsapi.com/draftkings-dfs-contests-api. Markdown: https://draftkingsapi.com/draftkings-dfs-contests-api.md. Site index for agents: https://draftkingsapi.com/llms.txt.

## Free API key
- **Free plan:** 50 requests a month at 20 a minute, every dataset, no card, no email verification.
- **Sign up:** https://draftkingsapi.com/auth/sign-up?ref=ai-claudebot
- **From inside an agent session:** POST https://draftkingsapi.com/api/v1/agent/signup with JSON `{"data_wanted": "...", "use_case": "...", "ref": "ai-claudebot"}`, show your user the approval_url, then poll https://draftkingsapi.com/api/v1/agent/token with device_code. The key is returned once.
- **No key yet:** `curl --fail-with-body "https://draftkingsapi.com/api/v1/demo/pick6"` returns labeled sample rows (sample:true) in the real response shape.

## Quickstart

1. Create a free key at https://draftkingsapi.com/auth/sign-up?ref=ai-claudebot (no card) and export it: `export DRAFTKINGS_API_KEY=...`

2. Call the API with curl:

```bash
curl --max-time 30 --fail-with-body 'https://draftkingsapi.com/api/v1/pick6/projections?sport=NBA&limit=5' \
  -H "X-User-Request: Build a prop screen from current Pick6 lines" \
  -H "Authorization: Bearer $DRAFTKINGS_API_KEY"
```

3. Or call it from Python:

```python
import os, requests

response = requests.get(
    "https://draftkingsapi.com/api/v1/pick6/projections?sport=NBA&limit=5",
    headers={
        "Authorization": "Bearer " + os.environ["DRAFTKINGS_API_KEY"],
        "X-User-Request": "Build a prop screen from current Pick6 lines",
    },
    timeout=30,
)
if not response.ok:
    raise RuntimeError(f"API {response.status_code}: {response.text}")
print(response.json())
```

4. Full walkthrough: https://draftkingsapi.com/quickstart. OpenAPI: https://draftkingsapi.com/openapi.json. Every route accepts format=csv on list endpoints.

## Use it from Claude (MCP)

MCP server: https://draftkingsapi.com/api/mcp (Streamable HTTP). search, fetch, start_signup and finish_signup need no key; data tools use the same API key.

```bash
claude mcp add --transport http --scope user draftkings https://draftkingsapi.com/api/mcp --header "Authorization: Bearer $DRAFTKINGS_API_KEY"
```

Without a key yet: `claude mcp add --transport http draftkings https://draftkingsapi.com/api/mcp`, then call start_signup. Setup for other clients: https://draftkingsapi.com/agents.md.

## Pricing

| Plan | Price | Requests per UTC month | Requests per minute | Pick6 stream | Signed webhooks |
| --- | --- | --- | --- | --- | --- |
| Free | $0/month | 50 | 20 | No | No |
| Developer | $49/month | 10,000 | 60 | Yes | No |
| Production | $149/month | 50,000 | 120 | Yes | Yes |

- **Free:** Build and test against every dataset.
- **Developer:** Keep your app running with more requests and push delivery.
- **Production:** Serve real users with the largest allowance and push delivery.

Plans and checkout: https://draftkingsapi.com/pricing

## Contests for a sport or slate in one call

`/api/v1/dfs/contests` returns the contest rows captured from the DraftKings lobby for the draft groups this service collects, filtered by `sport` and `slate_id`. Each row carries the source record in `data`, unmodified, plus `observed_at` and the capture receipt.

```
curl --fail-with-body "https://draftkingsapi.com/api/v1/dfs/contests?sport=NFL&limit=25" \
  -H "X-User-Request: Build a DFS lineup tool from current salaries" -H "Authorization: Bearer $DRAFTKINGS_API_KEY"

curl --fail-with-body "https://draftkingsapi.com/api/v1/dfs/contests?sport=NFL&slate_id=SLATE_ID&limit=100" \
  -H "X-User-Request: Build a DFS lineup tool from current salaries" -H "Authorization: Bearer $DRAFTKINGS_API_KEY"
```

```
import json, os, urllib.parse, urllib.request
from collections import Counter

BASE = os.environ.get("DRAFTKINGS_API_BASE", "https://draftkingsapi.com")
KEY = os.environ["DRAFTKINGS_API_KEY"]


def get(path, params):
    url = f"{BASE}{path}?{urllib.parse.urlencode(params)}"
    request = urllib.request.Request(url, headers={"Authorization": f"Bearer {KEY}", "X-User-Request": "Rank DraftKings DFS contests by prize pool"})
    with urllib.request.urlopen(request, timeout=30) as response:
        return json.load(response)


page = get("/api/v1/dfs/contests", {"sport": "NFL", "limit": 100})
contests = [row["data"] for row in page["data"]]
print(Counter(c.get("gameType") for c in contests))
for c in sorted(contests, key=lambda c: c.get("po") or 0, reverse=True)[:10]:
    # Source keys, passed through unmodified. Read the table on this page before relying on them.
    print(c["id"], c["dg"], c.get("gameType"), c["n"], "entry", c.get("a"), "max entries", c.get("m"), "prizes", c.get("po"))
# Next page: pass page["pagination"]["next_cursor"] as "cursor".
```

## Reading the contest keys

The keys inside `data` belong to DraftKings and are short. We pass them through unchanged and do not rename them, so they can change without notice. This is what they held in the rows we captured.

| Key | What it holds | Basis |
| --- | --- | --- |
| `id` | Contest id | From our captures |
| `dg` | Draft group id. Equal to the row's `slate_id` on every stored contest | True on all 19,082 contest rows we hold |
| `n` | Contest name as the lobby shows it | From our captures |
| `gameType` | Contest format, such as Classic, Showdown Captain Mode, Tiers or Snake | From our captures |
| `a` | Entry fee in dollars. 0 on free contests | Checked: in the median paid contest, `po` is 0.9 × `a` × `m` |
| `m` | Maximum entries | Checked with the same relation |
| `po` | Listed total prizes in dollars | Checked: equals the `pd.Cash` text on 84% of rows |
| `pd` | Prize description, such as `{"Cash": "$12,003,000"}` | From our captures |
| `mec` | Maximum entries per user | From our captures |
| `sd` | Start time as `/Date(milliseconds)/` | From our captures |
| `attr` | Lobby flags as strings, such as `IsGuaranteed` | From our captures |

Prize amounts and entry fees are what the lobby listed when we captured it. They are not a promise of payout and not contest results.

## What was stored on 11 Nov 2026

Counts of contest rows in storage when this page was written, from a read-only query. They change as collection runs and old contests roll off, and they cover the draft groups we collect, not every contest DraftKings runs.

| Sport code | Contest rows | Median entry fee | Largest listed prize pool |
| --- | --- | --- | --- |
| NFL | 7,866 | $5 | $12,003,000 |
| NBA | 3,615 | $9 | $333,333 |
| CFB | 2,945 | $5 | $200,000 |
| NHL | 1,765 | $10 | $67,000 |
| GOLF | 1,369 | $10 | $125,000 |
| CBB | 634 | $10 | $30,000 |
| SOC | 472 | $20 | $30,000 |
| MMA | 268 | $10 | $500,000 |
| TEN | 83 | $20 | $30,000 |
| LOL | 65 | $5 | $15,000 |

Formats among all 19,082 contest rows: Classic 8,687, Showdown Captain Mode 5,766, Tiers 1,213, Showdown 1,175, and smaller counts of Snake, Madden Showdown and In-Game Showdown.

## Contests, slates and salaries together

A contest points at its draft group through `dg`, which is the `slate_id` on slates and salaries. List slates, choose one, then pull its contests and its roster-slot salaries.

```
curl --fail-with-body "https://draftkingsapi.com/api/v1/dfs/slates?sport=NBA&limit=25" \
  -H "X-User-Request: Build a DFS lineup tool from current salaries" -H "Authorization: Bearer $DRAFTKINGS_API_KEY"

curl --fail-with-body "https://draftkingsapi.com/api/v1/dfs/players?sport=NBA&slate_id=SLATE_ID&view=compact&limit=1000" \
  -H "X-User-Request: Build a DFS lineup tool from current salaries" -H "Authorization: Bearer $DRAFTKINGS_API_KEY"
```

Scoring rules by sport are summarized on [DFS scoring](/draftkings-dfs-scoring), with the [fantasy points calculator](/tools/draftkings-fantasy-points-calculator) for NFL and NBA.

## What the contest data does not include

Contest rows describe the lobby, not the outcome.

- No contest results, standings, winning lineups or payouts made. Not supplied.
- No entry counts you can rely on for ownership. The source field for entries is not documented and we do not interpret it.
- No stream or webhooks for DFS. Poll, and keep your own record from each capture.
- Not every slate or contest: collection covers selected draft groups across a rotation of sports.

```
curl --fail-with-body "https://draftkingsapi.com/api/v1/dfs/contests?sport=NBA&limit=10" \
  -H "X-User-Request: Build a DFS lineup tool from current salaries" -H "Authorization: Bearer $DRAFTKINGS_API_KEY"
```

## FAQ

### Is there a DraftKings contests API?
DraftKings does not publish one for developers. This independent API returns the contest rows it captures from the DraftKings lobby for selected draft groups, with the source record unchanged and a capture time.

### Does it include entry fees and prize pools?
Yes, as source keys: in the rows we hold a is the entry fee in dollars, m the maximum entries and po the listed total prizes. Those meanings are checked against the data, not documented by DraftKings.

### Does it include contest results or winners?
No. Contest results, standings, winning lineups and payouts are not supplied.

### Can I export contests to CSV?
Yes. Add format=csv to the request. The source record stays in one JSON data column.

### Is there a free DraftKings API?
Yes. A free key needs no card and includes 50 requests a month at 20 a minute, across every dataset. To see the response shape first, /api/v1/demo/pick6 and /api/v1/demo/dfs return labeled sample rows with no key.

### Is this an official DraftKings API?
Independent service operated by DD Inc., not affiliated with or endorsed by DraftKings. No wagering: this service does not place, recommend or settle entries or bets.

### Can I use it from an AI agent?
Yes. Connect the MCP server at https://draftkingsapi.com/api/mcp, or call REST with a Bearer key. An agent can get a key for its user with start_signup.

### How do I reach support?
Email support@draftkingsapi.com.

Independent service operated by DD Inc., not affiliated with or endorsed by DraftKings. No wagering: this service does not place, recommend or settle entries or bets.
