# FanDuel closing line data for every graded player prop

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, and soccer (the Premier League, La Liga, Serie A, the Bundesliga, Ligue 1, the Champions League, MLS and international matches), with every match market and yes-only player markets such as anytime goalscorer, shots, shots on target, assists and goalkeeper saves, 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/blog/fanduel-closing-line-data (this is its markdown version, https://fanduelapi.com/blog/fanduel-closing-line-data.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/)/[Blog](https://fanduelapi.com/blog) / FanDuel closing line data for every graded player prop

Article, November 9, 2026

# FanDuel closing line data for every graded player prop

The FanDuel closing line is the last price before a prop came off the board. Paired with how the prop settled, it is the label most prop models are scored against.

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

2 minute read. Published November 9, 2026.

This guide is assembled from the published FanDuel API reference, plan configuration and delivery code. Each factual statement maps to a source listed at the end. It is information, not betting advice, and it makes no prediction about any line.

## Close and result in one record

GET /api/v1/results returns the closing FanDuel line, the box score value, and over, under, push or void with its reason. Only props matched to a confirmed player and game are graded.

## The path to the close

GET /api/v1/props/{id}/history returns every recorded state of one prop, oldest first, with its timestamp, plus the move summary. Each prop record also carries a move summary: where it opened, where it is now and how many times it moved.

## A training table

Most models want one row per prop rather than every state.

GET /api/v1/training-set returns one row per prop for model training, with graded results where available. A paid plan's own export reaches back 30 days, and a plan listing Full line move history (Scale) reaches everything kept.

## Hit rates against the close

GET /api/v1/hit-rates reports, per player and stat, how often the over hit over the last N games against the closing FanDuel line, with the sample size.

## Before relying on it

Nothing from before collection started is stored. Quote meta.as\_of when you report prices; the data is information, not betting advice.

## Sources

- [Players and results](https://fanduelapi.com/products/players-and-results)
- [Line history](https://fanduelapi.com/products/line-history)
- [Props feed](https://fanduelapi.com/products/props-feed)
- [Exports](https://fanduelapi.com/products/exports)
- [API reference](https://fanduelapi.com/docs)
- [Graded examples](https://fanduelapi.com/data/graded-examples)
- [Hit rates](https://fanduelapi.com/hit-rates)

## Related

- [Players and results Players matched to ESPN athletes with headshots, injury reports, box score lines, every prop graded against the final box score, and over hit rates per player.](https://fanduelapi.com/products/players-and-results)
- [Line history Every recorded state of a FanDuel prop or market, oldest first, with timestamps: where it opened, each line and price move, and where it closed.](https://fanduelapi.com/products/line-history)
- [Props feed Every FanDuel Sportsbook player prop as one JSON record: player, stat, line, both prices, fair price and a move summary, filterable by league, game and stat.](https://fanduelapi.com/products/props-feed)
- [CSV and NDJSON exports Export FanDuel props or line history for a date range as CSV or NDJSON, paged by cursor, plus a training set with open line, close and moves per prop.](https://fanduelapi.com/products/exports)

## 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 and reads the same data five minutes behind.

[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 with player props, and soccer (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, Champions League, MLS and internationals) with every match market and goalscorer and shots markets, as FanDuel lists them.

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