DraftKings APIsportsbook.draftkings.com ↗
Fetch NFL prop market categories and live odds lines from DraftKings Sportsbook. Access every posted line, American and decimal odds, and alternate ladders.
What is the DraftKings API?
This 2-endpoint API exposes NFL betting market data from DraftKings Sportsbook, covering market navigation and full odds lines. The list_prop_categories endpoint returns every market group and subcategory available under the NFL Games tab — from TD Scorers to Defensive props — while get_prop_lines returns every posted selection with American and decimal odds, line values, and alternate-line ladders for any subcategory you choose.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/2962685d-1dd7-498a-af54-101aa8b88fb1/list_prop_categories' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace sportsbook-draftkings-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: DraftKings NFL Player Props — browse categories, then fetch lines."""
from parse_apis.sportsbook_draftkings_com_api import DraftKings, InputFormatInvalid
client = DraftKings()
# Browse all market groups and their subcategories.
for group in client.groups.list(limit=20):
print(group.group, f"({len(group.subcategories)} subcategories)")
for sub in group.subcategories:
print(f" {sub.name} player_prop={sub.is_player_prop} o/u={sub.is_over_under}")
# Pick the first subcategory from the first group to drill into lines.
first_group = client.groups.list(limit=1).first()
if first_group is not None:
sub = first_group.subcategories[0]
# Fetch events (games) for that subcategory.
try:
for event in sub.list_lines(limit=3):
print(event.name, event.start_time, event.status)
print(f" {event.home_team.short_name} vs {event.away_team.short_name}")
for market in event.markets:
print(f" Market: {market.name} ({market.selection_count} selections)")
for sel in market.selections:
print(
f" {sel.label} odds {sel.odds.american} / {sel.odds.decimal}"
f" line={sel.line} milestone={sel.milestone_value}"
)
except InputFormatInvalid:
print("Subcategory not recognized or has no posted lines.")
print("exercised: groups.list / subcategory.list_lines")
Returns the NFL 'Games' market navigation as groups (e.g. TD Scorers, Passing, Receiving, Rushing, Alt Lines, Halves, Defensive, Special Teams) each with its subcategories. Each subcategory carries the subcategory_id consumed by get_prop_lines, the site label, whether the site tags it as a player prop, and whether it is an over/under (O/U) market (label ends in 'O/U'). Non-O/U player yardage subcategories (e.g. Pass Yards) hold the full ladder of alternate 'N+' lines; the O/U variants hold the main over/under total. One page fetch; the set changes as DraftKings adds or removes markets during the season.
No input parameters required.
{
"type": "object",
"fields": {
"groups": "array of market groups in site order; each has group, group_slug and subcategories",
"league": "league label (always NFL)",
"group_count": "integer number of groups",
"groups[].subcategories": "array of {subcategory_id, name, slug, category_id, market_type_id (null when the group mixes types), is_player_prop, is_over_under}"
},
"sample": {
"data": {
"groups": [
{
"group": "Passing",
"group_slug": "passing",
"subcategories": [
{
"name": "Pass Yards",
"slug": "pass-yards",
"category_id": "1000",
"is_over_under": false,
"is_player_prop": true,
"market_type_id": "12330",
"subcategory_id": "16569"
},
{
"name": "Pass Yards O/U",
"slug": "pass-yards-o-u",
"category_id": "1000",
"is_over_under": true,
"is_player_prop": true,
"market_type_id": "13552",
"subcategory_id": "9524"
}
]
}
],
"league": "NFL",
"group_count": 9
},
"status": "success"
}
}About the DraftKings API
Market Navigation with list_prop_categories
list_prop_categories returns the full NFL market hierarchy as it appears on DraftKings Sportsbook. The response organizes markets into named groups (such as Passing, Rushing, Receiving, Alt Lines, Halves, Defensive, and Special Teams), each carrying a group_slug and an array of subcategories. Every subcategory includes a subcategory_id, display name, slug, category_id, and boolean flags is_player_prop and is_over_under so you can filter to the market type you need. The market_type_id field is null when a group mixes types. This endpoint takes no inputs and is the required first step for discovering the subcategory_id values used in the second endpoint.
Odds Lines with get_prop_lines
get_prop_lines accepts a required subcategory_id and two optional filters: player (case-insensitive substring match against participant names and market names) and event_id (restricts results to one game). The response is grouped by game via the events array, ordered by start_time in UTC ISO format. Each event carries home_team and away_team objects with team_id and name, plus a markets array. Each market entry includes market_id, name, market_type, sort_order, and selection_count. Selections expose selection_id, label, outcome_type, line (the over/under total or spread value, null where not applicable), milestone_value for alternate-line thresholds (e.g. "200+ passing yards"), and both american_odds and decimal_odds.
Coverage Scope and Response Counts
The response surfaces four top-level summary integers — event_count, market_count, selection_count, and the echoed subcategory_id — useful for validating completeness of a pull. Alternate-line ladders (e.g. the full range of passing yard thresholds for a quarterback) appear as multiple selections within a single market, each with its own milestone_value and odds pair. All data reflects NFL games only; the league field always returns "NFL".
The DraftKings API is a managed, monitored endpoint for sportsbook.draftkings.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sportsbook.draftkings.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official sportsbook.draftkings.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a real-time NFL player prop odds tracker comparing lines across passing, rushing, and receiving subcategories.
- Monitor alternate-line ladder movements for a specific player using the
playerfilter andmilestone_valuefield. - Aggregate all touchdown scorer markets for a single game by filtering
get_prop_lineswith a knownevent_id. - Detect which prop categories DraftKings currently offers by polling
list_prop_categoriesand checking theis_player_propflag. - Feed American and decimal odds into a parlay calculator that needs selections from multiple NFL market types.
- Track opening vs. current lines for over/under totals by storing
linevalues from repeatedget_prop_linescalls. - Filter halftime and alternate-line markets separately using the
is_over_underboolean and group slug fromlist_prop_categories.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DraftKings have an official public API for odds data?+
How do I get lines for a specific player, like Josh Allen passing yards?+
player parameter in get_prop_lines. The filter matches case-insensitively against participant_name and the market name field, so "Josh Allen" or "allen" both narrow results to matching markets and their full selection arrays.What does the `line` field represent versus `milestone_value` in a selection?+
line holds the numeric over/under total or spread for standard markets (e.g. 247.5 passing yards). milestone_value appears on alternate-line selections and represents a threshold label like "200+" or "300+", reflecting how DraftKings presents stepped alternate props. Both can be present or null depending on the market type.Does this API cover sports other than NFL, or include live in-game odds?+
league field always returns "NFL". In-game live odds are not currently exposed. You can fork this API on Parse and revise it to add endpoints targeting other sports or live-game market subcategories.