Skip to content

Compare

The NFL API: free data, community docs and EndzoneAPI

The NFL has no public API. nflverse files and ESPN's unofficial endpoints are free. Where each fits, what the community docs cover, and how EndzoneAPI differs.

Comparison facts checked October 14, 2026. EndzoneAPI data last refreshed 2026-10-14 21:06 UTC, newest data through 2026 season. Changelog

There is no public, documented NFL API. The NFL's own api.nfl.com answered 401 without credentials when we checked, and we found no developer documentation for it. What people use instead is nflverse, openly licensed play-by-play and stats that you load as files in R or Python, and ESPN's unofficial endpoints, which are free, need no key and are undocumented by ESPN. Community references such as akeaswaran's endpoint list and pseudo-r/Public-ESPN-API describe the ESPN side.

EndzoneAPI is a documented football data API and MCP server, with every tool described, a live example for each, and 500 free credits every month. Its play-by-play, EPA and weekly stats come from nflverse, and it adds per-request filtering, per-book odds, player props and line movement. For a model you will train in R or Python, the nflverse files are free and complete. For a live scoreboard, ESPN's endpoints fit. For an app, a backtest across languages or an AI agent, a documented API saves the clean-up work.

The options

  • nflverse data

    The open data behind the R and Python NFL ecosystem, published as files on GitHub releases: play-by-play with EPA, player and team stats, schedules with closing lines, rosters, injuries, depth charts, snap counts, Next Gen Stats, PFR advanced stats and FTN charting.

    CC-BY 4.0. Last pushed 2026-10-01. Files, not an HTTP API.

  • nflfastR

    The R package that builds nflverse's play-by-play with the EPA, win probability and CPOE models.

    MIT. Last pushed 2026-10-14.

  • nflreadr and nflreadpy

    The loaders for nflverse's files: nflreadr for R and nflreadpy for Python, with caching and the same function names (load_pbp, load_schedules, load_injuries and more).

    Both MIT. nflreadr last pushed 2026-09-17; nflreadpy 2026-10-08, and its README marks it experimental.

  • nfl_data_py

    The older Python loader for the same data.

    MIT. Archived. Its README says it is deprecated in favour of nflreadpy and that no more maintenance is planned. Last pushed 2025-09-25.

  • ESPN site and core APIs

    The endpoints ESPN's own apps use: scoreboards, teams, and a per-game summary with plays grouped by drive, a win probability series and odds, plus sports.core.api.espn.com for events and odds by provider.

    Live. Free, no key. On 2026-10-14 the scoreboard returned 14 games, and the summary for a 2025 week 1 game held 169 plays in 16 drives with no EPA field. No ESPN documentation or published terms.

  • akeaswaran's ESPN endpoint list

    A community gist listing the ESPN endpoint paths for NFL and other sports.

    Unofficial. Created 2017-12-05, last updated 2026-10-12.

  • pseudo-r/Public-ESPN-API

    Community documentation of ESPN's site and core endpoints across sports, with reference code.

    MIT. Last pushed 2026-09-30. It says it is not affiliated with ESPN, offers no hosted API, and that an endpoint being reachable is not permission to reuse the data.

  • api.nfl.com

    The NFL's own data host behind its site and apps.

    Returned 401 without credentials on 2026-10-14. We found no public documentation or sign-up.

  • BALLDONTLIE

    A paid multi-sport API that lists the NFL among its sports, with a free tier and an official MCP server.

    On 2026-10-14 its site listed Free at $0 a month per sport (5 requests a minute), All-Star at $9.99, GOAT at $39.99, and All-Access for every sport at $299.99.

Side by side

EndzoneAPIthe free NFL data sources
Price and key500 free credits a month, then from $19/mo; a free keynflverse files and ESPN's endpoints are free and need no key
DocumentationEvery tool documented with parameters, response fields and a live examplenflverse: full documentation for R and Python. ESPN: none from ESPN, community write-ups only
License and termsCommercial API; nflverse data credited to itnflverse: CC-BY 4.0 data, MIT code. ESPN: no terms published for these endpoints
Play-by-play and EPAget_plays: every game since 1999 with EPA, win probability and CPOE, filtered per requestnflverse: the same data as season files. ESPN: plays grouped by drive with a win probability series, and no EPA
Closing linesEvery game since 1999, a season in one callnflverse: one closing line per game in the schedules file. ESPN: odds per game from the providers it lists
Per-book oddsClosing lines from 4 to 9 books from 2014, up to 8 books with opening lines from 2020, player props from 2023nflverse: none. ESPN: two providers on the 2025 game we checked; no history endpoint found
Next Gen Stats and chartingNext Gen Stats from 2016, PFR advanced stats from 2018, FTN charting from 2022nflverse: the same sets as files
AI assistantsMCP server for Claude, ChatGPT and CursorNone from nflverse or ESPN
Live in-game dataNo: games land the morning after, odds hourly in seasonESPN: yes, scoreboards update during games

Example call

Kansas City's third-down plays inside the 20 in week 1 of 2025, limited to one. With nflverse you load the whole season's play-by-play and filter it yourself.

bash
curl -X POST https://mcp.endzoneapi.com/v1/get_plays \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "season": 2025,
  "week": 1,
  "posteam": "KC",
  "red_zone": true,
  "third_down": true,
  "limit": 1
}'
json
{"data": {"plays": [{"game_id": "2025_01_KC_LAC", "play_id": 1613, "season": 2025, "week": 1, "posteam": "KC", "defteam": "LAC", "qtr": 2, "time": "05:36", "down": 3, "ydstogo": 9, "yardline_100": 9, "yrdln": "LAC 9", "play_type": "pass", "desc": "(5:36) (Shotgun) 15-P.Mahomes sacked at LAC 17 for -8 yards (0-D.Henley).", "yards_gained": -8, "epa": -1.1660043, "wpa": -0.057088077, "wp": 0.23161049, "vegas_wp": 0.37103462, "success": 0, "first_down": 0, "touchdown": 0, "interception": 0, "fumble_lost": 0, "sack": 1, "penalty": 0, "penalty_type": null, "shotgun": 1, "no_huddle": 0, "pass_length": null, "pass_location": null, "air_yards": null, "yards_after_catch": null, "run_location": null, "run_gap": null, "cpoe": null, "xpass": 0.97642094, "passer_player_id": "00-0033873", "passer_player_name": "P.Mahomes", "rusher_player_id": null, "rusher_player_name": null, "receiver_player_id": null, "receiver_player_name": null, "posteam_score": 0, "defteam_score": 10, "score_differential": -10, "drive": 7, "drive_result": "Field goal", "series_result": "Field goal"}], "summary": {"plays": 1, "epa_total": -1.17, "epa_per_play": -1.166, "success_rate": 0}, "count": 1, "next_offset": 1}}

Responses are wrapped in a data object. get_plays costs 10 credits, and the summary covers the plays returned.

Use the free NFL data sources instead if

  • You work in R or Python and are happy loading files. nflverse is free, openly licensed, and is where EndzoneAPI's play-by-play comes from.
  • You want every column of every play at once for a whole-history model. The files are the fastest way to get that.
  • You need live, in-game scores. EndzoneAPI publishes each game the morning after it is played.
  • You are building a quick personal scoreboard and can live with ESPN's endpoints changing under you.
  • You want ESPN's own extras, such as news, articles and video links, which EndzoneAPI does not carry.

Questions

Is there an official NFL API?

Not a public one that we could find. The NFL's api.nfl.com answered 401 without credentials when checked, and we found no developer documentation or sign-up. People use nflverse's data files or ESPN's unofficial endpoints instead.

Is there a free NFL API?

ESPN's endpoints at site.api.espn.com are free and need no key, but ESPN does not document them. nflverse is free and openly licensed, but it is files you load in R or Python, not an HTTP API. EndzoneAPI is an HTTP API with 500 free credits every month.

Where can I get NFL play-by-play data for free?

From nflverse: the play-by-play files carry EPA, win probability and CPOE for every game since 1999, and load_pbp in nflreadr (R) or nflreadpy (Python) fetches them. ESPN's game summary has plays grouped by drive but no EPA. EndzoneAPI's get_plays serves the nflverse data filtered per request.

Is nfl_data_py still maintained?

No. Its repository is archived, and its README says it is deprecated in favour of nflreadpy with no further maintenance planned. nflreadpy was last pushed on 2026-10-08.

Where are the ESPN NFL API docs?

ESPN publishes none. Community references include akeaswaran's endpoint list on GitHub Gist and the pseudo-r/Public-ESPN-API repository. Both are unofficial and the endpoints can change without notice.

Does the NFL API have betting odds?

ESPN's core API listed lines from two providers on a 2025 game we checked, and nflverse's schedules file carries one closing line per game. EndzoneAPI keeps each sportsbook's line, 4 to 9 books from 2014 and up to 8 with opening lines from 2020, plus player props from 2023.

Can Claude or ChatGPT use EndzoneAPI?

Yes. EndzoneAPI runs an MCP server at mcp.endzoneapi.com, so Claude, ChatGPT and Cursor can call the same tools as the REST API.

Sources

Checked October 14, 2026.

See the data

Try it with 500 free credits every month

No card. REST or MCP.