The football data API.
NFL player props by sportsbook, opening to close.
Opening and closing prop lines by sportsbook since 2023: passing, rushing and receiving yards, receptions, touchdowns and more, with players linked to their stats. Underneath them, more than 1.2 million plays carrying EPA and win probability, 470,000 weekly stat lines, injuries, depth charts, snap counts and closing odds for every game. Call it over REST or point Claude at it over MCP.
500 free credits every month, no card. Works in Claude, ChatGPT and Cursor: connect over MCP
- plays
- 1.3M+
- games
- 7,500+
- players
- 24,000+
- seasons
- 28
Underneath them, more than 1.2 million plays carrying EPA and win probability, 470,000 weekly stat lines, injuries, depth charts, snap counts and closing odds for every game. Call it over REST or point Claude at it over MCP.
Try it
One request, JSON back.
Copy the call, put your key in, run it. get_standings costs 2 credits, and every account starts with 500 free credits every month, no card.
Request
curl -X POST https://mcp.endzoneapi.com/v1/get_standings \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"season": 2025,
"division": "AFC West"
}'Response
{
"season": 2025,
"standings": [
{
"team": "DEN",
"name": "Denver Broncos",
"conference": "AFC",
"division": "AFC West",
"division_rank": 1,
"conference_rank": 1,
"division_tiebreaker": "record",
"conference_tiebreaker": "common games",
"wins": 14,
"losses": 3,
"ties": 0,
"win_pct": 0.8235294,
"games_played": 17,
"points_for": 401,
"points_against": 311,
"point_diff": 90,
"home": "8-1",
"away": "6-2",
...First 22 lines. Full response and every field
Also in EndzoneAPI
The college football API.
NCAA FBS college football, every season since 2004: play-by-play, standings, sportsbook lines and season lines. Same key and credits as the NFL.
NCAAF API: see the data- games
- 18,948
- plays
- 3,300,231
- seasons
- 23
Also in EndzoneAPI
The FCS football API.
NCAA FCS college football, every season since 2004: play-by-play, standings, sportsbook lines and season lines. Same key and credits as the NFL.
FCS API: see the data- games
- 15,526
- plays
- 1,880,965
- seasons
- 23
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 |
|---|---|---|---|---|---|
| Sun 9:30 AM ET | CIN | ATL | CIN -3 | 52.5 | 2026_09_CIN_ATL |
| Sun 1:00 PM ET | LA | WAS | LA -4.5 | 48.5 | 2026_09_LA_WAS |
| Sun 1:00 PM ET | NYG | PHI | NYG -3.5 | 38.5 | 2026_09_NYG_PHI |
| Sun 1:00 PM ET | DEN | CAR | DEN -2.5 | 44.5 | 2026_09_DEN_CAR |
| Sun 1:00 PM ET | DAL | IND | DAL -5.5 | 51.5 | 2026_09_DAL_IND |
| Sun 1:00 PM ET | NYJ | KC | KC -10 | 47.5 | 2026_09_NYJ_KC |
get_schedule · 2 credits · then get_game_detail for the box score and odds
Prop history
Every line a player has had, and how they did against it.
- Davis AllenLA
- James CookBUF
- Olamide ZaccheausATL
- Colby ParkinsonLA
- Dalton KincaidBUF
- Jahan DotsonATL
- Josh AllenBUF
- Kenny GainwellTB
- Khalil ShakirBUF
- Noah GrayKC
- Travis KelceKC
- Xavier HutchinsonHOU
- Austin HooperATL
- Brian RobinsonATL
- Dalton SchultzHOU
- Hunter HenryNE
- Jauan JenningsMIN
- Kyle JuszczykSF
- Matthew StaffordLA
- Quintin MorrisJAX
- Rashod BatemanBAL
- Adam TrautmanDEN
- Amon-Ra St. BrownDET
- Cade OttonTB
Coverage
Coverage you can inspect before you build.
Every regular season and playoff game since 1999, with the consensus closing spread and total.
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 | One row per team 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 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 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 | 4,500 to 6,200 rows per season | Full | |
Depth charts Weekly depth chart per team, formation, position, and rank. | 2001 to current | 27,000 to 41,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. | 2013 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 spread and total 1999 to current (moneylines from 2006); per-book closing lines from 2014; opening and closing from 2020; player props from 2023; alternate lines from 2023, the current season included | Hourly snapshots in-season | Partial For 2014-2019, each book's final pregame line, about 4-9 books a game (Westgate, Caesars, 5Dimes, Wynn, Unibet and others; no opening line, and Pinnacle only in part of 2015). From 2020, up to four game-day snapshots per game (closing is the last one before kickoff, usually within five hours of it), hourly from 2026: 7 books for 2020-2022, 7 or 8 in 2023, 8 from 2024 including Pinnacle. Alternate spreads and totals from 2023, the current season included (2023-2025 from 6 books; 2026 captured with each props snapshot from 7). | |
Next Gen Stats and PFR advanced Tracking and advanced 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. |
Full detail in the data atlas. Sportsbooks: DraftKings, FanDuel, BetMGM, ESPN BET and Pinnacle, plus three more books, hourly in season (Pinnacle and those three were not captured from February 9 to October 6 2026). Per-bookmaker lines start with the 2014 season (closing only, 4-9 books) and gain opening lines and these eight books in 2020; earlier games carry the consensus closing line only.
Last written 2026-11-06 20: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 advanced stats, keyed to the same players
Next Gen Stats tracking and Pro Football Reference advanced stats sit in the same database as the play-by-play, on the same identifiers. The join is the part that normally eats a week.
See it in use: NoPunt, our NFL predictions site, runs on this data and grades every pick it makes in its public results.
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
- get_game_detailFull game detail with team stats, starting QBs, odds, weather, and officials
- get_head_to_headMatchup history with win/loss records and margins
- get_playsPlay-by-play with EPA, win probability, situation filters
- get_oddsOdds by game with bookmaker filters
- get_player_propsPlayer prop lines by sportsbook, opening and closing
- get_prop_historyA player's prop lines against the result, game by game
- get_prop_movementHow one player's prop line moved before a game, every capture by sportsbook
- get_alt_linesAlternate spreads and totals by sportsbook: every point on the ladder, opening and closing, from the 2023 season to the current one
- get_alt_player_propsAlternate player prop ladders by sportsbook: every passing, rushing and receiving line a book posted for a player (history from the 2023 season)
- get_market_oddsOpening and closing lines by sportsbook for the half and quarter markets (history from the 2023 season)
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 in the same database.
Read more →Closing spreads and totals 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: 23 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 →Guides
Working code for the questions people ask.
- get_prop_movement
How do I see how an NFL player prop line moved before kickoff in Python?
Every capture of one player's prop line before kickoff, book by book, with the minutes to the start and both prices.
Python, JavaScript, cURL → - get_games
How do I backtest NFL closing lines in Python?
Every regular-season game with its score and the closing spread, total and moneylines on the same row, so a cover or over rate is one line of pandas.
Python, JavaScript, cURL → - get_plays
How do I calculate NFL EPA per play in Python?
Every play a team ran in a season with expected points added, win probability and success on each row, and a summary the API computes for you.
Python, JavaScript, cURL →
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://mcp.endzoneapi.com/v1/tools public catalogue with JSON Schema
- GET https://mcp.endzoneapi.com/openapi.json OpenAPI 3.1 spec
- POST https://mcp.endzoneapi.com/v1/{tool}
- MCP https://mcp.endzoneapi.com/mcp
curl -X POST https://mcp.endzoneapi.com/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 every month, no card. Subscriptions add a monthly allowance; wallet top-ups do not expire while your account is open.
- +All 23 endpoints
- +REST API + MCP access
- +No credit card required
- +10,000 credits/month
- +All 23 endpoints
- +Email support
- +Overage at wallet rates
- +30,000 credits/month
- +All 23 endpoints
- +Priority support
- +Overage at wallet rates
- +125,000 credits/month
- +All 23 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 gets 500 credits every month 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 do not expire while your account is open.
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; 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://mcp.endzoneapi.com/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 23 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?
Odds refresh every hour. Everything else updates once a day, early morning US Eastern (10:00 UTC): scores, standings, rosters, player and team stats, snap counts, injuries 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, 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 free credits every month, no card.
EndzoneAPI · The football data API.