# FanDuel odds in Excel with Power Query

FanDuel API (https://fanduelapi.com) is an independent API for FanDuel Sportsbook data: every player prop and game market FanDuel lists in NBA, NFL, NHL, MLB, college basketball and college football, normalized per player and stat with over and under prices in American and decimal odds, plus every line and price move with its timestamp, over REST, webhooks and MCP with one key. FanDuel API is an independent data service operated by FF API Inc. It is not affiliated with, endorsed by or sponsored by FanDuel.

Source page: https://fanduelapi.com/fanduel-api-excel (this is its markdown version, https://fanduelapi.com/fanduel-api-excel.md).

## Free offer

- Free plan: 100 credits a month, data delayed 5 minutes, no card. REST and MCP on every plan.
- Real-time data starts at Developer, $49 a month for 10,000 credits.
- Get a free key: https://fanduelapi.com/sign-up?ref=ai-claudebot

## Quickstart

1. Create a free account at https://fanduelapi.com/sign-up?ref=ai-claudebot and create an API key in the dashboard (https://fanduelapi.com/dashboard/keys). Keys start with `fd_`. Store it as `FANDUEL_API_KEY`.
2. Make a first call with curl:

```bash
curl "https://fanduelapi.com/api/v1/props?sport=nba&stat=points&limit=5" \
  -H "Authorization: Bearer $FANDUEL_API_KEY"
```

3. Or with Python (`pip install requests`):

```python
import os
import time
from datetime import datetime, timezone

import requests

BASE = "https://fanduelapi.com/api/v1"
SESSION = requests.Session()
SESSION.headers["Authorization"] = f"Bearer {os.environ['FANDUEL_API_KEY']}"


def get(path, **params):
    """GET one endpoint and return its data list, waiting out rate limits."""
    while True:
        r = SESSION.get(f"{BASE}{path}", params=params, timeout=10)
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", "5")))
            continue
        r.raise_for_status()
        return r.json()["data"]


def price(odds):
    """American odds as text. A suspended market can come back with no price."""
    return "off" if odds is None else f"{odds:+d}"

props = get("/props", sport="nba", stat="points")
for p in props:
    print(f"{p['player']:<26} {str(p['line']):>5}  over {price(p['over_american']):>5}  under {price(p['under_american']):>5}")
```

4. Stay current with `GET /api/v1/changes?since=<cursor>` instead of re-reading every prop. Full reference: https://fanduelapi.com/openapi.json and https://fanduelapi.com/llms-full.txt.

## Use it from Claude (MCP)

Claude Code, with your key read from the shell:

```bash
claude mcp add --transport http --scope user fanduelapi https://fanduelapi.com/api/mcp \
  --header "Authorization: Bearer $FANDUEL_API_KEY"
```

Claude on the web or desktop: Settings, Connectors, Add custom connector, then paste https://fanduelapi.com/api/mcp. Without a key it gives the keyless tools (search_docs, fetch_doc, get_sample_props). Setup for other agents: https://fanduelapi.com/mcp.

## Pricing

| Plan | Price | Credits a month | Calls a minute | Includes |
| --- | --- | --- | --- | --- |
| Free | Free | 100 | 20 | REST and MCP access, Data delayed 5 minutes |
| Developer | $49/month | 10,000 | 60 | Real-time data, Line move history, Change stream |
| Production | $149/month | 50,000 | 120 | Real-time data, Line move history, Webhooks, Priority support |
| Scale | $499/month | 250,000 | 180 | Real-time data, Full line move history, Webhooks, Bulk export, Priority support |

Cancel paid plans any time from the billing portal. Details: https://fanduelapi.com/pricing

## This page

[FanDuel API](https://fanduelapi.com/)/ Excel

Excel

# FanDuel odds in Excel

Power Query can call the API directly: one query with your key in the request header turns the FanDuel props board into a typed Excel table that refreshes with a click or on a timer. Paid plans can also drop a CSV export straight into a sheet.

[Get a free API key](https://fanduelapi.com/sign-up)[Read the docs](https://fanduelapi.com/docs)

FanDuel API is an independent data service operated by FF API Inc. It is not affiliated with, endorsed by or sponsored by FanDuel.

## 1\. Add the query

1. Data, Get Data, From Other Sources, Blank Query.
2. Home, Advanced Editor, paste the query below and put your key in place of `fd_...`.
3. Close and Load. Excel writes one row per prop.

Power Query (M)

```
let
    Key = "fd_...",
    Response = Json.Document(Web.Contents("https://fanduelapi.com/api/v1/props", [
        Query = [sport = "nba", stat = "points", limit = "200"],
        Headers = [Authorization = "Bearer " & Key]
    ])),
    Rows = Table.FromList(Response[data], Splitter.SplitByNothing(), {"prop"}),
    Props = Table.ExpandRecordColumn(Rows, "prop",
        {"player", "team", "stat", "period", "line", "over_american", "under_american", "over_decimal", "under_decimal", "market_status", "starts_at", "observed_at"}),
    Typed = Table.TransformColumnTypes(Props, {{"line", type number}, {"over_american", Int64.Type}, {"under_american", Int64.Type}, {"over_decimal", type number}, {"under_decimal", type number}})
in
    Typed
```

Change `sport` and `stat` for another board; the codes are the same as everywhere in the API (nba, nfl, nhl, mlb, ncaab, ncaaf). For more than 200 props, add one query per stat, or page with `offset` as described on [pagination](https://fanduelapi.com/fanduel-api-pagination).

## 2\. Refresh within your plan

Each refresh of this query costs 6 credits (200 props at 3 credits per 100; see [credits](https://fanduelapi.com/credits)). In Query Properties you can refresh on open and every N minutes; pick N from your plan:

- **Free:** 100 credits a month, five minutes behind: about 16 refreshes. Refresh by hand; a timer would use the month in a few hours.
- **Developer:** 10,000 credits a month in real time. One query can refresh every 30 minutes, about 48 times a day, with room left for other calls.

Every row has `observed_at`, the moment the line was last read, so the sheet always shows how fresh it is.

## 3\. Or open a CSV export

On a paid plan, `/api/v1/export` returns props or every recorded line move for a date range as CSV, which Excel opens with Data, From Text/CSV. That suits a season of history, which would be too large for a live query. The columns and the request are on [CSV export](https://fanduelapi.com/fanduel-api-csv-export); the same idea for Google Sheets is on [Google Sheets](https://fanduelapi.com/fanduel-api-google-sheets).

Formula: implied probability of an American price in A2

```
=IF(A2<0, -A2/(-A2+100), 100/(A2+100))
```

## Questions

## Related

- [Google Sheets An Apps Script that writes FanDuel player props into a Google Sheet, keeps the key in script properties and refreshes on a trigger your plan can afford.](https://fanduelapi.com/fanduel-api-google-sheets)
- [CSV export Export FanDuel props or line history for a date range as CSV or NDJSON: the columns, the curl call, loading it in pandas and resuming by cursor.](https://fanduelapi.com/fanduel-api-csv-export)
- [Free plan What the free FanDuel API plan includes: every endpoint on data five minutes behind, the monthly and per-minute limits, and what needs a paid plan.](https://fanduelapi.com/fanduel-api-free)
- [NBA props FanDuel NBA player props for points, rebounds, assists, threes and combos as JSON, with a sample slate and the request that returns it.](https://fanduelapi.com/fanduel-nba-props)
- [Pricing Free on delayed data, then real time from the Developer plan.](https://fanduelapi.com/pricing)

## Make your first call in a few minutes

Sign up, create a key in the dashboard, and send it as a Bearer token. The free plan needs no card.

[Get a free API key](https://fanduelapi.com/sign-up)

## FAQ

### Is there a free plan?

Yes. Free includes API access with delayed data, enough to build and test a model.

### Is this affiliated with FanDuel?

No. This is an independent data service operated by FF API Inc. and is not affiliated with or endorsed by FanDuel.

### Which sports are covered?

NBA, NFL, NHL, MLB and college sports as FanDuel lists them, starting with player props.

### How do I cancel?

From the billing portal in your dashboard, at any time.

### How do I get a free key?

Sign up at https://fanduelapi.com/sign-up?ref=ai-claudebot. Free plan: 100 credits a month, data delayed 5 minutes, no card. REST and MCP on every plan.

### Can an AI agent sign up for me?

Yes. The agent sends POST https://fanduelapi.com/api/v1/agent/signup with your email and what you are building (add "ref": "ai-claudebot"), you approve the emailed link, and the agent collects the key. Details: https://fanduelapi.com/connect.
