Players and results

FanDuel prop results, hit rates and player data

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.

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

Join each FanDuel line to what actually happened, and train on graded outcomes instead of guesses.

Graded
Closing FanDuel line, box score value, and over, under, push or void with its reason.
Matched, not guessed
Only props matched to a confirmed player and game are graded; ambiguous names stay ungraded.
Hit rates
How often the over hit across the last N games against the closing line, with the sample size.

What it returns now

Graded propsReal rows, 5 min delay, as of 3:02 PM ET
PlayerStatCloseActualResult
Martin Necasshots on goalshots on goal2.53over
Cale Makarshots on goalshots on goal2.50under
Nathan MacKinnonshots on goalshots on goal3.51under
Artturi Lehkonenshots on goalshots on goal2.52under
Mackenzie Blackwoodsavessaves21.522over
Brock Nelsonshots on goalshots on goal1.51under
Nazem Kadrishots on goalshots on goal2.53over
Justus Annunensavessaves28.530over

More on the graded examples page and in hit rates.

Endpoints and parameters

GET/api/v1/players

One record per player: id, league, team, position, the ESPN athlete id and headshot_url when a unique exact match was made, and any current injury.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
teamqueryTeam code.
qqueryPart of a player name.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/injuries

The latest injury report per league, by player.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
playerqueryPlayer id or part of a name.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/game-logs

Player box score lines from final games, newest first.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
playerqueryPlayer id.
game_idqueryGame id.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/results

Closing FanDuel line, box score value, and over, under, push or void with its reason. Only props matched to a confirmed player and game are graded.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
playerqueryPlayer id.
statqueryStat.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/hit-rates

Per player and stat, how often the over hit over the last N games against the closing FanDuel line, with the sample size.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
playerqueryPlayer id.
statqueryStat.
gamesqueryLast N graded games.

Code

curl
curl "https://fanduelapi.com/api/v1/players?league=NBA&q=james" \
  -H "Authorization: Bearer $FANDUEL_API_KEY"
Python
import os, requests

r = requests.get(
    "https://fanduelapi.com/api/v1/players",
    params={"league": "NBA", "q": "james"},
    headers={"Authorization": f"Bearer {os.environ['FANDUEL_API_KEY']}"},
)
r.raise_for_status()
body = r.json()
print(body["meta"])          # plan, delay_seconds, as_of, source_status
for row in body["data"][:5]:
    print(row)

Keys look like fd_.... Keep one in the FANDUEL_API_KEY environment variable on your server, never in browser code. Every response's meta says which plan answered, how far behind it is and how fresh the collection is.

Which plans include it

  • FreeIncluded, 5 minutes behind
  • DeveloperIncluded, real time
  • ProductionIncluded, real time
  • ScaleIncluded, real time

Read from the plans on the pricing page. Every request counts against the monthly and per-minute allowance; request quotas explains how.

Works well with

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