Game markets

FanDuel game lines and markets

Every FanDuel market per game: moneyline, spread and total for the game and each period, alternates, ladders, team props and futures, with no-vig fair prices.

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

Read the whole book for a game, game lines first, with the hold and a fair price for every selection.

Every market
Game, half, quarter and period lines, alternates and ladders, first scorer, team props and specials, as FanDuel lists them.
Fair prices
Where outcomes exclude each other, each selection carries a no-vig fair probability and the market its hold.
Futures
Champions, awards and win totals per league, on their own endpoint.

What it returns now

Boston Celtics @ Charlotte Hornets: MoneylineReal rows, 5 min delay, as of 3:25 PM ET
SelectionLineAmericanDecimalFair
Boston Celtics-4051.24777.1%
Charlotte Hornets+3204.20022.9%

Hold 4.01%. Fair is the no-vig probability: each side's implied probability divided by their sum.

Endpoints and parameters

GET/api/v1/markets

Every market FanDuel lists per game: moneyline, spread and total for the game and each period, alternate lines, ladders, first scorer, team props, specials and player props. Each selection has American and decimal odds and, where outcomes exclude each other, a fair no-vig probability.

ParameterInDescription
gamequeryOne game id, from /api/v1/events.
market_typequeryA market family such as moneyline, spread, total or player_prop, or a FanDuel market type such as MONEY_LINE.
periodquerygame or a period such as q1 or h1. One of game, q1, q2, q3, q4, h1, h2, p1, p2, p3, i1, f5.
livequerytrue for in-play markets only, false for pregame. One of true, false.
leaguequeryLeague code as FanDuel lists it, such as NBA.
sportquerynba, nfl, nhl, mlb, ncaab or ncaaf.
playerqueryPart of a player name.
statusqueryMarket status. Default: everything except removed. One of open, suspended, closed, removed, any.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/games/{id}/odds

The whole FanDuel book for one game in one call, game lines first.

ParameterInDescription
id *pathGame id from /api/v1/events.
statusqueryMarket status. Default: everything except removed. One of open, suspended, closed, removed, any.
GET/api/v1/futures

Season-long FanDuel markets per league: champions, awards and win totals, with fair prices where outcomes exclude each other.

ParameterInDescription
leaguequeryLeague code as FanDuel lists it, such as NBA.
sportquerynba, nfl, nhl, mlb, ncaab or ncaaf.
market_typequeryA FanDuel market type.
statusqueryMarket status. Default: everything except removed. One of open, suspended, closed, removed, any.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.

Code

curl
curl "https://fanduelapi.com/api/v1/markets?league=NBA&market_type=spread&limit=5" \
  -H "Authorization: Bearer $FANDUEL_API_KEY"
Python
import os, requests

r = requests.get(
    "https://fanduelapi.com/api/v1/markets",
    params={"league": "NBA", "market_type": "spread", "limit": "5"},
    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