Skip to content

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.

URLStatusWhat came back
https://api.nfl.com/v1/games401A short HTML error page, "Error 401 Unauthorized", with the header x-nfl-jwtstatus: FAILED
https://api.nfl.com/401The same page. A made-up path under /v1/ got it too
https://api.ngs.nfl.com/league/schedule/current401{"message":"Unauthorized"}
https://developer.nfl.com/401A page that sends the browser to an NFL sign-in for an app named developer-portal
https://www.nfl.com/feeds-rs/scores.json404nfl.com's HTML error page, "404 - Flag on the Play."
https://static.www.nfl.com/liveupdate/scores/scores.json404An empty body with x-cld-error: Resource not found
https://www.nfl.com/developer404The 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.

RouteWhat it givesKey neededWhere we document it
ESPN's NFL endpointsScores, schedules, box scores, drives and play-by-playNoScoreboard URLs and game summary
Sleeper APIPlayers, injury status, the current NFL week, trending addsNoSleeper API guide
nflversePlay-by-play CSV files, one per season from 1999 to 2026NoFree sports datasets
Licensed data providersOfficial feeds with a contract and an SLAYesSports data APIs and the API directory

ESPN: scores and play-by-play

URL
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.

Python
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.

Browse API Providers →

Frequently Asked Questions

No. The league publishes no public developer docs, no sign-up and no free key. On 2 November 2026, 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.
Not from the NFL. Free NFL data comes from ESPN's NFL endpoints (scores and play-by-play), Sleeper's API (players, injuries and trending adds) and nflverse (play-by-play CSV files back to 1999). None of them needs a key. Our free sports API guide lists more free sources.
The NFL's own hosts want a token, and we found no public way to get one: 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.
It is the API host that nfl.com's own pages connect to, and the homepage carries a preconnect link to it. Every path we called, including /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.
The NFL publishes none, because it has no public endpoint to limit. ESPN sent no rate-limit headers on our call, so cache what you fetch and poll no faster than your app needs. Sleeper's docs ask you to stay under 1,000 calls a minute or risk an IP block.
Call 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.
nflverse publishes one CSV per season in its GitHub releases, from 1999 to 2026, and the 2026 file has 372 columns, including epa and wp. For one recent game, ESPN's summary endpoint returns drives and plays. Our test game had 23 drives and 188 plays.
Not from nfl.com without the NFL's written consent: its terms prohibit systematic retrieval of data to build a database. The free routes carry no SLA, and Sleeper's docs allow free use for non-commercial purposes only. For a production or betting app, compare licensed providers on sports data APIs or in the API directory.

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.