NFL API: Why There Is No Public One and Which Free Routes Work
We called the NFL's own hosts in November 2026. They answered 401 and 404, so use these free routes.
Last updated:
Does the NFL Have a Public API?
No. The NFL publishes no public API, no public developer docs and no free key. We called the league's own hosts on 2 November 2026: api.nfl.com, the host that nfl.com's own pages connect to, answered HTTP 401 to every request we sent without a token, and the two old scores.json feeds answered 404. The nfl.com terms allow personal, non-commercial use of the site and prohibit systematic retrieval of its data without the NFL's written consent.
The NFL data that developers use comes from other places. ESPN's NFL endpoints give scores, schedules and play-by-play with no key, and Sleeper's free API covers players, injury status and trending adds. nflverse publishes play-by-play as CSV files back to 1999. For official data with a contract and support, you buy from a licensed provider. Each route has a row in the table of free routes, with the page where we document it.
What the NFL's Own Hosts Answered
Every call below went out from a script with curl's default headers on 2 November 2026, with no cookie and no token. None of them returned data.
| URL | Status | What came back |
|---|---|---|
https://api.nfl.com/v1/games | 401 | A short HTML error page, "Error 401 Unauthorized", with the header x-nfl-jwtstatus: FAILED |
https://api.nfl.com/ | 401 | The same page. A made-up path under /v1/ got it too |
https://api.ngs.nfl.com/league/schedule/current | 401 | {"message":"Unauthorized"} |
https://developer.nfl.com/ | 401 | A page that sends the browser to an NFL sign-in for an app named developer-portal |
https://www.nfl.com/feeds-rs/scores.json | 404 | nfl.com's HTML error page, "404 - Flag on the Play." |
https://static.www.nfl.com/liveupdate/scores/scores.json | 404 | An empty body with x-cld-error: Resource not found |
https://www.nfl.com/developer | 404 | The same "Flag on the Play" page, and so did /developers |
The 401 on a made-up path tells you the most: api.nfl.com checks for a token before it looks at the path. The header name says the check is for a JSON Web Token (JWT), a signed login token, and the Next Gen Stats site's own code sets an Authorization header on its calls to both API hosts. Without that token, no path on either host answers.
Where the NFL's Official Data Goes
The NFL licenses its data commercially. Its own press releases on nfl.com say that one exclusive distribution partner supplies real-time official play-by-play statistics, Next Gen Stats data and the official betting data feed to media companies and sportsbooks, under a deal that runs through the 2027-28 season. Our sports data API guide compares the licensed providers that developers can buy from.
Next Gen Stats
Next Gen Stats is the NFL's own stats site. Its robots.txt disallows nothing, but its pages load their numbers from api.ngs.nfl.com, which answered 401 without a token. The site has no terms page of its own (/terms returned 404), and its footer links the nfl.com terms.
NFL Pro
NFL Pro at pro.nfl.com describes itself as "Next Gen Stats and All 22 Film." and links the nfl.com Subscription Terms. We found no API or developer page on it.
developer.nfl.com and the nfl.com footer
developer.nfl.com answered 401 and sent us to an NFL sign-in. The nfl.com homepage does not link to it, and the homepage footer has no developer, API or data licensing link. The footer's "Licensing" link opens a prospective licensee application that asks for a product catalog and a business plan, with no mention of an API.
Free Ways to Get NFL Data
The three free routes answered HTTP 200 on 2 November 2026 with default headers and no key. We document each one on its own page.
| Route | What it gives | Key needed | Where we document it |
|---|---|---|---|
| ESPN's NFL endpoints | Scores, schedules, box scores, drives and play-by-play | No | Scoreboard URLs and game summary |
| Sleeper API | Players, injury status, the current NFL week, trending adds | No | Sleeper API guide |
| nflverse | Play-by-play CSV files, one per season from 1999 to 2026 | No | Free sports datasets |
| Licensed data providers | Official feeds with a contract and an SLA | Yes | Sports data APIs and the API directory |
ESPN: scores and play-by-play
https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard
Our call returned week 8 of the 2026 regular season with 14 events. One was "Philadelphia Eagles at Washington Commanders", with status.type.description "Final". The summary for that game (event 401873035) carried 23 drives with 188 plays. Date filters, weeks and the summary fields are on the ESPN API page.
import requests
url = 'https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard'
data = requests.get(url, timeout=10).json()
for game in data['events']:
print(game['name'], game['status']['type']['description'])
Sleeper: players, injuries and trending adds
https://api.sleeper.app/v1/state/nfl returned "week":8 and "season":"2026". https://api.sleeper.app/v1/players/nfl/trending/add returned 25 rows of player_id and count for the last 24 hours. The full player map at /v1/players/nfl resolves the top row, 11625 with 507,816 adds, to Adonai Mitchell, a Jets wide receiver. That map was 14.7 MB today and carries an injury_status for each player, so Sleeper's docs ask you to call it once a day at most.
nflverse: play-by-play as CSV
The community project nflverse publishes play-by-play as one file per season in the pbp release of nflverse-data on GitHub. play_by_play_2026.csv was updated on 2 November 2026 and has 372 columns, among them game_id (2026_01_ARI_LAC in the first row), desc, epa and wp. GitHub lists the license as CC BY 4.0.
Odds for NFL games
For spreads, totals and player props from sportsbooks, see the NFL odds API guide.
Status Codes You Will See
401 Unauthorized
api.nfl.com returned the same short HTML error page, about 430 bytes, for every path we tried, with "Error 54113" and x-nfl-jwtstatus: FAILED. The body is HTML, so check the status code before you parse it. api.ngs.nfl.com answered with JSON instead: {"message":"Unauthorized"}.
404 Not Found
www.nfl.com/feeds-rs/scores.json returned a 183 KB HTML page headed "404 - Flag on the Play." static.www.nfl.com/liveupdate/scores/scores.json returned an empty body with an x-cld-error header. Neither URL serves scores today.
403 Forbidden
The /help link on nfl.com redirects to support.nfl.com, which answered our script with HTTP 403 and a "Just a moment..." bot check. We did not try to get past it.
NFL Terms and Limitations
What the nfl.com terms allow
Section 1.3 of the NFL.com Terms and Conditions (updated May 16, 2024) reads: "You may use the Services solely for your own individual non-commercial and informational purposes only." It goes on: "Systematic retrieval of data or other content from the Services, whether to create or compile, directly or indirectly, a collection, compilation, database, or directory, is prohibited absent our express prior written consent."
Section 11 also bars robots and spiders that collect information from the Services "for any commercial purpose". The API hosts refuse unsigned calls anyway.
- No published rate limit: the NFL has no public endpoint to limit, and ESPN sent no rate-limit headers on our call. Sleeper's docs ask you to "stay under 1000 API calls per minute", or risk an IP block.
- Unofficial routes can change: ESPN's endpoints are undocumented, so ESPN can move them without notice.
- nflverse updates in batches: the 2026 play-by-play file last changed at 19:29 UTC on 2 November, the day after Sunday's games.
When your app takes bets, sells a product or needs official NFL data, compare licensed providers on sports data APIs or in the directory.
Frequently Asked Questions
https://api.nfl.com/v1/games returned HTTP 401 without a token, and the old scores.json feeds returned 404. The league licenses its official data to media companies and sportsbooks through one exclusive distribution partner.api.nfl.com and api.ngs.nfl.com both answered 401 without it. The free routes need no key or sign-up. ESPN's scoreboard, Sleeper's /v1/state/nfl and the nflverse files all answered plain requests./v1/games and a made-up one, returned HTTP 401 with x-nfl-jwtstatus: FAILED. The host checks for a signed token before anything else.https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard and read the events array. Each event has a name and a status in status.type.description. With no parameters you get the current week: on 2 November 2026 that was week 8, with 14 games. The ESPN scoreboard URLs section covers dates.epa and wp. For one recent game, ESPN's summary endpoint returns drives and plays. Our test game had 23 drives and 188 plays.Need Official NFL Data?
The free routes cover hobby projects and models. A production app needs a contract, an SLA and support. Compare licensed providers in our directory.