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.
| Kickoff | Away | Home | Line | Total | Game id |
|---|---|---|---|---|---|
| Thu 8:15 PM ET | ATL | GB | GB -6 | 44.5 | 2026_03_ATL_GB |
| Sun 1:00 PM ET | NYJ | DET | DET -6.5 | 48.5 | 2026_03_NYJ_DET |
| Sun 1:00 PM ET | HOU | IND | HOU -2.5 | 43.5 | 2026_03_HOU_IND |
| Sun 1:00 PM ET | NE | JAX | JAX -3 | 45.5 | 2026_03_NE_JAX |
| Sun 1:00 PM ET | KC | MIA | KC -11.5 | 46.5 | 2026_03_KC_MIA |
| Sun 1:00 PM ET | TEN | NYG | NYG -3 | 40.5 | 2026_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.
Every regular season and playoff game since 1999, with consensus closing lines.
Play-by-play since 1999 with EPA, win probability, success rate, and CPOE.
Weekly player box scores since 1999 across passing, rushing, receiving, defense, kicking, and returns.
| Dataset | Seasons | Volume | Status | Tools |
|---|---|---|---|---|
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 current | 7,500+ games | Full | |
Standings Computed from final scores: record, points, home/away/division/conference splits, streak, division rank, and conference playoff seed. | 1999 to current | 32 rows per season | Full 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 current | 470,000+ stat lines | Full | |
Weekly team stats The same stat set aggregated per team and game, plus EPA and success. | 1999 to current | 14,000+ team-weeks | Full | |
Play-by-play 160 nflfastR columns per play: situation, result, EPA, WPA, win probability, CPOE, xPass, players involved, drive context. | 1999 to current | 1,200,000+ plays | Full | |
Injury reports Official weekly report: game status and practice participation with the injury named. | 2009 to current | 5,000+ rows per season | Full | |
Depth charts Weekly depth chart per team, formation, position, and rank. | 2001 to current | 32,000+ rows per season | Full 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 current | 23,000+ rows per season | Full 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 2026 | Hourly snapshots in-season | Partial 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 current | 149,000+ player-weeks | Full 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 current | 187,000+ charted plays | Full 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 18: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.
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.
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.
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.
- get_standingsStandings and playoff seeding by the NFL tiebreaking procedure, with the step that decided each rank
- get_scheduleUpcoming games by week or for the next N days
- search_playersFind players by name, team, or position
- get_injuriesInjury report by team and week with practice and game status
- get_depth_chartTeam depth chart by week
- get_team_statsTeam totals and per-week lines with EPA, success rate, and situational splits
- get_gamesQuery games by season, week, team, date, type, or status, with closing lines
- get_player_statsWeekly and season stat lines for one player: passing, rushing, receiving, defense, kicking, fantasy
- get_player_leadersLeaderboard for any stat, filtered by position, team, and season
- get_snap_countsOffensive, defensive, and special-teams snaps and shares by game or player
- get_advanced_statsNext Gen Stats tracking metrics and Pro Football Reference advanced stats
Built for
Four jobs, and the endpoints that do them.
Every NFL play since 1999, already carrying EPA
1.2 million plays with expected points and win probability, plus Next Gen Stats tracking and FTN charting in the same database.
Read more →Closing lines back to 1999, with the plays behind them
Every game carries a closing spread, and the play-by-play underneath is already priced in EPA and win probability.
Read more →Football data your agent can actually call
REST for code, MCP for Claude and Cursor — 17 tools, one key, no scraping.
Read more →Start-sit calls with the usage data behind them
Snap shares, air yards, depth charts and injury status — the leading indicators, not last week's box score.
Read more →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-RemainingPricing
Free to start, then you pay per call.
500 credits on signup, no card. Subscriptions add a monthly allowance; wallet top-ups never expire.
- +All 17 endpoints
- +REST API + MCP access
- +No credit card required
- +10,000 credits/month
- +All 17 endpoints
- +Email support
- +Overage at wallet rates
- +30,000 credits/month
- +All 17 endpoints
- +Priority support
- +Overage at wallet rates
- +125,000 credits/month
- +All 17 endpoints
- +Dedicated support
- +Volume rates available
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.