FanDuel Odds Scraper icon

FanDuel Odds Scraper

Scrape FanDuel sportsbook odds, including moneylines, spreads, totals, player props and futures. Extract decimal, fractional and American odds, live…

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

FanDuel Odds Scraper at a glance

FanDuel Odds Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes id, matchup, sport, competition and home, 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.40 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.40 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
16 options

Scrape FanDuel sportsbook odds, including moneylines, spreads, totals, player props and futures. Extract decimal, fractional and American odds, live event markers and kickoff times. Supports scheduled incremental monitoring to track odds changes.

What FanDuel Odds Scraper can do

  • The board, all three formats. Every price ships as decimal, fractional and American side by side, so no conversion table is needed on your end.
  • Beyond the main board. Alongside each event's moneyline, spread and total, the run collects the player-prop and futures markets the board carries (alternate rushing yards, championship winners, elimination stage and more) as their own rows.
  • Any sport, not just the featured mix. Sports mode walks the board of any sport the book offers - all 19 of them, from NFL and NBA to rugby, darts and table tennis - instead of only what the featured page happens to show today.
  • Same Game Parlay surface. The site's own SGP suggestions ship as pick rows with every leg named and priced, and an optional per-event toggle reads each game's full SGP market tab.
  • Paste a link to any page. League pages, whole sports, or a single game's own board: paste the link, the run reads exactly that page.
  • Built for line watching. Incremental mode keeps a per-scope baseline and emits NEW, UPDATED, REAPPEARED and EXPIRED records: odds movements are the change signal, and price history from the previous scan is retained in the baseline for movement analysis.

Choose what to collect

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

Supported input fields
InputWhat it controls
modestring · requiredpopular = the site's own cross-sport featured board: every featured event with moneyline, spread and total, plus the player-prop and futures markets the board carries. sports = walk one or more whole sports (pick below). urls = read specific pages you paste (league pages, whole sports, or a single game).

Choices: popular, sports, urls

sportsarraysports mode: which sports to walk. Each sport reads its richest board (the league page the site maintains for the major US sports, the whole-sport page for the rest).
urlsarraylinks mode: paste FanDuel page links. Supported: league pages (sportsbook.fanduel.com/navigation/nfl), whole sports (sportsbook.fanduel.com/soccer), and a single game (the link ends in the game's id). Anything else is skipped with a warning.
regionstringWhich FanDuel state site to read. Odds and availability vary by state.

Choices: NJ, PA, AZ, MI, IN, IL, CO, VA, OH, NC, TN, WV, MD, LA, KY, KS, CT, IA, NY, WY, NH, ME, MA, DC

liveOnlybooleanKeep only records whose game is flagged in-play on the pages read this run. The live board itself is not anonymously readable, so this filters the pages above rather than walking a live-only feed.
fetchSgpMarketsbooleanAlso read each collected event's Same Game Parlay market tab (its full SGP-eligible market set, priced like every other market). Each event whose SGP markets are delivered counts as one enrichment read; events whose tab cannot be read are not counted. Raise Max items to leave room for the extra rows.
maxItemsintegerStop after this many odds records (event boards, markets, the site's own Same Game Parlay picks, and SGP market tabs all count). Leave 0 for no limit.
Show 9 more inputs
More input fields
InputWhat it controls
resumeFromRunIdstringContinue a previous run: records that run already delivered are skipped.
incrementalModebooleanScheduled monitoring: keep a per-scope baseline and emit NEW, UPDATED, REAPPEARED and EXPIRED records. Odds movements are the change signal.
stateKeystringOptional name for the incremental baseline.
emitUnchangedbooleanIncremental mode: also push records whose odds did not move.
emitExpiredbooleanIncremental mode: after a complete scan, push rows for records no longer present.
ignoreFieldsForChangesarrayAdditional record fields that must never mark a row UPDATED.
mcpConnectorsarrayApify MCP connector IDs to notify with the first collected rows. Leave empty to skip.
maxNotifyListingsintegerInternal: how many of the first collected rows a connector export may send.
notionParentPageUrlstringInternal: target page for a Notion connector export.

Fields in the output

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

idid
matchupmatchup
sportsport
competitioncompetition
homehome
awayaway
homeAbbrhomeAbbr
awayAbbrawayAbbr
kickoffTimekickoffTime
inplayinplay
moneylinemoneyline
spreadspread
Show 19 more fields
totaltotal
detailFetcheddetailFetched
oddsTimestampoddsTimestamp
changeTypechangeType
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt
marketIdmarketId
marketTypemarketType
marketNamemarketName
kindkind
bettingTypebettingType
numberOfRunnersnumberOfRunners
marketStatusmarketStatus
selectionsselections
pickIdpickId
totalBetstotalBets
legCountlegCount
legslegs
changedFieldschangedFields

Example output

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

{
  "id": "fanduel:9c2f41ab77e31d",
  "matchup": "JAX Jaguars @ BAL Ravens",
  "home": "Baltimore Ravens",
  "away": "Jacksonville Jaguars",
  "kickoffTime": "2026-11-06T01:16:00.000Z",
  "inplay": false,
  "moneyline": {
    "marketName": "Moneyline",
    "selections": [
      {
        "name": "Baltimore Ravens",
        "odds": {
          "decimal": 1.83,
          "fractional": "100/120",
          "american": -120
        }
      },
      {
        "name": "Jacksonville Jaguars",
        "odds": {
          "decimal": 1.98,
          "fractional": "100/102",
          "american": -102
        }
      }
    ]
  },
  "oddsTimestamp": "2026-11-04T05:00:00+00:00"
}

Ways to use this data

  • Line shoppers: pull FanDuel's current prices across leagues and compare against other books before placing a bet.
  • SGP builders: pull every SGP-eligible market for one game, or watch the site's own picks with their legs.
  • Odds traders: schedule incremental runs to watch line movement and record every move between runs.
  • Model builders: build datasets with decimal, fractional and American prices side by side for backtesting.
  • Content pipelines: generate previews with current prices, team names, and market narratives.

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 FanDuel Odds Scraper return?

The documented output for FanDuel Odds Scraper includes id, matchup, sport, competition, home, away, homeabbr and awayabbr. Availability of each field depends on the source page and the selected mode.

How much does FanDuel Odds Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 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 monitor line movement on a schedule?

Yes. Enable incremental mode with a stateKey and schedule runs: each run diffs against the previous scan and pushes only NEW, UPDATED, REAPPEARED or EXPIRED records. Odds movements are the change signal.

Why are some sports missing from my run?

In the default mode the run reads the site's featured cross-sport board, whose mix rotates with the sports calendar. Switch to sports mode and pick the sports you want to walk their whole boards regardless of what is featured today. A sport with no live or upcoming events serves an empty board - out-of-season sports simply have nothing to price.

Does this cover live (in-play) games?

The actor marks every record with the in-play flag and kickoff time the feed carries, and a Live games only filter keeps records whose game is running right now. The book's dedicated live page itself is not anonymously readable, so the filter works over the pages the run reads rather than walking a live-only feed.

Why did my run fail with "the site refused every connection"?

The sportsbook's edge can refuse connections in waves. The actor rides residential exits and retries, but a full wave fails honestly; re-run shortly.

Ready to collect with FanDuel Odds Scraper?

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