NFL · NBA · MLB · NHL · PGA
Daily Fantasy · DraftKings · FanDuel
The ultimate sports data API and the Daily Fantasy API.
A stat API with NFL play-by-play, box scores, snap participation, depth charts, rosters and weather.
- NFL plays
- 300K
- since 2020
- Fields per play
- 372
- EPA · air yards
- Depth charts
- 242K
- since 2020
A DFS stats API with DraftKings and FanDuel salaries, results and actual ownership per contest.
- Contests with lineups
- 34.9K
- since 2021
- Contest entries
- 446M
- since 2021
- Historical salaries
- 12.3M
- since 2016
- 6.7M MLB pitches since 2018
- 4.1M NBA play-by-play events since 2020
- 3.0M PGA Tour shots since 2019
- 341K NHL player game stats since 2019
CeeDee Lamb, Week 2 · EPA per play
- Q4 · 03:13 · 2 & 6+3.16(3:13) (Shotgun) 4-D.Prescott pass deep right to 88-C.Lamb for 24 yards, TOUCHDOWN.
- Q4 · 06:16 · 2 & 12+3.09(6:16) (Shotgun) 4-D.Prescott pass deep right to 88-C.Lamb pushed ob at WAS 38 for 35 yards (20-Q.Martin).
- Q4 · 13:35 · 3 & 4-2.14(13:35) (Shotgun) 4-D.Prescott pass incomplete short right to 88-C.Lamb (2-A.Robertson).
- Q2 · 05:56 · 2 & 19-0.33(5:56) (Shotgun) 4-D.Prescott pass short left to 88-C.Lamb to DAL 31 for 5 yards (2-A.Robertson).
CeeDee Lamb, Week 2 · one player-game row
- Targets
- 9
- Receptions
- 8
- Receiving yards
- 153
- Receiving TDs
- 2
- Air yards
- 125
- Target share
- 29.0%
- WOPR
- 0.83
- Receiving EPA
- 11.4
Week 2, windiest first · stadium weather
| Game | Temp | Wind | Gusts | Conditions |
|---|---|---|---|---|
| MIN @ CHI | 67°F | 11 mph | 26 mph | Rain |
| GB @ NYJ | 69°F | 10 mph | 26 mph | Drizzle |
| NYG @ MIA | 88°F | 8 mph | 25 mph | Drizzle |
| BUF @ CLE | 76°F | 8 mph | 12 mph | Drizzle |
| CAR @ JAX | 85°F | 8 mph | 18 mph | Drizzle |
| IND @ KC | 70°F | 7 mph | 14 mph | Overcast |
Week 2 DraftKings Millionaire · 1st of 173K lineups
- QBSF28.48Brock Purdy$6,2009.5%
- RBSF22.60Christian McCaffrey$8,00022.9%
- RBDEN3.60J.K. Dobbins$5,0002.5%
- WRSEA45.50Jaxon Smith-Njigba$8,10010.2%
- WRDAL38.30CeeDee Lamb$7,30019.0%
- WRLV25.90Tre Tucker$4,5000.7%
- TEHOU29.00Dalton Schultz$3,20022.4%
- FLEXSF18.00George Kittle$4,6004.5%
- DSTNE21.00Patriots$3,1005.3%
NFL play-by-play, box scores and snap participation, since 2020.
Plays with EPA, win probability, air yards and personnel: 372 fields per play. Player box scores with advanced receiving and rushing stats: 141 fields per player-game row. Weekly rosters and depth charts for each team, week by week. The raw event stream, not a summary.
372 fields per play: EPA, win probability, air yards and personnel.
Each team's roster, week by week.
Depth by position for each team, week by week.
Formation, personnel grouping, coverage and the players on the field.
141 fields per player-game row, with advanced receiving and rushing stats.
DraftKings and FanDuel contest results since 2021, salaries since 2016.
Standings and lineups for 34.9K contests: each lineup's rank, points and payout, and the actual ownership of each player. DraftKings: 28.2K contests. FanDuel: 6.7K contests. Both every year since 2021, and more each day. Real rows from each table are on the Daily Fantasy API page.
Rank, points and payout for each lineup, as CSV or JSON.
Actual ownership per contest: the share of a contest's lineups that drafted each player.
Salary, position, average points and injury status.
Entry fee and prize pool for each. Field size for 96%.
Main, early, late and showdown slates.
NFL depth charts, injuries and weather, week by week.
Depth charts for each team, each week, and the weekly injury report with game status and injury. Stadium weather is joined to the game. Plus rosters and coaching staffs, the context around the numbers.
- Weekly depth charts and rosters, since 2020
- The weekly injury report: game status and injury
- Stadium weather: temperature, wind, gusts, conditions
- Betting odds: game lines, period lines, player props
- QB1 Dak Prescott2 Sam Howell
- FB1 Hunter Luepke
- RB1 Javonte Williams2 Emari Demercado
- WR1 CeeDee Lamb2 George Pickens
- TE1 Jake Ferguson2 Brevyn Spann-Ford
Daily fantasy slates, salaries and contest results, one call each.
Pair salaries and projections with real contest results to backtest and build. The daily fantasy API returns the slate, the player pool, projections and a contest download, one call each, JSON or CSV.
- DFS slates, player salaries & multi-source projections
- Contest standings and winning lineups
- Download a contest in one call: CSV or JSON
- Actual ownership per player, per contest. Cut the top 1% from the lineups
{
"id": 290871,
"operator_id": 1,
"date": "2026-09-20",
"name": "Sun 1:00PM Classic",
"game_type": "classic",
"main": true,
"game_count": 13,
"player_count": 670,
"start_time": "2026-09-20T17:00:00+00:00"
}Same player IDs, one key.
CeeDee Lamb, Week 2. His box score comes from the sports data API and his seat in the winning DraftKings lineup from the DFS API. DFS rows use the same player IDs as the league tables, so the two rows join on player_id, with one API key.
Sports data API
- Targets
- 9
- Receptions
- 8
- Receiving yards
- 153
- Receiving TDs
- 2
DFS API
- Slot · team
- WR · DAL
- DraftKings salary
- $7,300
- Actual ownership
- 19.0%
- DraftKings points
- 38.30
- Cross-sport competition resolution out of the box
- Keyset (cursor) pagination: stable, fast, complete
- Zero-config TypeScript & Python clients
One key. Both APIs.
Plain REST over HTTPS. Bearer-token auth. JSON in, JSON out. Use the trial key to explore, then drop in your own.
curl https://api.stat-api.com/api/v1/nfl/play_by_plays?limit=5 \
-H "Authorization: Bearer YOUR_API_KEY"curl https://api.stat-api.com/api/v1/dfs/slates/290871 \
-H "Authorization: Bearer YOUR_API_KEY"import requests
r = requests.get(
"https://api.stat-api.com/api/v1/nfl/play_by_plays",
params={"limit": 5},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(r.json()["play_by_plays"])import requests
r = requests.get(
"https://api.stat-api.com/api/v1/dfs/slates/290871",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(r.json()["name"])const res = await fetch( "https://api.stat-api.com/api/v1/nfl/play_by_plays?limit=5", { headers: { Authorization: "Bearer YOUR_API_KEY" } } ); const { play_by_plays } = await res.json();
const res = await fetch( "https://api.stat-api.com/api/v1/dfs/slates/290871", { headers: { Authorization: "Bearer YOUR_API_KEY" } } ); const slate = await res.json();
Explore free. Pick the package for your needs.
Explore free with 5-row sample previews, or unlock millions of records with Starter, the full DFS & Projections Suite with Pro, or 50M records a month with Elite.
Ship your first query today.
Explore the endpoints with the trial key, then grab your own. No sales call required.