DraftKings Scraper icon

DraftKings Scraper

Scrape DraftKings Sportsbook odds, game lines, team totals, player and game props, futures, Pick6 multipliers and final scores. Extract DFS contests,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

DraftKings Scraper at a glance

DraftKings Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes kind, record id, name, event id and sport, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Other
Pricing
$2.00 per 1,000 results (Free plan), from $1.60 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
19 options

Scrape DraftKings Sportsbook odds, game lines, team totals, player and game props, futures, Pick6 multipliers and final scores. Extract DFS contests, entry fees, prize pools, player salaries and stats. Includes nested markets with American, decimal and fractional odds.

What DraftKings Scraper can do

  • The whole board, one row per game. Every record carries the moneyline pair, spread line and odds, and total line and odds flattened on the row, plus the complete nested market list with every selection's price in all three odds formats.
  • Superset scope in one actor. Sportsbook odds, the player-prop menu, award outright futures, Pick6 multipliers, and the DFS contests-and-salaries surface are collected by one run instead of four different tools.
  • Every league on the book. The run resolves the site's own live catalog, so any sport page slug and any league slug on the book is reachable, not a hardcoded list.
  • URL mode for precision. Paste a sport page, a league page, a game page, or an NBA, NFL, MLB or NHL player-props or futures page and the actor reads exactly that surface.
  • State-aware. Pick a state token to read that state's regional view of the book.
  • Results, not just prices. Turn on final scores and the same run returns every finished game of the last days in your leagues with the final score, the winner and the venue, linked to the game's odds event id wherever the book publishes it.

Choose what to collect

These inputs let you configure DraftKings Scraper - Sports Odds, Results, DFS & Player Props. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode walks the selected sports and leagues. URL mode scrapes exactly the pasted sportsbook links (league, event, player-props or futures pages); filter fields are ignored.
sportSlugsarraySport page slugs, e.g. basketball, football, baseball, hockey, soccer, golf, mma. The full catalog is resolved live from the site's own league list.
leaguesarrayOptional league slugs to narrow the run, e.g. 'nba' or 'basketball/nba'. Leave empty for every league under the selected sports.
marketGroupsarrayWhich board sections to read. Each adds one data read per league. Game lines carry the flagship moneyline/spread/total board.
includeDfsbooleanAlso collect the daily-fantasy surface for the selected sport: contest list (fees, prize pools, entries) and player lists with salaries, positions and stats.
dfsSportstringOverride the DFS surface's sport. Defaults to the first selected search sport.
statestringThe book serves its national board by default; pick a state token to read that state's region view.
Show 12 more inputs
More input fields
InputWhat it controls
urlsarrayLeague pages, game pages, player-props pages and futures pages are all supported; the default carries one live link of every supported shape. Multi-URL runs walk each link once; market-group filters do not apply.
fetchDetailsbooleanRead each game's detail page and merge event media, parlay content cards and Pick6 multipliers onto its row. Adds one detail-enrichment charge per served record.
includeResultsbooleanAlso return the result of every finished game in the selected leagues (search mode, or league and sport links in URL mode): home and away team, final score, winner, venue and the odds event id where it can be linked. One row per finished game; games not yet over are never returned. Covered: NFL, NBA, MLB, NHL, college football and basketball, and the major soccer leagues and cups. Each result row is one dataset item.
resultsDaysBackintegerHow many days back to collect final scores (1 to 14). Only used when Final scores of past games is on.
maxItemsintegerMaximum records per run. 0 means unlimited. This is the only cap that stops a run early.
maxPagesintegerNot used by this actor: every board read is a single data call, so there are no pages to walk. Leave empty; Max items is the only cap.
resumeFromRunIdstringRun id of a previous run of this Actor: already-pushed record ids are skipped. Mutually exclusive with incremental mode.
emitUnchangedbooleanIn incremental mode, also push UNCHANGED records (default: suppressed).
stateKeystringNamed key for the incremental baseline. Default: a hash of the run's scope (sports, leagues, market groups, links, toggles).
mcpConnectorsarrayConnector definitions for the MCP export side channel.
notionParentPageUrlstringOptional Notion parent page for the Notion connector export.
maxNotifyListingsintegerCap for notification-style connector exports. 0 means the first 50 records.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

kindKind (text)
recordIdRecord ID (text)
nameName (text)
eventIdEvent ID (text)
sportNameSport (text)
leagueNameLeague (text)
startTimeStart (datetime)
statusStatus (text)
homeTeamHome (text)
awayTeamAway (text)
homeMoneylineAmericanHome ML (text)
awayMoneylineAmericanAway ML (text)
Show 44 more fields
spreadLineSpread (number)
totalLineTotal (number)
marketGroupLabelMarket group (text)
urlURL (link)
changeTypeChange (text)
capturedAtCaptured (datetime)
contestIdContest ID (text)
entryFeeEntry fee (number)
prizePoolPrize pool (number)
positionPosition (text)
salarySalary (number)
teamTeam (text)
homeScoreHome score (number)
awayScoreAway score (number)
winnerWinner side (text)
isLiveLive (boolean)
homeTeamAbbrHome abbr (text)
awayTeamAbbrAway abbr (text)
spreadHomeAmericanHome spread odds (text)
spreadAwayAmericanAway spread odds (text)
overAmericanOver odds (text)
underAmericanUnder odds (text)
subcategoryLabelSection (text)
detailFetchedDetail read (boolean)
marketsmarkets
selectionsselections
sportSport (text)
gameTypeGame type (text)
maxEntriesMax entries (number)
entriesEntries (number)
topPayoutTop payout (text)
draftGroupIdDraft group (text)
isGuaranteedGuaranteed (boolean)
playerIdPlayer ID (text)
statsStats (text)
imageUrlsImages (text)
changedFieldsChanged fields (text)
firstSeenAtFirst seen (datetime)
lastSeenAtLast seen (datetime)
winnerTeamWinner (text)
statusDetailFinal status (text)
venueVenue (text)
sourceSource (text)
matchKeyMatch key (text)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "kind": "event",
  "recordId": "event:00000000",
  "eventId": "00000000",
  "name": "Home Team @ Away Team",
  "sportName": "Basketball",
  "leagueName": "League One",
  "startTime": "2027-01-01T00:00:00Z",
  "status": "NOT_STARTED",
  "homeTeam": "Home Team",
  "homeTeamAbbr": "HT",
  "awayTeam": "Away Team",
  "awayTeamAbbr": "AT",
  "homeMoneylineAmerican": "-110",
  "awayMoneylineAmerican": "-110",
  "spreadLine": 2.5,
  "spreadHomeAmerican": "-108",
  "spreadAwayAmerican": "-112",
  "totalLine": 210.5,
  "overAmerican": "-108",
  "underAmerican": "-112",
  "marketGroupLabel": "Game lines (moneyline, spread, total)",
  "subcategoryLabel": "Game Lines",
  "markets": [
    {
      "marketId": "1_00000000",
      "name": "Moneyline",
      "marketTypeName": "Moneyline",
      "subcategoryLabel": "Game Lines",
      "isPrimaryMarket": true,
      "selections": [
        {
          "selectionId": "0ML00000000_1",
          "label": "Home Team",
          "points": null,
          "outcomeType": "Home",
          "oddsAmerican": "-110",
          "oddsDecimal": "1.91",
          "oddsFractional": "100/110",
          "impliedProbability": "52%",
          "trueOdds": 1.91,
          "participantNames": [
            "Home Team"
          ]
        }
      ]
    }
  ],
  "url": "https://sportsbook.draftkings.com/event/sample-game/00000000",
  "capturedAt": "2027-01-01T00:00:00Z"
}

Ways to use this data

  • Line movers and model builders: pull every game's current prices across leagues on a schedule and diff the nested odds against yesterday's baseline.
  • Prop-market researchers: harvest the full player-prop menu (points, rebounds, assists, combos, milestones, races) per league with all selection prices.
  • DFS players: collect the contest lobby (entry fees, prize pools, guarantees, entry counts) plus player salaries, positions and stat rows for lineup building.
  • Odds aggregators: mirror the book's board per state region into your own store or spreadsheet via the dataset export or MCP connectors.
  • Futures watchers: track award outright prices (MVP, Rookie of the Year, and more) as the season moves.
  • Bet graders and model backtests: pair yesterday's closing lines with the final scores from the same actor to grade picks and measure model accuracy.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does DraftKings Scraper return?

The documented output for DraftKings Scraper includes kind, record id, name, event id, sport, league, start and status. Availability of each field depends on the source page and the selected mode.

How much does DraftKings Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I schedule it to watch line moves? Yes. Turn on incremental mode and schedule the run; UNCHANGED rows are suppressed by default, UPDATED rows carry changedFields naming exactly which odds moved, and records that vanish from a complete scan are reported EXPIRED (fantasy contests and players are a bounded sample and are never reported EXPIRED). Final-score result rows are delivered once per game and never reported EXPIRED; a later score correction arrives as one UPDATED row.

Why did a run return fewer records than expected? Max items (default 20) is the only cap that stops a run early; raise it for whole-board runs. With several leagues it is split evenly across them, and with final scores on, up to half of it is kept for new or changed result rows (none kept when there are no such rows). The board also thins out overnight in the US off-season hours: fewer games are posted between windows, and futures sections carry one event per award.

Why did my run fail with an upgrade note? The book's data pages refuse most datacenter connections, so the actor defaults to residential US proxies, which paid plans include. Free plans have no residential access: the run logs a boxed note saying so, then continues on a backup connection when one is available to the run (some pages may still be unavailable). The run fails with the upgrade note only when every connection was refused, so no page could be read; it never ends as an empty success.

Can I use it with AI agents or MCP? Yes. The dataset is plain JSON records, the Output tabs expose per-kind views, and mcpConnectors exports records to supported MCP destinations after the run.

Ready to collect with DraftKings Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.