DFS salaries

FanDuel DFS slates and salaries API

FanDuel daily fantasy slates with salary cap, games and player counts, and every player's salary, position, fantasy points per game and injury status.

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

Pull today's FanDuel DFS slates and salaries next to the prop lines for the same players.

Slates
Salary cap, start time, game count and player count per slate and sport.
Players
Salary, position, team, fantasy points per game and injury status, highest salary first.
Filters
Position, team and injured, with paging.

What it returns now

Real rows, 5 min delay, as of 3:25 PM ET

/api/v1/dfs/slates, first slate, real, 5 min delay
{
  "data": [
    {
      "id": "136257",
      "sport": "CFB",
      "label": "Fri Main",
      "starts_at": "2026-11-07T00:00:00.000Z",
      "salary_cap": 60000,
      "games": 5,
      "started": false,
      "players": 346,
      "players_read_at": "2026-11-06T18:18:33.788Z"
    }
  ]
}

Endpoints and parameters

GET/api/v1/dfs/slates

FanDuel daily fantasy slates with salary cap, game count and player count.

ParameterInDescription
sportqueryDFS sport code such as NBA.
startedquerytrue to include slates that already started. One of true, false.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.
GET/api/v1/dfs/slates/{id}/players

Salary, fantasy points per game, position and injury status for one slate, highest salary first.

ParameterInDescription
id *pathSlate id from /api/v1/dfs/slates.
positionqueryPosition code such as PG.
teamqueryTeam code.
injuredquerytrue or false. One of true, false.
limitqueryRows per page, 1 to 200. Default 50.
offsetqueryRows to skip, for paging.

Code

curl
curl "https://fanduelapi.com/api/v1/dfs/slates?sport=NBA&started=false" \
  -H "Authorization: Bearer $FANDUEL_API_KEY"
Python
import os, requests

r = requests.get(
    "https://fanduelapi.com/api/v1/dfs/slates",
    params={"sport": "NBA", "started": "false"},
    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