Data
NFL play-by-play data with EPA
Every NFL play since 1999 with EPA, win probability and the nflfastR columns, filterable by team, down, play type and win probability. REST or MCP.
EndzoneAPI serves NFL play-by-play for every game since 1999, with expected points added (EPA), win probability and the rest of the nflfastR model columns attached to each play.
Filter by season, week, offense, defense, down, quarter, play type, red zone, third down or win-probability range, and get back up to 1,000 plays a call. No R, no Python package, no parquet files to download first. The table below is read from the database.
Coverage by season
Counted from the database when this page was built: finished regular-season and playoff games.
| Season | Games | Covered | Plays |
|---|---|---|---|
| 2026 | 47 | 100% | 8,156 |
| 2025 | 285 | 100% | 48,771 |
| 2024 | 285 | 100% | 49,492 |
| 2023 | 285 | 100% | 49,665 |
| 2022 | 284 | 100% | 49,434 |
| 2021 | 285 | 100% | 49,922 |
| 2020 | 269 | 100% | 47,705 |
| 2019 | 267 | 100% | 47,260 |
| 2018 | 267 | 100% | 47,109 |
| 2017 | 267 | 100% | 47,245 |
| 2016 | 267 | 100% | 47,651 |
| 2015 | 267 | 100% | 48,122 |
| 2014 | 267 | 100% | 47,629 |
| 2013 | 267 | 100% | 48,158 |
| 2012 | 267 | 100% | 47,834 |
| 2011 | 267 | 100% | 47,448 |
| 2010 | 267 | 100% | 46,892 |
| 2009 | 267 | 100% | 46,519 |
| 2008 | 267 | 100% | 45,917 |
| 2007 | 267 | 100% | 46,266 |
| 2006 | 267 | 100% | 46,299 |
| 2005 | 267 | 100% | 46,823 |
| 2004 | 267 | 100% | 46,705 |
| 2003 | 267 | 100% | 46,811 |
| 2002 | 267 | 100% | 47,355 |
| 2001 | 259 | 100% | 44,969 |
| 2000 | 259 | 99% | 45,491 |
| 1999 | 259 | 100% | 46,136 |
How to get it
get_plays, 10 credits a call. A full 2025 season is 49 calls and 490 credits, inside the 500 free credits every account starts with.
curl -X POST https://mcp.endzoneapi.com/v1/get_plays \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"season": 2024,
"posteam": "KC",
"third_down": true,
"limit": 200
}'What comes back
| plays[] | List of objects |
| plays[].game_id | |
| plays[].play_id | |
| plays[].season | |
| plays[].week | |
| plays[].posteam | |
| plays[].defteam | |
| plays[].qtr | |
| plays[].time | |
| plays[].down | |
| plays[].ydstogo | |
| plays[].yardline_100 | |
| plays[].yrdln | |
| plays[].play_type |
Every field and a real response: get_plays docs.
Questions
How far back does NFL play-by-play go?
Every game since the 1999 season, updated through the current week.
Is this the same data as nflfastR?
It is built from the nflverse play-by-play release, the same source nflfastR uses, including its EPA and win-probability models. The difference is that you query it over HTTP instead of loading files.
Can I filter to specific situations?
Yes: down, quarter, red zone, third down, play type, offense, defense, passer, rusher, receiver and win-probability range, in any combination. Charting flags like play action, motion, RPO and screens are there too, from 2022 on.
Can I use it from Claude or ChatGPT?
Yes. EndzoneAPI is an MCP server as well as a REST API: add one URL to Claude, Cursor or any MCP client and ask in plain English.
Is it free?
Every account starts with 500 free credits and no card. Plans start at $19 a month for 10,000 credits.
What it will not do
- Up to 1,000 plays per call. A full season is about 50 calls.
- Player tracking (Next Gen Stats speed and separation per play) is not attached to plays; weekly NGS aggregates are a separate endpoint.
- EPA and win probability are nflverse's models, served as published. We do not refit them.
Works with
Start with 500 free credits
No card. REST or MCP.