FanDuel Odds Scraper avatar

FanDuel Odds Scraper

Pricing

from $2.30 / 1,000 results

Go to Apify Store
FanDuel Odds Scraper

FanDuel Odds Scraper

Extracts pre-match and live betting odds from FanDuel Sportsbook: teams, league, start time, and moneyline, spread and total prices in both American and decimal formats.

Pricing

from $2.30 / 1,000 results

Rating

0.0

(0)

Developer

MrDoe

MrDoe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Categories

Share

FanDuel Odds Scraper - FanDuel odds for every match as clean rows: teams, start time and decimal prices for the main markets.

What does FanDuel Odds Scraper do?

FanDuel Odds Scraper collects betting odds from FanDuel and returns one clean row per match: the two teams, competition, start time, live status and decimal prices for the main markets (moneyline, spread and total). Choose sports, leagues or single matches, switch between pre-match and live, and export the result as JSON, CSV or Excel or call it from the API. Use it for odds comparison, line movement tracking, value-bet and arbitrage screening and model back-testing.

Why use FanDuel Odds Scraper?

  • Odds ready to use: named markets, no decoding.
  • Pre-match and live in one Actor.
  • Whole sports or leagues in one run.
  • Clean, deduplicated rows with ISO times.
  • Plugs into the odds comparison and value-bet Actors.

What makes this different

FanDuel is one of the two largest US sportsbooks, so its line is a core reference for the American market. This Actor returns its prices as flat rows with the main markets already named, so comparing FanDuel against other bookmakers, or against your own model, needs no extra parsing.

How it works

FanDuel Odds Scraper workflow: your input, collection, output

  1. Your input — choose the sports, leagues or matches.
  2. The Actor collects it — the Actor reads the current FanDuel board.
  3. Your output — you get one row per match with the odds attached.

What data can you extract?

The dataset has 17 fields per row:

FieldTypeDescription
matchIdintegerBookmaker event ID.
urlstringMatch page URL.
bookmakerstringAlways FanDuel.
sportstringSport.
sportIdintegerSport ID.
leaguestringCompetition.
leagueIdintegerCompetition ID.
countrystringCountry of the competition.
homestringHome team or player.
awaystringAway team or player.
startTimestringStart time (ISO 8601).
statusstringMatch status: scheduled or live.
isLivebooleanTrue while the match is in play.
totalMarketsintegerNumber of markets on the match.
oddsobjectReady-to-use main markets with decimal prices.
marketsarrayEvery priced market for the match.
scrapedAtstringISO timestamp of collection.

How to use FanDuel Odds Scraper

FanDuel Odds Scraper input form

  1. Open the Actor and go to the Input tab.
  2. Choose a Feed and one or more Sports, set Max matches (0 for everything) and press Start. Optionally target a league code such as NFL.
  3. Optionally set filters and a Max results limit.
  4. Click Start. A default run finishes in under a minute.
  5. Open the Output tab, then download the dataset or connect it to your tools.

Input Parameters

ParameterTypeRequiredDefaultDescription
modestringNo"prematch"Which odds to collect: pre-match, live (in-play), or both.
sportsarrayNo[]Sports to collect, by name ("Soccer", "NFL", "NBA", "MLB", "NHL", "MMA", "Boxing", "Cricket", "Rugby Union") or numeric FanDuel event-type ID. Use ["all"] for every supported sport.
matchUrlsarrayNo[]Optional. Paste individual FanDuel Sportsbook match page URLs, for example https://sportsbook.fanduel.com/basketball/... . Each returns every market for that match.
maxMatchesintegerNo5Maximum number of matches to collect per sport or run. Default is 5 for a quick test; set 0 to return everything available.
regionstringNo"nj"US state whose FanDuel Sportsbook odds to read (two-letter code, for example nj, pa, mi, va, oh, il, co). Lines differ slightly between states.
includeMarketsbooleanNotrueAdd a markets array with every line on top of the tidy odds object. Turn off for smaller rows.
useCachebooleanNofalseReuse match records collected in an earlier run. Disabled by default so every run returns live odds.
proxyConfigurationobjectNo{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}FanDuel Sportsbook is only available inside the United States, so a US proxy is required. Apify Residential in the US is used by default.

Output Data

FanDuel Odds Scraper dataset table

odds holds the main markets as decimal prices, status and isLive show whether the match is in play, and the full selection list is kept alongside for less common markets.

FanDuel Odds Scraper field map of one record

A real dataset item:

{
"matchId": 36094853,
"url": "https://sportsbook.fanduel.com/baseball/minnesota-twins-z-matthews-san-francisco-giants-b-tidwell-36094853",
"bookmaker": "FanDuel",
"sport": "Baseball",
"sportId": 7511,
"league": "MLB",
"leagueId": 11196870,
"country": "GB",
"home": "San Francisco Giants",
"away": "Minnesota Twins",
"startTime": "2026-09-22T01:46:00.000Z",
"status": "prematch",
"isLive": false,
"totalMarkets": 98,
"odds": {
"moneyline": {
"away": 1.82,
"home": 2.04
},
"spread": {
"away": 2.4,
"line": 1.5,
"home": 1.588
},
"total": {
"line": 8.5,
"over": 2,
"under": 1.82
}
},
"markets": [
{
"market": "Specials Top 4th",
"marketType": "SPECIALS_-_TOP_4TH",
"isAlternate": false,
"inPlay": false,
"status": "OPEN",
"prices": [
{
"selection": "1+ Strikeout",
"line": null,
"priceAmerican": -165,
"priceDecimal": 1.606
},
{
"selection": "2+ Strikeouts",
"line": null,
"priceAmerican": 480,
"priceDecimal": 5.8
},
{
"selection": "3+ Strikeouts",
"line": null,
"priceAmerican": 4000,
"priceDecimal": 41
},
{
"selection": "1+ Home Run",
"line": null,
"priceAmerican": 550,
"priceDecimal": 6.5
},
{
"selection": "1+ Extra Base Hit",
"line": null,
"priceAmerican": 210,
"priceDecimal": 3.1
},
{
"selection": "3 Up 3 Down",
"line": null,
"priceAmerican": 155,
"priceDecimal": 2.55
}
]
},
{
"market": "8th Inning Over/Under 1.5 Runs",
"marketType": "***OVER/UNDER_1.5_RUNS_8TH_INNINGS",
"isAlternate": false,
"inPlay": false,
"status": "OPEN",
"prices": [
{
"selection": "over",
"line": null,
"priceAmerican": 320,
"priceDecimal": 4.2
},
{
"selection": "under",
"line": null,
"priceAmerican": -420,
"priceDecimal": 1.238
}
]
},
{
"market": "3rd Inning Runs Odd/Even",
"marketType": "3RD_INNING_RUNS_ODD/EVEN",
"isAlternate": false,
"inPlay": false,
"status": "OPEN",
"prices": [
{
"selection": "Odd",
"line": null,
"priceAmerican": 210,
"priceDecimal": 3.1
},
{
"selection": "Even",
"line": null,
"priceAmerican": -265,
"priceDecimal": 1.377
}
]
},
{
"market": "Specials Top 2nd",
"marketType": "SPECIALS_-_TOP_2ND",
"isAlternate": false,
"inPlay": false,
"status": "OPEN",
"prices": [
{
"selection": "1+ Strikeout",
"line": null,
"priceAmerican": -220,
"priceDecimal": 1.455
},
{
"selection": "2+ Strikeouts",
"line": null,
"priceAmerican": 340,
"priceDecimal": 4.4
},
{
"selection": "3+ Strikeouts",
"line": null,
"priceAmerican": 2700,
"priceDecimal": 28
},
{
"selection": "1+ Home Run",
"line": null,
"priceAmerican": 550,
"priceDecimal": 6.5
},
{
"selection": "1+ Extra Base Hit",
"line": null,
"priceAmerican": 230,
"priceDecimal": 3.3
},
{
"selection": "3 Up 3 Down",
"line": null,
"priceAmerican": 140,
"priceDecimal": 2.4
}
]
}
],
"scrapedAt": "2026-09-21T16:40:42.672Z"
}

Usage Examples

FanDuel MLB Odds

{
"sports": [
"MLB"
],
"maxMatches": 0
}

FanDuel NFL Odds

{
"sports": [
"NFL"
],
"maxMatches": 0
}

FanDuel NBA Odds

{
"sports": [
"NBA"
],
"maxMatches": 0
}

Tips for Best Results

  • Default is 5 results for a fast test. Set the max to 0 to return everything available.

Known Limitations

  • FanDuel availability depends on your region; the Actor uses the proxy configured in the input.
  • Odds move constantly; a row is a snapshot at collection time.
  • Live markets can be briefly suspended, leaving some prices missing.
  • Only public odds are collected: no accounts, no bets.

Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the Output tab or the API.

Frequently Asked Questions

Does it need an account or API key?

No. The Actor reads public data and needs no account or key.

Am I charged for failed results?

No. You are only charged for results that are written to the dataset.

Do I need an account or login?

No. The Actor reads public data and needs no account or key.

Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

Support

Questions or a missing field? Open an issue from the Issues tab on this Actor's page and it will be looked at.

You are responsible for how you use this data, including compliance with FanDuel's terms and the gambling laws that apply to you. This Actor collects publicly displayed odds for analysis; it does not place bets or access any account. Gambling is age-restricted; if you or someone you know has a problem, seek support such as BeGambleAware or 1-800-GAMBLER.