Skip to content
EndzoneAPI

The football data API.

Every NFL play since 1999.

1.2 million plays carrying EPA and win probability, and 470,000 weekly stat lines underneath them. Next Gen Stats tracking, FTN charting, injuries, depth charts, snap counts and bookmaker odds sit in the same database. Call it over REST or point Claude at it over MCP. The first 500 credits are free and we do not ask for a card.

plays
1.2M+
games
7,500+
players
24,000+
seasons
28

This week

What get_schedule returns right now.

Rendered from the same rows get_schedule returns, refreshed every hour. Lines are the consensus closing number where posted.

KickoffAwayHomeLineTotalGame id
Thu 8:15 PM ETATLGBGB -644.52026_03_ATL_GB
Sun 1:00 PM ETNYJDETDET -6.548.52026_03_NYJ_DET
Sun 1:00 PM ETHOUINDHOU -2.543.52026_03_HOU_IND
Sun 1:00 PM ETNEJAXJAX -345.52026_03_NE_JAX
Sun 1:00 PM ETKCMIAKC -11.545.52026_03_KC_MIA
Sun 1:00 PM ETTENNYGNYG -3.540.52026_03_TEN_NYG

get_schedule · 2 credits · then get_game_detail for the box score and odds

Coverage

Coverage you can inspect before you build.

Games
7,500+

Every regular season and playoff game since 1999, with consensus closing lines.

Plays
1,200,000+

Play-by-play since 1999 with EPA, win probability, success rate, and CPOE.

Player stat lines
470,000+

Weekly player box scores since 1999 across passing, rushing, receiving, defense, kicking, and returns.

DatasetSeasonsVolumeStatusTools
Games and schedules
Scores, kickoff (UTC), venue, surface, weather, rest days, starting QBs, coaches, referee, and the consensus closing spread, total, and moneylines.
1999 to current7,500+ gamesFull
Standings
Computed from final scores: record, points, home/away/division/conference splits, streak, division rank, and conference playoff seed.
1999 to current32 rows per seasonFull
Ranks apply the NFL tiebreaking procedure and report which step decided each position; conference_rank is the playoff seed, so division winners hold seeds 1-4. Net touchdowns and the coin toss, the ladder's last two steps, are not applied.
Weekly player stats
150 nflverse columns per player-week: passing, rushing, receiving, defense, kicking, punting, returns, fantasy points.
1999 to current470,000+ stat linesFull
Weekly team stats
The same stat set aggregated per team and game, plus EPA and success.
1999 to current14,000+ team-weeksFull
Play-by-play
160 nflfastR columns per play: situation, result, EPA, WPA, win probability, CPOE, xPass, players involved, drive context.
1999 to current1,200,000+ playsFull
Injury reports
Official weekly report: game status and practice participation with the injury named.
2009 to current5,000+ rows per seasonFull
Depth charts
Weekly depth chart per team, formation, position, and rank.
2001 to current32,000+ rows per seasonFull
2025 onwards is a daily source; the last snapshot before each week's kickoff is kept.
Snap counts
Offensive, defensive, and special-teams snaps and shares per player per game.
2012 to current23,000+ rows per seasonFull
Keyed by PFR player id.
Odds and line movement
Moneyline, spread, and total per bookmaker with opening, closing, and hourly history.
Consensus closing lines 1999 to current; per-book snapshots from 2026Hourly snapshots in-seasonPartial
Per-bookmaker history begins with the 2026 season.
Next Gen Stats and PFR advanced
Tracking and charting metrics the box score does not carry: time to throw, air yards, completion percentage above expectation, separation, cushion, rush yards over expected, plus pressures, hurries, blitzes, drops, bad throws, missed tackles, and coverage yards allowed.
NGS 2016 to current, PFR 2018 to current149,000+ player-weeksFull
NGS rows key on GSIS player id, PFR rows on PFR id; week 0 on an NGS row is that season's aggregate.
FTN charting
Manual play charting on top of play-by-play: starting hash, quarterback alignment, backfield and box counts, pre-snap motion, play action, screens, run-pass options, blitzer and pass-rusher counts, throwaways, contested balls, and drops.
2022 to current187,000+ charted playsFull
Reached through get_plays with include_charting, or by filtering on a charting flag. Non-scrimmage plays are charted as 0 rather than left empty.

Full detail in the data atlas. Sportsbooks: DraftKings, FanDuel, BetMGM, Caesars, ESPN BET. Per-bookmaker snapshots start with the 2026 season; earlier games carry the consensus closing line only.

Last written 2026-09-22 13:05 UTC. Every dataset's own refresh time is in the changelog.

Why trust it

The parts other feeds skip, because they are the hard parts.

Anyone can serve a box score. These are the three places where doing it properly costs real work, and where a shortcut shows.

12 steps

Real tiebreakers, and the step that decided it

Standings follow the NFL's actual tiebreaking procedure — head-to-head, division record, common games, conference record, strength of victory, on down — and every rank reports which step settled it. Public feeds almost universally sort by win percentage and stop.

1999

EPA and win probability on every play since

1.2 million plays, each already carrying expected points added and win probability, so situational analysis does not start with building the model. Yards treat all yards alike; the down marker does not.

3 sources

Tracking and charting, keyed to the same players

Next Gen Stats tracking and FTN charting sit in the same database as the play-by-play, on the same identifiers. The join is the part that normally eats a week.

Tools

Every tool, and what a call costs.

Every tool is one REST endpoint and one MCP tool with the same name, the same parameters, and a fixed credit cost. Empty results are not charged.

Access

REST or MCP. Same data either way.

Call it from any language over REST. Let Claude or Cursor query it in plain English over MCP.

  • GET https://football-mcp-production.up.railway.app/v1/tools public catalogue with JSON Schema
  • POST https://football-mcp-production.up.railway.app/v1/{tool}
  • MCP https://football-mcp-production.up.railway.app/mcp
curl -X POST https://football-mcp-production.up.railway.app/v1/list_teams \
  -H "x-api-key: YOUR_API_KEY"

# every tool: POST /v1/{tool} with a JSON body
# responses carry X-Credits-Used and X-Credits-Remaining

Pricing

Free to start, then you pay per call.

500 credits on signup, no card. Subscriptions add a monthly allowance; wallet top-ups never expire.

Free
$0
500 wallet credits on signup
  • +All 17 endpoints
  • +REST API + MCP access
  • +No credit card required
Start free
Starter
$19/mo
10,000 credits/month
  • +10,000 credits/month
  • +All 17 endpoints
  • +Email support
  • +Overage at wallet rates
Choose Starter
ProMost popular
$49/mo
30,000 credits/month
  • +30,000 credits/month
  • +All 17 endpoints
  • +Priority support
  • +Overage at wallet rates
Choose Pro
Scale
$149/mo
125,000 credits/month
  • +125,000 credits/month
  • +All 17 endpoints
  • +Dedicated support
  • +Volume rates available
Choose Scale

Full breakdown, credit costs per tool, and FAQ on the pricing page.

Questions

The things people ask before signing up.

Is EndzoneAPI free?

Every account starts with 500 credits and no card. Calls cost 1 to 25 credits depending on the endpoint, so 500 is a few hundred real requests. Paid plans start at $19/mo for 10,000 credits a month, and wallet top-ups never expire.

How far back does the data go?

Play-by-play runs from 1999 to the current season, 1.2 million plays with EPA and win probability. Next Gen Stats tracking starts in 2016 and FTN charting in 2022; earlier seasons have the plays without those columns.

What is MCP, and do I need it?

MCP is the protocol Claude, Cursor and similar assistants use to call tools. Point one at https://football-mcp-production.up.railway.app/mcp with your key and it picks the endpoint and reads the response itself — no client code. If you are writing an application instead, ignore MCP and use the REST endpoints; they are the same 17 tools.

Can I use this commercially?

Yes, within the terms. The one thing to know is that odds data comes from a commercial provider, so reselling the odds themselves as a feed is not permitted — using them inside a product or a model is.

How current is it?

One update a day, at 6am Eastern: scores, standings, rosters, player and team stats, snap counts, injuries, odds and the previous day's play-by-play. There is no live in-game feed, and a game in progress is not reflected until the next morning.

Where do the advanced stats come from?

EPA and win probability come with the play-by-play. Next Gen Stats and Pro Football Reference supply the tracking and advanced columns, and FTN supplies charting — all keyed to the same players as the plays, which is the part that normally takes a week to reconcile.

What are the rate limits?

60 requests a minute, dropping to 10 if your credit balance falls below 100. The limit is the same on every plan — credits, not requests, are the spend boundary.

Before you write another scraper

Start with 500 credits and no card.

EndzoneAPI · The football data API.