DraftKings Odds API - Real-Time Lines & Player Props avatar

DraftKings Odds API - Real-Time Lines & Player Props

Pricing

from $6.70 / 1,000 odds requests

Go to Apify Store
DraftKings Odds API - Real-Time Lines & Player Props

DraftKings Odds API - Real-Time Lines & Player Props

Extract real-time DraftKings sportsbook odds for 11 sports and 43+ leagues. Get spreads, moneylines, totals, player props, and futures in 3 odds formats. Always-on HTTP API. Live in-play odds with scores. NBA, NFL, MLB, NHL, EPL, and more. No login required.

Pricing

from $6.70 / 1,000 odds requests

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

2

Bookmarked

348

Total users

61

Monthly active users

3.7 days

Issues response

2 days ago

Last modified

Share

DraftKings Odds API — Real-Time Lines, Player Props & Futures

Always-on HTTP API — send a GET request, get DraftKings odds back in milliseconds.

28 sports, 280+ leagues. Spreads, moneylines, totals, player props, futures.
Public betting percentages: share of bets and share of money per side.
American, decimal, and fractional odds. Live in-play with scores. No account required.

Zen Studio Sports Betting   •  Real-time odds across every major sportsbook
 DraftKings Odds
➤ You are here
 Pick6 Props
DFS player props
 PrizePicks Props
Projections and lines
 FanDuel Odds
Every market, props included

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start building with this API.

DraftKings Odds API. Base: https://zen-studio--draftkings-odds.apify.actor Auth: ?token=APIFY_TOKEN (get at https://console.apify.com/account/integrations). Endpoints: GET /sports (free, list all sports), GET /leagues?sport=X (leagues for a sport), GET /leagues/{id}?market=game_lines|player_props|futures|all (events with odds), GET /events/{id}?market=X&league={leagueId} (single event detail). Pricing: $0.01/request + $0.0002/row for PPE, or $4.99/24h day pass, or $49/30d monthly pass — free under active pass. Buy pass: POST run with body {"dayPassPurchase":true} or {"monthlyPassPurchase":true}. Batch mode inputs: sport (any slug from GET /sports, e.g. ALL|football|basketball|baseball|hockey|soccer|tennis|golf|mma|cricket|motorsports; read live, new sports work immediately), leagueIds (string, comma-separated league IDs, overrides sport), market (game_lines|player_props|futures|all), propTypes (string, comma-separated stat filter for player_props, e.g. "Strikeouts, Hits"), maxResults (int, default 500, 0=unlimited). Every selection includes odds in 3 formats, impliedProbability, and DraftKings public betting splits betsPercent (share of bets) + handlePercent (share of money) where published. Free tier: 10 lifetime batch runs (capped to 200 rows) or 50 lifetime API calls. League IDs: NBA=42648 NFL=88808 MLB=84240 NHL=42133 WNBA=94682 UFC=9034 College Football=87637 CFB FCS=154752 EPL=40253 Champions League=40685 La Liga=40031 Bundesliga=40481 Serie A=40030 F1=212334. 280+ leagues total, call /leagues for the current list. Full API spec: GET https://api.apify.com/v2/acts/zen-studio~draftkings-odds/builds/default (Bearer TOKEN). OpenAPI spec: /openapi.json?token=TOKEN

Also available as an MCP server — add zen-studio/draftkings-odds for natural language access.

How to Scrape DraftKings Odds in Real Time

DraftKings sportsbook odds scraper — NBA, NFL, MLB, NHL spreads, moneylines, and totals
DraftKings odds API — configure sport and market type
DraftKings real-time API — GET request example for NBA odds
DraftKings odds JSON output — American, decimal, fractional odds formats

DraftKings Odds API Endpoints

Your API base URL:

https://zen-studio--draftkings-odds.apify.actor?token=YOUR_APIFY_TOKEN

Five endpoints, all GET. /health and /sports are free. The rest are billed per request and per row.

DraftKings odds API endpoints — real-time REST API with OpenAPI spec

The market parameter controls what you get back: game_lines (spread, moneyline, total), player_props (points, rebounds, assists, combos, H2H), futures (championship, MVP, division winners), or all for everything.

Pricing

Three ways to pay:

PlanPriceWhat you get
Pay-per-request (default)$0.01 per request + $0.0002 per rowCheapest for occasional use, scales with volume
24-Hour Day Pass$4.99Unlimited requests and rows for 24 hours
30-Day Monthly Pass$49.00Unlimited requests and rows for 30 days

/health and /sports are always free.

When does the pass save money? If you pull more than 500 requests in a day, the Day Pass is cheaper. If you pull every day, the Monthly Pass is cheaper than 30 Day Passes.

How to buy a pass: call the actor once with the pass flag and no other input. The pass is tied to your Apify user ID and activates immediately.

# 24h Day Pass
curl -X POST "https://api.apify.com/v2/acts/zen-studio~draftkings-odds/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dayPassPurchase": true}'
# 30-day Monthly Pass
curl -X POST "https://api.apify.com/v2/acts/zen-studio~draftkings-odds/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"monthlyPassPurchase": true}'

While a pass is active, all request and row charges are waived automatically.

DraftKings Odds JSON Output

Every response returns the full odds structure below. Real NBA game lines example:

{
"success": true,
"league": {
"id": "42648",
"name": "NBA",
"sport": "Basketball",
"sportId": "2"
},
"eventCount": 8,
"events": [
{
"id": "33841191",
"name": "OKC Thunder @ WAS Wizards",
"startTime": "2026-03-21T21:10:00Z",
"status": "NOT_STARTED",
"homeTeam": {
"id": "32962",
"name": "WAS Wizards",
"abbreviation": "WAS"
},
"awayTeam": {
"id": "32942",
"name": "OKC Thunder",
"abbreviation": "OKC"
},
"markets": [
{
"id": "1_84695475",
"name": "Spread",
"type": "spread",
"isMain": true,
"selections": [
{
"label": "WAS Wizards",
"odds": "+1400",
"decimalOdds": 15.0,
"fractionalOdds": "14/1",
"impliedProbability": 6.7,
"betsPercent": 23.0,
"handlePercent": 34.0,
"points": 14.5,
"outcome": "home"
},
{
"label": "OKC Thunder",
"odds": "-2800",
"decimalOdds": 1.04,
"fractionalOdds": "1/28",
"impliedProbability": 96.6,
"points": -14.5,
"outcome": "away"
}
]
},
{
"id": "1_84695476",
"name": "Moneyline",
"type": "moneyline",
"isMain": true,
"selections": [
{
"label": "WAS Wizards",
"odds": "+1200",
"decimalOdds": 13.0,
"fractionalOdds": "12/1",
"impliedProbability": 7.7,
"outcome": "home"
},
{
"label": "OKC Thunder",
"odds": "-2500",
"decimalOdds": 1.04,
"fractionalOdds": "1/25",
"impliedProbability": 96.2,
"outcome": "away"
}
]
},
{
"id": "1_84695477",
"name": "Total",
"type": "total",
"isMain": true,
"selections": [
{
"label": "Over",
"odds": "-110",
"decimalOdds": 1.91,
"fractionalOdds": "10/11",
"impliedProbability": 52.4,
"points": 226.5,
"outcome": "over"
},
{
"label": "Under",
"odds": "-110",
"decimalOdds": 1.91,
"fractionalOdds": "10/11",
"impliedProbability": 52.4,
"points": 226.5,
"outcome": "under"
}
]
}
]
}
],
"scrapedAt": "2026-03-21T14:30:00Z"
}

Main Lines vs Alternate Lines

One rule works on every board:

a row is the main line when the market is not isAlternate and the selection isMain.

In batch mode that is precomputed as the isMainLine column.

  • isAlternate (market) — the market is an alternate ladder (Spread Alternate, Total Alternate). Derived from the market name, so you can re-derive it yourself.
  • isMain (selection) — the main rung of its own market. On an alternate ladder the top rung still carries it, which is why it is not sufficient alone.

Measured on a full college football board with 484 ladders: the rule leaves exactly one line on all 484 and never more than one. On an NFL player-prop board it leaves exactly one row per player, stat and side across 1,726 groups.

The source's own market-level main flag is deliberately not exposed. It is wrong in both directions: set on alternate ladders, unset on 100 of those 484 ladders that do have a main line, and on player props true almost only for combo markets such as Player A & Player B - Receiving Yards Total.

DraftKings Public Betting Percentages

Every selection carries the share of bets and the share of money DraftKings reports for it, wherever DraftKings publishes them (typically 50-90% of a league's board):

{
"label": "SEA Seahawks",
"odds": "-170",
"impliedProbability": 63.0,
"betsPercent": 77.0,
"handlePercent": 66.0
}
  • betsPercent — share of bets placed on this side, the public/ticket count
  • handlePercent — share of money wagered on this side

The two diverging is the signal bettors look for: a side with 77% of tickets but 34% of the money means many small bets against fewer large ones. Both are numbers, not strings, and are absent on selections DraftKings does not publish splits for. Available in batch mode as the betsPercent and handlePercent columns.

DraftKings Live In-Play Odds

When a game is in progress, each event includes live scoring data:

{
"id": "33841191",
"name": "OKC Thunder @ WAS Wizards",
"status": "STARTED",
"live": {
"period": 3,
"clock": "04:22",
"clockRunning": true,
"homeScore": 78,
"awayScore": 95
},
"markets": [...]
}

DraftKings Player Props Data

Use market=player_props to get player-level prop lines. Use the propTypes parameter (batch mode) to filter by stat type.

{
"id": "1_84695478",
"name": "Shai Gilgeous-Alexander Over/Under Points",
"type": "player_prop",
"selections": [
{
"label": "Over",
"odds": "-115",
"decimalOdds": 1.87,
"fractionalOdds": "20/23",
"impliedProbability": 53.5,
"points": 30.5,
"outcome": "over",
"participant": {
"id": "1234567",
"name": "Shai Gilgeous-Alexander",
"type": "Player"
}
}
]
}

Batch Mode — Prop Type Filter

In batch mode, use propTypes to narrow player props by stat type. Comma-separated, partial match, case-insensitive.

{
"sport": "baseball",
"market": "player_props",
"propTypes": "Strikeouts",
"maxResults": 500
}
{
"sport": "basketball",
"market": "player_props",
"propTypes": "Points, Assists, Threes"
}

Available prop types vary by sport:

  • Baseball: Strikeouts, Hits, Home Runs, Total Bases, Stolen Bases, RBIs, Walks, Runs
  • Basketball: Points, Rebounds, Assists, Threes, Double-Double, Triple-Double
  • Hockey: Goals, Shots on Goal, Assists, Saves, Blocks, Power Play Points
  • Soccer: Goalscorer, Shots, Assists, Tackles, Saves, Cards

DraftKings League IDs

Common leagues for quick reference. The full board covers 280+ leagues across 28 sports and tracks DraftKings as it adds and retires competitions, so call GET /leagues (or GET /leagues?sport=football) for the current list rather than hardcoding these.

LeagueIDSport
NBA42648Basketball
NFL88808Football
MLB84240Baseball
NHL42133Hockey
English Premier League40253Soccer
Champions League40685Soccer
La Liga40031Soccer
Bundesliga40481Soccer
Serie A40030Soccer
Ligue 140032Soccer
College Football87637Football
College Football FCS154752Football
College Basketball92483Basketball
WNBA94682Basketball
UFC9034MMA
Formula 1212334Motorsports

Scheduling

CadenceBest For
Once or twice dailyDaily odds snapshots, content creation
Every 1-4 hoursLine comparison, data collection
Every 30-60 secondsLive odds dashboards, arbitrage detection

Data Export

Results are available in:

  • JSON — structured nested data for programmatic use
  • CSV — flattened rows (batch mode) for spreadsheets
  • Excel — download from Apify Console

Export directly from Apify Console or via API.

FAQ — DraftKings Odds Scraper

How do I scrape DraftKings odds? Use the Standby mode endpoints. Send GET /leagues/42648 to get NBA odds instantly. No setup, no login, no browser.

What odds formats are available? American (+150, -110), decimal (2.50, 1.91), and fractional (3/2, 10/11). All three in every response.

Does this include live in-play odds? Yes. When a game is in progress, the response includes live scores, game clock, current period, and updated odds.

How often are odds updated? Odds reflect the current DraftKings state at the time of your request. For live games, query every 30-60 seconds.

Do I need a DraftKings account? No. All data is publicly available. No login, cookies, or account required.

Can I get odds for a single event? Yes. Use GET /events/{id}?league={leagueId}&market=all to get every market for one event.

What's the difference between Standby and Batch mode? Standby is an always-on HTTP API for real-time queries. Batch runs on a schedule and exports all odds to a dataset.

Can I track line movements? Schedule the actor to run periodically and compare odds values across runs using event and selection identifiers.

This Actor extracts publicly available odds data from DraftKings. Users must ensure compliance with DraftKings terms of service and applicable data protection and gambling regulations.


Start Getting DraftKings Odds Now

More Zen Studio scrapers for sports betting

🏟️ Sportsbook odds

🎯 Daily fantasy & player props