# FanDuel Sportsbook Odds Scraper (`parseforge/fanduel-scraper`) Actor

Scrapes FanDuel Sportsbook odds for every major league, including moneylines, spreads, totals, and futures. Returns each event as a flat row with American, decimal, and fractional odds.

- **URL**: https://apify.com/parseforge/fanduel-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Sports, Lead generation
- **Stats:** 86 total users, 11 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.28 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### FanDuel Sportsbook Odds Scraper

**Scrape FanDuel Sportsbook odds for every game, futures market, and league, up to a million events per run.** Each event returns American, decimal, and fractional odds with spreads, totals, and moneylines. No login or API key. Export to CSV, JSON, Excel, or XML.

FanDuel's official API is closed to most developers, and the sportsbook site renders odds in JavaScript that changes every minute. This Actor reads the public odds feeds directly, filtered by sport, and returns each event in one fixed schema. It covers NFL, NBA, MLB, NHL, MMA, soccer, and tennis, plus league futures when you enable them.

| Who uses it | What they scrape FanDuel Sportsbook for |
|---|---|
| Sports bettors | Compare FanDuel lines against other books to find the best price before placing a bet. |
| Odds traders | Monitor line movements and sharp action across every major league. |
| Data analysts | Build historical odds datasets for modeling and backtesting betting strategies. |
| Content creators | Pull current odds for previews, recaps, and social media graphics. |

### What it does

This Actor collects FanDuel Sportsbook odds by sport, including moneylines, spreads, totals, and futures, and returns each event as a flat row.

- 🏈 **Every major league:** NFL, NBA, MLB, NHL, MMA, soccer, and tennis, or scrape all sports at once.
- 📈 **Futures and outrights:** NBA Championship, NFL MVP, division winners, and more, with American and decimal odds.
- 💱 **Three odds formats:** American, decimal, and fractional on every selection.
- ⚡ **Fast and flat:** One row per event, ready for CSV, JSON, Excel, or XML export.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with FanDuel Sportsbook data

**🏆 Build a betting model.**

A data scientist scrapes every NFL game for a season, stores the odds, and trains a model to predict closing line value.

**📊 Track line movement.**

An odds trader runs the Actor every 10 minutes on NBA games to see which way the money is moving before tip-off.

**⚖️ Compare sportsbooks.**

A bettor pulls FanDuel moneylines for today's MLB slate and compares them against Pinnacle to spot soft lines.

**📰 Power content.**

A sports writer scrapes soccer odds for the weekend and publishes a preview with current prices for every match.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrape public odds without registering an app or dealing with rate limits. |
| **Fixed schema** | Every event returns the same fields, so your pipeline never breaks. |
| **Futures included** | Get outright markets like championship winner and MVP alongside game lines. |
| **Three odds formats** | American, decimal, and fractional odds in one row for easy comparison. |

### How it compares

This Actor focuses on FanDuel only, with a simple sport filter and optional futures, while the competitors below either cover multiple books or add arbitrage and +EV signals.

| Feature | ParseForge | Sports Betting Odds Scraper - Live Lines, Arbitrage & +EV | FanDuel Sportsbook Odds Scraper |
|---|---|---|---|
| FanDuel odds | Yes | Yes | Yes |
| Futures and outright markets | Yes | Not listed | Not listed |
| Three odds formats (American, decimal, fractional) | Yes | Not listed | Yes |
| Arbitrage and +EV detection | Not listed | Yes | Not listed |
| Multiple sportsbooks in one run | Not listed | Yes | Not listed |
| Live, in-play odds | Yes | Yes | Yes |

### Configure the run

Drive the Actor from a single sport or every supported league, and optionally include futures markets. The maxItems limit caps how many events are returned per run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.075 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $7.50 |
| 1,000 results | $75.00 |
| 10,000 results | $750.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [FanDuel Sportsbook Odds Scraper](https://apify.com/parseforge/fanduel-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to FanDuel Sportsbook through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/fanduel-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that the sport you selected has events scheduled. If you set maxItems very low, try increasing it. Also confirm that includeFutures is set correctly for your needs.

**Why are some odds missing?**

FanDuel sometimes removes or suspends markets, especially close to game time. Run the Actor again after a few minutes to get the latest odds.

**Why does the run take a long time?**

Scraping many sports or futures markets increases the number of requests. Reduce maxItems or select a single sport to speed up the run.

**Why do I get an error about the website?**

FanDuel may block requests from certain IPs or change their page structure. Try running the Actor again later or contact support if the issue persists.

**Can I get historical odds?**

This Actor only returns current odds. To build a historical dataset, schedule regular runs and store the results.

### FAQ

| Question | Answer |
|---|---|
| Which sports does this Actor support? | NFL, NBA, MLB, NHL, MMA, soccer, and tennis. You can also set sport to ALL to scrape every supported league in one run. |
| Does it include futures markets? | Yes, when you enable the includeFutures option. It returns league-level futures like NBA Championship, NFL MVP, and division winners. |
| What odds formats are returned? | American, decimal, and fractional odds are included for every selection. |
| Do I need a FanDuel account or API key? | No. The Actor reads the public odds feeds directly, so no login or API key is required. |
| How many events can I scrape per run? | You can set maxItems up to 1,000,000 events per run. The default is 10. |
| Can I scrape live, in-play odds? | The Actor returns current odds from the FanDuel site, which includes pregame and live markets when available. |
| What output formats are supported? | CSV, JSON, Excel, and XML. You can choose the format when you run the Actor. |
| How often should I run this Actor? | Odds change frequently, so many users schedule runs every 5 to 15 minutes during active games. |
| Is this Actor affiliated with FanDuel? | No. This is an independent scraper built by ParseForge. It is not endorsed by or affiliated with FanDuel Group. |
| Can I filter by specific teams or games? | The current input only filters by sport and futures inclusion. You can filter the results after export using the event and team fields. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by FanDuel Group. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `maxItems` (type: `integer`):

How many events to collect per run.

## `sport` (type: `string`):

Sport league to scrape. ALL covers every supported league. NFL=American Football, NBA=Basketball, MLB=Baseball, NHL=Ice Hockey, MMA=Mixed Martial Arts, SOC=Soccer (every supported league worldwide), TEN=Tennis.

## `includeFutures` (type: `boolean`):

When enabled, the scraper also returns league-level futures (e.g. NBA Championship, NFL MVP, division winners) in addition to per-game lines. Futures markets list every contender with American and decimal odds.

## Actor input object example

```json
{
  "maxItems": 10,
  "sport": "ALL",
  "includeFutures": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/fanduel-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/fanduel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/fanduel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/fanduel-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/slcrJNbejUGNwf21W/builds/TswZCNvF2bVejNWAg/openapi.json
