Does DraftKings Have an API? How to Get DraftKings Odds
DraftKings has no public odds API. The SmartStake Odds API serves DraftKings odds, props, closing lines and bet links in one schema, pushed in real time.

DraftKings does not have a public odds API. There is no developer portal, no API key and no documentation for its sportsbook prices, and its Terms of Use bar the scrapers people build instead.
The SmartStake Odds API is the cleanest way to get DraftKings odds as of November 2026: main lines, alternate lines and player props, under the book key draftkings, in one schema with 85+ sportsbooks, exchanges and prediction markets.
Here is what one request returns. Pick a market, switch the odds format, and change either price.
DraftKings odds from one request
curl --compressed \ -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \ "https://api.server.smartstake.ca/v1/odds?event_id=evt_01KZCTK5WDFG6R6TWYDZV61GV2&book=draftkings&book=pinnacle&market=football_points_handicap"
{
"data": [
{
"quote_id": "m~evt_01KZCTK5WDFG6R6TWYDZV61GV2~football_points_handicap~none~none~-2.5~hometeam~draftkings",
"book": "draftkings",
"market_key": "football_points_handicap",
"label": "Tampa Bay Buccaneers -2.5",
"side": "hometeam",
"line": -2.5,
"odds": -112
},
{
"quote_id": "m~evt_01KZCTK5WDFG6R6TWYDZV61GV2~football_points_handicap~none~none~-2.5~hometeam~pinnacle",
"book": "pinnacle",
"market_key": "football_points_handicap",
"label": "Tampa Bay Buccaneers -2.5",
"side": "hometeam",
"line": -2.5,
"odds": -105
}
]
}Illustrative, not a live quote. The request is the documented /v1/odds call, and the response is abridged to a few fields of the documented quote object. Removing the last two segments of a quote_id (side and book) gives the id every book shares for the same line.
One call returns DraftKings next to Pinnacle on the same line, and the shared line id tells you which quotes to compare. At −112 against −105, Pinnacle pays more on the Buccaneers. That comparison is the job most DraftKings API searches are trying to do.
Does DraftKings Have an API?
No, not for odds. As of November 2026, DraftKings publishes no public API for its sportsbook, its daily fantasy contests or DraftKings Predictions, its event contract app. No DraftKings page issues a developer key or documents a price feed.
What does exist is the plumbing behind DraftKings' own website.
The sportsbook pages load their prices from internal JSON endpoints, and that is what every "DraftKings API" tutorial on GitHub and Reddit points you at. Those endpoints are not an API in any useful sense:
- Undocumented. No contract fixes the paths, parameters or response shape. When DraftKings changes its site, your parser breaks without warning.
- Against the terms. DraftKings' Terms of Use prohibit "using automated means (including but not limited to harvesting bots, robots, parser, spiders or screen scrapers)" to collect information from the site.1
- Blocked and geofenced. Bot protection and state geolocation decide what a request from a server sees, which is often not what a bettor in New Jersey sees.
- One book. A DraftKings scraper gives you DraftKings. A price only means something next to other books, so you end up maintaining a scraper per book.
Three Ways to Get DraftKings Odds
| Route | What you get | The catch |
|---|---|---|
| Scrape the site | DraftKings only, in DraftKings' own shape | Breaks the terms, breaks on site changes, blocked by geolocation |
| Scraper marketplaces | A hosted scraper's output, often on a schedule | Same source and same terms problem, plus polling delay |
| An odds API | DraftKings with every other book, one schema | A monthly plan |
For anything you plan to keep running, an odds API is the only route with a contract behind it. The rest of this guide uses the SmartStake Odds API.
Pulling DraftKings Odds with SmartStake
Every request needs your key as a bearer token and Accept-Encoding: gzip, which curl sends with --compressed. The API docs cover every endpoint and parameter.
1. Confirm DraftKings is on your key
curl --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/books"
DraftKings is draftkings. DraftKings Pick6, its pick'em app, is a separate book, draftkings6.
2. Find the event
curl --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/events?league=nfl"
Each event has an id, starts_at, home, away and live. The same event_id holds every book's prices for that game.
3. Pull DraftKings next to a sharp book
curl --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/odds?event_id=evt_01KZCTK5WDFG6R6TWYDZV61GV2&book=draftkings&book=pinnacle&market=football_points_handicap"
Drop market to get every line DraftKings has posted for the game, props included. Add alternate=false for main lines only, live=true for in-play prices only, and format=decimal for decimal odds. A request takes up to 5 events and 5 books.
Comparing DraftKings to the market in Python
This script pulls every main line DraftKings and three other books post on the next NFL game, groups them by line, and prints where DraftKings has the best price and where it trails. It uses only the Python standard library.
import gzip, json, os, urllib.parse, urllib.request
API = "https://api.server.smartstake.ca"
HEADERS = {
"Authorization": f"Bearer {os.environ['SMARTSTAKE_API_KEY']}",
"Accept-Encoding": "gzip",
}
BOOKS = ["draftkings", "pinnacle", "fanduel", "betmgm"]
def get(path, params):
url = f"{API}{path}?{urllib.parse.urlencode(params)}"
with urllib.request.urlopen(urllib.request.Request(url, headers=HEADERS), timeout=30) as response:
body = response.read()
if response.headers.get("Content-Encoding") == "gzip":
body = gzip.decompress(body)
return json.loads(body)["data"]
event = get("/v1/events", {"league": "nfl"})[0]
quotes = get("/v1/odds", [("event_id", event["id"]), ("alternate", "false"), ("format", "decimal")] + [("book", book) for book in BOOKS])
lines = {}
for quote in quotes:
line_id = quote["quote_id"].rsplit("~", 2)[0]
lines.setdefault((line_id, quote["side"]), []).append(quote)
for prices in lines.values():
draftkings = next((quote for quote in prices if quote["book"] == "draftkings"), None)
if draftkings is None or len(prices) < 2:
continue
best = max(prices, key=lambda quote: float(quote["odds"]))
gap = float(draftkings["odds"]) - float(best["odds"])
verdict = "best" if gap == 0 else f'{gap:+.3f} vs {best["book"]}'
print(f'{draftkings["label"]:<36} {float(draftkings["odds"]):.3f} {verdict}')
The line id is the quote_id without its last two segments, side and book, so every book's quote on the same line shares it. That one string replaces the team, player and market name matching a scraper leaves you to write.
Keeping DraftKings prices live
A REST call is a snapshot. To hold a current DraftKings board, open the stream first, then pull, then apply each change by quote_id:
curl -N --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/stream/football?league=nfl&book=draftkings&book=pinnacle"
Changes arrive over Server-Sent Events in 250 ms batches.
DraftKings is real-time pregame and live: a price change reaches the stream in under a second, as listed on the update frequency page. A scraper polling every 60 seconds waits 30 seconds on average to see the same change.
DraftKings closing lines
Closing odds are each book's last pregame price before the start. They are what you grade a model or a bet against, as the closing line value guide explains.
curl --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/closing-odds?event_id=evt_01M0EAWVYT4JS0R7FVXMK3CT9D&book=draftkings&market=football_points_handicap&alternate=false"
They cover every event that started on or after August 7, 2026, for every market and line, player props included, and usually arrive within an hour of the start.
Keep the quotes with on_board_at_start: true when you measure against the close, since a book sometimes pulls a prop before kickoff.
Links into the DraftKings app
Each quote can carry a bet_url that opens the selection on DraftKings. Add platform=mobile and it comes back as an app link:
curl --compressed -H "Authorization: Bearer $SMARTSTAKE_API_KEY" \
"https://api.server.smartstake.ca/v1/odds?event_id=evt_01KZCTK5WDFG6R6TWYDZV61GV2&book=draftkings&platform=mobile"
DraftKings has no state-specific site, so state leaves its link unchanged. A link opens the selection; whether the user can bet there is still up to DraftKings.
When Scraping DraftKings Still Comes Up
An odds API does not replace every scraper. Three jobs sit outside it:
- Your own account. Bet history, balances and open bets belong to the account holder's session, not to any odds feed. SmartStake reads prices; it does not place bets.
- DraftKings daily fantasy. Contest lobbies, salaries and lineups are a different product from the sportsbook, and the feed covers sportsbook and Pick6 prices, not salary contests.
- Prices before August 7, 2026. Closing odds start there. For older history, you need another source.
If the job is DraftKings prices, next to the market, kept current, one key beats a scraper you rebuild every season. FanDuel is the same story, with state bet links on top, as the FanDuel API guide shows.
For the same question about prediction markets, the prediction market odds API guide covers Kalshi and Polymarket. For what to do with the prices once you have them, see how to build a sports betting model and why line shopping across books matters.
FAQ
Does DraftKings have an API?
No. DraftKings does not have a public odds API: there is no developer portal, no API key and no documentation for its sportsbook prices. The SmartStake Odds API serves DraftKings odds under the book key draftkings, in the same schema as 85+ other books.
Is there a free DraftKings odds API?
No official one exists, free or paid. Scraping the sportsbook site costs nothing up front but breaks DraftKings' terms and breaks your code whenever the site changes. The SmartStake Odds API is a paid monthly plan, from $399 a month.
Can I scrape DraftKings odds?
DraftKings' Terms of Use prohibit using bots, spiders, parsers or screen scrapers to collect information from its site. The endpoints the site loads its odds from are undocumented and change without notice, so a scraper also needs constant repair.
Does the SmartStake API include DraftKings player props?
Yes. DraftKings player props, alternate lines and main lines all come through /v1/odds and the stream under their market keys, such as football_player_receptions. DraftKings Pick6 is a separate book, draftkings6.
Can I get DraftKings closing lines?
Yes. /v1/closing-odds returns DraftKings' last pregame price on every market and line for events that started on or after August 7, 2026, usually within an hour of the start. Closing odds come with the Pregame + Live and Full Stream plans.
Can I link users to a DraftKings bet slip?
Each DraftKings quote can carry a bet_url to the selection. Pass platform=mobile and it comes back as a DraftKings app link. DraftKings has no state-specific site, so the state parameter leaves its link unchanged.
Can I show DraftKings odds to users of my product?
The monthly plans are for personal and internal use. Showing prices to the members of your product needs an Enterprise licence, so write to SmartStake with what you are building.
Get an API Key
The SmartStake Odds API has monthly plans from $399: Pregame and Pregame + Live cover five leagues you pick, and Full Stream covers every league. Closing odds come with Pregame + Live and Full Stream.
Choose a plan, and your key appears under API keys in SmartStake as soon as payment goes through.
Footnotes
-
DraftKings Terms of Use, prohibited conduct, as published on September 13, 2026. ↩
Get the next guide in your inbox
Practical betting guides, new tools, and product updates from the SmartStake team. Unsubscribe in one click, any time.
By providing your email, you are consenting to receive communications from SmartStake. Visit our Privacy Policy for more info


