# FanDuel NFL player props as JSON

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-nfl-props (this is its markdown version, https://fanduelapi.com/fanduel-nfl-props.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/)/ NFL props

NFL player props

# FanDuel NFL props as JSON

Every NFL player prop FanDuel Sportsbook lists for passing, rushing and receiving comes back as one record per player, stat and period, with the line, both prices and every move since it opened. Full-game props are graded against the final box score.

[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.

## NFL stats in the API

| Market               | stat value            | Graded                             |
| -------------------- | --------------------- | ---------------------------------- |
| passing yards        | passing\_yards        | Yes, full game                     |
| passing touchdowns   | passing\_tds          | Yes, full game                     |
| passing attempts     | passing\_attempts     | Yes, full game                     |
| passing completions  | passing\_completions  | Yes, full game                     |
| interceptions thrown | interceptions\_thrown | Yes, full game                     |
| rushing yards        | rushing\_yards        | Yes, full game                     |
| rushing attempts     | rushing\_attempts     | Yes, full game                     |
| receiving yards      | receiving\_yards      | Yes, full game                     |
| receptions           | receptions            | Yes, full game                     |
| rush rec yards       | rush\_rec\_yards      | Yes, full game                     |
| pass rush yards      | pass\_rush\_yards     | Yes, full game                     |
| longest reception    | longest\_reception    | No: the box score cannot settle it |
| longest rush         | longest\_rush         | No: the box score cannot settle it |
| tackles assists      | tackles\_assists      | No: the box score cannot settle it |

The stats the API recognises for NFL markets. FanDuel lists them on its passing props, rushing props, receiving props tabs; a market FanDuel adds that is not in this table still comes back, labelled from its own name, and is never graded.

## The requests

Games with NFL props on the board

```
curl "https://fanduelapi.com/api/v1/events?sport=nfl" -H "Authorization: Bearer $FANDUEL_API_KEY"
```

Every prop for one game, one stat

```
curl "https://fanduelapi.com/api/v1/props?event_id=<event_id>&stat=passing_yards" -H "Authorization: Bearer $FANDUEL_API_KEY"
```

Sample NFL record, not live data

```
{
  "id": "<prop id>",
  "sport": "football",
  "league": "NFL",
  "event_id": "<event id>",
  "event_name": "Sample Away @ Sample Home",
  "starts_at": "2026-11-08T18:00:00Z",
  "player": "Sample Quarterback",
  "team": "SMP",
  "stat": "passing_yards",
  "period": "game",
  "line": 246.5,
  "over_american": -114,
  "under_american": -114,
  "over_decimal": 1.88,
  "under_decimal": 1.88,
  "market_status": "open",
  "observed_at": "2026-11-08T16:41:07Z"
}
```

Period props, such as first-quarter or first-five-innings lines, come back with their own `period` value, so they never mix with full-game lines. Only full-game props are graded, because the box score has no per-period stats.

## Building on it

Injury and inactive news before kickoff moves NFL props, and following the change feed captures each move with its time. See [line movement](https://fanduelapi.com/fanduel-line-movement) for the move summary, [DFS salaries](https://fanduelapi.com/fanduel-dfs-api) for the salary join, and the [NBA page](https://fanduelapi.com/fanduel-nba-props) for the same view of basketball.

## Questions

## Related

- [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)
- [NHL props FanDuel NHL player props for shots on goal, points, goals, assists and saves as JSON, with the request for one game and how each prop is graded.](https://fanduelapi.com/fanduel-nhl-props)
- [MLB props FanDuel MLB player props for strikeouts, hits, total bases, home runs and more as JSON, with the request for one game and how each prop is graded.](https://fanduelapi.com/fanduel-mlb-props)
- [DFS salaries FanDuel daily fantasy slates and salaries as JSON: salary cap, positions, fantasy points per game and injury status, beside the same players' prop lines.](https://fanduelapi.com/fanduel-dfs-api)
- [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.
