NFL play-by-play data with EPA
Every NFL play since 1999 with EPA, win probability and the full set of model 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 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 on November 12, 2026: finished regular-season and playoff games.
| Season | Games | Covered | Plays |
|---|---|---|---|
| 2026 | 136 | 100% | 23,822 |
| 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 gets each month. In Python, pip install endzoneapi and set ENDZONEAPI_API_KEY.
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.
Do I have to load files to use it?
No. You query it over HTTP, filtered by team, down, play type and win probability, so there is nothing to download or parse.
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.
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 gets 500 free credits every month 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 served as published by the models that produced them. We do not refit them.
Works with
Start with 500 free credits every month
No card. REST or MCP.