Skip to content
EndzoneAPI

Documentation

Everything you need to connect and query 17 football data endpoints.

Getting started

Authentication

Every request requires an API key. Pass it via header or query parameter:

bash
x-api-key: YOUR_API_KEY
# or
Authorization: Bearer YOUR_API_KEY
# or (MCP only)
?key=YOUR_API_KEY

Verify your email, then create an API key from the dashboard. Free accounts get 500 credits.

Base URL

text
https://football-mcp-production.up.railway.app

REST APIPOST /v1/{tool} with JSON body. Works with cURL, Python, any HTTP client.

MCPPOST /mcp via Streamable HTTP. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.

Rate limits

Credit balanceRate limit
100 credits or more60 req/min
Under 100 credits10 req/min

The limit is the same on every plan. It is burst protection, not the spend boundary; credits are that, and they are enforced per request. Running low slows you down so you notice before the balance reaches zero.

Error handling

CodeMeaningWhat to do
400Invalid parametersCheck required fields and value types
401Invalid or missing API keyCheck your x-api-key header
402Insufficient creditsTop up your wallet or upgrade your plan
429Rate limit exceededWait and retry (see limits above)
500Server errorRetry with idempotency key. Credits auto-refund on server errors.

Pass x-idempotency-key or x-request-id headers to make retries duplicate-safe.

Data coverage

DataStatusCoverageVolume
Games and schedules
Scores, kickoff (UTC), venue, surface, weather, rest days, starting QBs, coaches, referee, and the consensus closing spread, total, and moneylines.
Available1999 to current7,500+ games
Standings
Computed from final scores: record, points, home/away/division/conference splits, streak, division rank, and conference playoff seed.
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.
Available1999 to current32 rows per season
Weekly player stats
150 nflverse columns per player-week: passing, rushing, receiving, defense, kicking, punting, returns, fantasy points.
Available1999 to current470,000+ stat lines
Weekly team stats
The same stat set aggregated per team and game, plus EPA and success.
Available1999 to current14,000+ team-weeks
Play-by-play
160 nflfastR columns per play: situation, result, EPA, WPA, win probability, CPOE, xPass, players involved, drive context.
Available1999 to current1,200,000+ plays
Injury reports
Official weekly report: game status and practice participation with the injury named.
Available2009 to current5,000+ rows per season
Depth charts
Weekly depth chart per team, formation, position, and rank.
2025 onwards is a daily source; the last snapshot before each week's kickoff is kept.
Available2001 to current32,000+ rows per season
Snap counts
Offensive, defensive, and special-teams snaps and shares per player per game.
Keyed by PFR player id.
Available2012 to current23,000+ rows per season
Odds and line movement
Moneyline, spread, and total per bookmaker with opening, closing, and hourly history.
Per-bookmaker history begins with the 2026 season.
PartialConsensus closing lines 1999 to current; per-book snapshots from 2026Hourly snapshots in-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 rows key on GSIS player id, PFR rows on PFR id; week 0 on an NGS row is that season's aggregate.
AvailableNGS 2016 to current, PFR 2018 to current149,000+ player-weeks
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.
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.
Available2022 to current187,000+ charted plays

Coverage describes the datasets EndzoneAPI supports. Freshness and operational health are tracked separately.

Odds snapshot definitions

opening — Game-day morning lines, captured at ~12:00 UTC (~7-8am ET). Represents the odds available on the morning of the game.

closing — Final pre-game lines, captured at ~23:00 UTC. For evening games, this is the last available line before or shortly after puck drop.

Odds coverage currently documents DraftKings, FanDuel, BetMGM, Caesars, ESPN BET. Per-bookmaker snapshots start with the 2026 season; earlier games carry the consensus closing line only. Games before the 2019-20 season return no odds data.

Response format

REST API

All successful REST responses wrap the result in a data key:

json
{ "data": { "teams": [...], "count": 32 } }

Error responses return:

json
{ "error": "Insufficient credits", "message": "This tool costs 5 credits, you have 2" }

MCP Protocol

MCP responses follow the standard MCP tool result format. The data is returned directly (no data wrapper). Both access methods return identical data, just different envelopes.

Conventions

Seasons4-digit season year, the year the regular season starts (2025 for the 2025-26 season). Example: 2025.

Game IDsseason_week_away_home, e.g. 2025_01_KC_BUF (season_week_away_home). Get them from get_games or get_schedule.

Team abbreviations — Standard codes (KC, BUF, PHI, SF). Use list_teams if unsure.

Pagination — Endpoints use a limit parameter. No cursor or offset. Narrow your filters to get different slices of data.

Credits — Deducted before the request executes. Automatically refunded on server errors. Monthly credits are used first, then wallet balance.

Setup

Claude Desktop

Add to your claude_desktop_config.json:

json
{
  "mcpServers": {
    "endzoneapi": {
      "url": "https://football-mcp-production.up.railway.app/mcp?key=YOUR_API_KEY"
    }
  }
}

Claude Code

One command:

bash
claude mcp add endzoneapi https://football-mcp-production.up.railway.app/mcp?key=YOUR_API_KEY --transport streamable-http

REST / cURL

POST to /v1/{tool_name} with your params as JSON body. No MCP client needed:

bash
curl -X POST https://football-mcp-production.up.railway.app/v1/list_teams \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY"

With parameters:

bash
curl -X POST https://football-mcp-production.up.railway.app/v1/get_standings \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"season": "20242025"}'

Which endpoint should I use?

Start from what you want to do, not the API path.

Endpoint reference

17 endpoints grouped by credit cost. Each includes parameters, example requests in three formats, and documented response fields.

Static reference

1 credit/call
POST

list_teams

1 credit

All 32 teams with conference, division, colours, and logos

When to use: You need team codes for other endpoints, or conference/division groupings, colours and logo URLs for a UI.

Parameters
NameTypeRequiredDescription
conferenceenum: AFC | NFCoptionalFilter by conference
divisionstringoptionalFilter by division, e.g. 'AFC East' or 'NFC West'
Example request
{
  "tool": "list_teams",
  "arguments": {
    "division": "AFC West"
  }
}
Example response
json
{
  "teams": [
    {
      "abbrev": "DEN",
      "name": "Denver Broncos",
      "nick": "Broncos",
      "conference": "AFC",
      "division": "AFC West",
      "color": "#002244",
      "color2": "#FB4F14",
      "logo": "https://a.espncdn.com/i/teamlogos/nfl/500/den.png",
      "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/DEN.png"
    },
    {
      "abbrev": "KC",
      "name": "Kansas City Chiefs",
      "nick": "Chiefs",
      "conference": "AFC",
      "division": "AFC West",
      "color": "#E31837",
      "color2": "#FFB612",
      "logo": "https://a.espncdn.com/i/teamlogos/nfl/500/kc.png",
      "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/KC.png"
    },
    {
      "abbrev": "LV",
      "name": "Las Vegas Raiders",
      "nick": "Raiders",
      "conference": "AFC",
      "division": "AFC West",
      "color": "#000000",
      "color2": "#A5ACAF",
      "logo": "https://a.espncdn.com/i/teamlogos/nfl/500/lv.png",
      "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/LV.png"
    }
  ],
  "count": 4
}
Response fields
FieldTypeDescription
teams[]arrayList of objects
teams[].abbrevstring
teams[].namestring
teams[].nickstring
teams[].conferencestring
teams[].divisionstring
teams[].colorstring
teams[].color2string
teams[].logostring
teams[].wordmarkstring
countnumber

Basic lookup

2 credits/call
POST

get_standings

2 credits

Standings and playoff seeding by the NFL tiebreaking procedure, with the step that decided each rank

When to use: You want records, points for/against, streaks, and division or conference rank for a season. Computed from final scores, so it is current the moment a game goes final.

Parameters
NameTypeRequiredDescription
seasonstring | numberoptionalSeason year the regular season starts (e.g. 2025). Defaults to current.
conferenceenum: AFC | NFCoptionalFilter by conference
divisionstringoptionalFilter by division, e.g. 'NFC North'
Example request
{
  "tool": "get_standings",
  "arguments": {
    "season": 2025,
    "division": "AFC West"
  }
}
Example response
json
{
  "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",
      "division_record": "5-1",
      "conference_record": "9-3",
      "streak": "W2",
      "updated_at": "2026-09-17T23:13:47.596Z"
    },
    {
      "team": "LAC",
      "name": "Los Angeles Chargers",
      "conference": "AFC",
      "division": "AFC West",
      "division_rank": 2,
      "conference_rank": 7,
      "division_tiebreaker": "record",
      "conference_tiebreaker": "record",
      "wins": 11,
      "losses": 6,
      "ties": 0,
      "win_pct": 0.64705884,
      "games_played": 17,
      "points_for": 368,
      "points_against": 340,
      "point_diff": 28,
      "home": "6-3",
      "away": "5-3",
      "division_record": "5-1",
      "conference_record": "8-4",
      "streak": "L2",
      "updated_at": "2026-09-17T23:13:47.596Z"
    },
    {
      "team": "KC",
      "name": "Kansas City Chiefs",
      "conference": "AFC",
      "division": "AFC West",
      "division_rank": 3,
      "conference_rank": 12,
      "division_tiebreaker": "record",
      "conference_tiebreaker": "record",
      "wins": 6,
      "losses": 11,
      "ties": 0,
      "win_pct": 0.3529412,
      "games_played": 17,
      "points_for": 362,
      "points_against": 328,
      "point_diff": 34,
      "home": "5-4",
      "away": "1-7",
      "division_record": "1-5",
      "conference_record": "3-9",
      "streak": "L6",
      "updated_at": "2026-09-17T23:13:47.596Z"
    }
  ],
  "count": 4,
  "note": "Ranks apply the NFL tiebreaking procedure: head-to-head, division record, common games, conference record, strength of victory, strength of schedule, the points rankings, then net points. conference_rank is the playoff seed, so the four division winners hold seeds 1-4 regardless of record. division_tiebreaker and conference_tiebreaker name the step that decided each position, or 'record' when the club was never tied. The published ladder's last two steps, net touchdowns and a coin toss, are not applied; anything still tied after net points is ordered by team code."
}
Response fields
FieldTypeDescription
seasonnumber
standings[]arrayList of objects
standings[].teamstring
standings[].namestring
standings[].conferencestring
standings[].divisionstring
standings[].division_ranknumber
standings[].conference_ranknumber
standings[].division_tiebreakerstring
standings[].conference_tiebreakerstring
standings[].winsnumber
standings[].lossesnumber
standings[].tiesnumber
standings[].win_pctnumber
standings[].games_playednumber
standings[].points_fornumber
standings[].points_againstnumber
standings[].point_diffnumber
standings[].homestring
standings[].awaystring
standings[].division_recordstring
standings[].conference_recordstring
standings[].streakstring
standings[].updated_atstring
countnumber
notestring
POST

get_schedule

2 credits

Upcoming games by week or for the next N days

When to use: You want what is coming up this week, with kickoff times in UTC and posted lines.

Parameters
NameTypeRequiredDescription
teamstringoptionalTeam code to filter
weekintegeroptionalA specific week of the current season (returns all games that week, played or not)
daysintegeroptionalDays ahead to look when week is not set (default 7)
Example request
{
  "tool": "get_schedule",
  "arguments": {
    "team": "BUF",
    "days": 7
  }
}
Example response
json
{
  "season": 2026,
  "week": null,
  "days": 7,
  "upcoming_games": [
    {
      "game_id": "2026_02_DET_BUF",
      "season": 2026,
      "game_type": "REG",
      "week": 2,
      "gameday": "2026-09-17",
      "weekday": "Thursday",
      "kickoff": "2026-09-18T00:15:00.000Z",
      "away_team": "DET",
      "home_team": "BUF",
      "away_score": null,
      "home_score": null,
      "result": null,
      "total": null,
      "overtime": null,
      "status": "FUT",
      "location": "Home",
      "stadium": "Highmark Stadium",
      "roof": "outdoors",
      "surface": "a_turf",
      "temp": null,
      "wind": null,
      "div_game": false,
      "away_rest": 4,
      "home_rest": 4,
      "spread_line": 5.5,
      "total_line": 54.5,
      "away_moneyline": 200,
      "home_moneyline": -245,
      "away_qb_name": "Jared Goff",
      "home_qb_name": "Josh Allen",
      "away_qb_id": "00-0033106",
      "home_qb_id": "00-0034857",
      "away_coach": "Dan Campbell",
      "home_coach": "Sean McDermott",
      "referee": null,
      "espn_id": "401872932",
      "pfr_id": "202609170buf"
    }
  ],
  "count": 1
}
Response fields
FieldTypeDescription
seasonnumber
weeknull
daysnumber
upcoming_games[]arrayList of objects
upcoming_games[].game_idstring
upcoming_games[].seasonnumber
upcoming_games[].game_typestring
upcoming_games[].weeknumber
upcoming_games[].gamedaystring
upcoming_games[].weekdaystring
upcoming_games[].kickoffstring
upcoming_games[].away_teamstring
upcoming_games[].home_teamstring
upcoming_games[].away_scorenull
upcoming_games[].home_scorenull
upcoming_games[].resultnull
upcoming_games[].totalnull
upcoming_games[].overtimenull
upcoming_games[].statusstring
upcoming_games[].locationstring
upcoming_games[].stadiumstring
upcoming_games[].roofstring
upcoming_games[].surfacestring
upcoming_games[].tempnull
upcoming_games[].windnull
upcoming_games[].div_gameboolean
upcoming_games[].away_restnumber
upcoming_games[].home_restnumber
upcoming_games[].spread_linenumber
upcoming_games[].total_linenumber
upcoming_games[].away_moneylinenumber
upcoming_games[].home_moneylinenumber
upcoming_games[].away_qb_namestring
upcoming_games[].home_qb_namestring
upcoming_games[].away_qb_idstring
upcoming_games[].home_qb_idstring
upcoming_games[].away_coachstring
upcoming_games[].home_coachstring
upcoming_games[].refereenull
upcoming_games[].espn_idstring
POST

search_players

2 credits

Find players by name, team, or position

When to use: You have a name and need the GSIS id (and PFR/ESPN ids) to call the stat endpoints.

Parameters
NameTypeRequiredDescription
querystringrequiredPlayer name or part of it
teamstringoptionalFilter by current team code
positionstringoptionalFilter by position (e.g. QB, RB, WR, TE, OL, DL, LB, DB)
activebooleanoptionalDefault true, but an active-only search that finds nobody automatically falls back to all players and says so. Set false to search everyone outright.
limitintegeroptionalMax results (default 10)
Example request
{
  "tool": "search_players",
  "arguments": {
    "query": "Mahomes"
  }
}
Example response
json
{
  "players": [
    {
      "player_id": "00-0033873",
      "name": "Patrick Mahomes",
      "position": "QB",
      "position_group": "QB",
      "team": "KC",
      "jersey_number": "15",
      "status": "ACT",
      "active": true,
      "rookie_season": 2017,
      "last_season": 2026,
      "college": "Texas Tech",
      "headshot": "https://static.www.nfl.com/image/upload/f_auto,q_auto/league/wdckwtob1lybvkmxnf7p",
      "pfr_id": "MahoPa00",
      "espn_id": "3139477"
    }
  ],
  "count": 1,
  "included_inactive": false
}
Response fields
FieldTypeDescription
players[]arrayList of objects
players[].player_idstring
players[].namestring
players[].positionstring
players[].position_groupstring
players[].teamstring
players[].jersey_numberstring
players[].statusstring
players[].activeboolean
players[].rookie_seasonnumber
players[].last_seasonnumber
players[].collegestring
players[].headshotstring
players[].pfr_idstring
players[].espn_idstring
countnumber
included_inactiveboolean
POST

get_injuries

2 credits

Injury report by team and week with practice and game status

When to use: You need the official injury report before a slate: game status and practice participation by team and week.

Parameters
NameTypeRequiredDescription
teamstringoptionalTeam code
seasonstring | numberoptionalSeason year. Defaults to current.
weekintegeroptionalWeek. Defaults to the latest week with a report.
statusstringoptionalFilter by game status: Out, Doubtful, Questionable
Example request
{
  "tool": "get_injuries",
  "arguments": {
    "team": "KC",
    "season": 2025,
    "week": 9
  }
}
Example response
json
{
  "season": 2025,
  "week": 9,
  "injuries": [
    {
      "team": "KC",
      "player_id": "00-0037197",
      "name": "Isiah Pacheco",
      "position": "RB",
      "report_status": "Out",
      "report_primary_injury": "Knee",
      "report_secondary_injury": null,
      "practice_status": "Did Not Participate In Practice",
      "practice_primary_injury": "Knee",
      "game_type": "REG"
    },
    {
      "team": "KC",
      "player_id": "00-0040116",
      "name": "Josh Simmons",
      "position": "T",
      "report_status": "Out",
      "report_primary_injury": "Not injury related - personal matter",
      "report_secondary_injury": null,
      "practice_status": "Did Not Participate In Practice",
      "practice_primary_injury": "Not injury related - personal matter",
      "game_type": "REG"
    },
    {
      "team": "KC",
      "player_id": "00-0036557",
      "name": "Jaylon Moore",
      "position": "T",
      "report_status": "Questionable",
      "report_primary_injury": "Illness",
      "report_secondary_injury": null,
      "practice_status": "Did Not Participate In Practice",
      "practice_primary_injury": "Illness",
      "game_type": "REG"
    }
  ],
  "count": 10
}
Response fields
FieldTypeDescription
seasonnumber
weeknumber
injuries[]arrayList of objects
injuries[].teamstring
injuries[].player_idstring
injuries[].namestring
injuries[].positionstring
injuries[].report_statusstring
injuries[].report_primary_injurystring
injuries[].report_secondary_injurynull
injuries[].practice_statusstring
injuries[].practice_primary_injurystring
injuries[].game_typestring
countnumber
POST

get_depth_chart

2 credits

Team depth chart by week

When to use: You need who starts where: formation, position, and depth rank for a team and week.

Parameters
NameTypeRequiredDescription
teamstringrequiredTeam code
seasonstring | numberoptionalSeason year. Defaults to current.
weekintegeroptionalWeek. Defaults to latest.
formationstringoptionalFilter by formation/unit, e.g. Offense, Defense, Special Teams
Example request
{
  "tool": "get_depth_chart",
  "arguments": {
    "team": "KC",
    "season": 2025,
    "week": 9,
    "formation": "Offense"
  }
}
Example response
json
{
  "team": "KC",
  "season": 2025,
  "week": 9,
  "depth_chart": [],
  "count": 0
}
Response fields
FieldTypeDescription
teamstring
seasonnumber
weeknumber
depth_chart[]arrayList
countnumber

Stats + aggregation

5 credits/call
POST

get_team_stats

5 credits

Team totals and per-week lines with EPA, success rate, and situational splits

When to use: You are profiling one team: season totals across every phase, EPA per play, and the weekly lines to chart trends.

Parameters
NameTypeRequiredDescription
teamstringrequiredTeam code (e.g. KC, BUF, PHI)
seasonstring | numberoptionalSeason year (e.g. 2025). Defaults to current.
season_typeenum: REG | POSToptionalRegular season (default) or postseason
Example request
{
  "tool": "get_team_stats",
  "arguments": {
    "team": "KC",
    "season": 2025
  }
}
Example response
json
{
  "team": {
    "abbrev": "KC",
    "name": "Kansas City Chiefs",
    "nick": "Chiefs",
    "conference": "AFC",
    "division": "AFC West",
    "teamId": "2310",
    "color": "#E31837",
    "color2": "#FFB612",
    "color3": "#000000",
    "color4": "#e31837",
    "logoEspn": "https://a.espncdn.com/i/teamlogos/nfl/500/kc.png",
    "logoWikipedia": "https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Kansas_City_Chiefs_logo.svg/100px-Kansas_City_Chiefs_logo.svg.png",
    "logoSquared": "https://github.com/nflverse/nflverse-pbp/raw/master/squared_logos/KC.png",
    "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/KC.png",
    "active": true,
    "relocatedTo": null
  },
  "season": 2025,
  "season_type": "REG",
  "record": {
    "season": 2025,
    "team": "KC",
    "wins": 6,
    "losses": 11,
    "ties": 0,
    "winPct": 0.3529412,
    "pointsFor": 362,
    "pointsAgainst": 328,
    "pointDiff": 34,
    "homeWins": 5,
    "homeLosses": 4,
    "homeTies": 0,
    "awayWins": 1,
    "awayLosses": 7,
    "awayTies": 0,
    "divWins": 1,
    "divLosses": 5,
    "divTies": 0,
    "confWins": 3,
    "confLosses": 9,
    "confTies": 0,
    "streak": "L6",
    "gamesPlayed": 17,
    "divisionRank": 3,
    "conferenceRank": 12,
    "divisionTiebreaker": "record",
    "conferenceTiebreaker": "record",
    "updatedAt": "2026-09-17T23:13:47.596Z"
  },
  "totals": {
    "games": 17,
    "completions": 363,
    "attempts": 584,
    "passing_yards": 3947,
    "passing_tds": 23,
    "passing_interceptions": 12,
    "sacks_suffered": 47,
    "sack_yards_lost": -308,
    "passing_air_yards": 4533,
    "passing_yards_after_catch": 2110,
    "passing_first_downs": 189,
    "passing_epa": 24.884,
    "carries": 430,
    "rushing_yards": 1812,
    "rushing_tds": 15,
    "rushing_fumbles_lost": 2,
    "rushing_first_downs": 122,
    "rushing_epa": 8.47,
    "receptions": 363,
    "targets": 549,
    "receiving_yards": 3947,
    "receiving_tds": 23,
    "receiving_epa": 109.251,
    "def_tackles_solo": 608,
    "def_tackles_with_assist": 18,
    "def_tackles_for_loss": 74,
    "def_fumbles_forced": 8,
    "def_sacks": 33,
    "def_qb_hits": 103,
    "def_interceptions": 10,
    "def_pass_defended": 60,
    "def_tds": 0,
    "penalties": 119,
    "penalty_yards": 951,
    "fumbles_total": 17,
    "fumbles_lost_total": 3,
    "fg_made": 33,
    "fg_att": 38,
    "pat_made": 31,
    "pat_att": 35,
    "punt_returns": 32,
    "punt_return_yards": 259,
    "kickoff_returns": 66,
    "kickoff_return_yards": 1727,
    "passing_epa_per_play": 0.039,
    "rushing_epa_per_play": 0.02,
    "yards_per_attempt": 6.76,
    "yards_per_carry": 4.21
  },
  "weeks": [
    {
      "season": 2025,
      "week": 1,
      "team": "KC",
      "seasonType": "REG",
      "gameId": "2025_01_KC_LAC",
      "opponentTeam": "LAC",
      "completions": 24,
      "attempts": 39,
      "passingYards": 258,
      "passingTds": 1,
      "passingInterceptions": 0,
      "sacksSuffered": 2,
      "sackYardsLost": -9,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 271,
      "passingYardsAfterCatch": 116,
      "passingFirstDowns": 9,
      "passingEpa": 3.4485526,
      "passingCpoe": -5.9927764,
      "passing2ptConversions": 0,
      "passing10": 9,
      "passing16": 4,
      "passing20": 3,
      "passing40": 1,
      "carries": 17,
      "rushingYards": 98,
      "rushingTds": 1,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 8,
      "rushingEpa": 8.906441,
      "rushing2ptConversions": 0,
      "rushing10": 5,
      "rushing12": 1,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 24,
      "targets": 38,
      "receivingYards": 258,
      "receivingTds": 1,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 271,
      "receivingYardsAfterCatch": 116,
      "receivingFirstDowns": 9,
      "receivingEpa": 5.5701094,
      "receiving2ptConversions": 0,
      "receiving10": 9,
      "receiving16": 4,
      "receiving20": 3,
      "receiving40": 1,
      "specialTeamsTds": 0,
      "defTacklesSolo": 40,
      "defTacklesWithAssist": 2,
      "defTackleAssists": 18,
      "defTacklesForLoss": 6,
      "defTacklesForLossYards": 17,
      "defFumblesForced": 1,
      "defSacks": 3,
      "defSackYards": 14,
      "defQbHits": 4,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 2,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 1,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 10,
      "penaltyYards": 71,
      "fumblesForcedByOpp": 0,
      "fumblesNotForced": 1,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 1,
      "fumblesLostTotal": 0,
      "puntReturns": 2,
      "puntReturnYards": 7,
      "kickoffReturns": 5,
      "kickoffReturnYards": 147,
      "fgMade": 3,
      "fgAtt": 3,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": 59,
      "fgPct": 1,
      "fgMade019": 0,
      "fgMade2029": 1,
      "fgMade3039": 1,
      "fgMade4049": 0,
      "fgMade5059": 1,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": "35;59;27",
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 121,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 0,
      "patAtt": 1,
      "patMissed": 1,
      "patBlocked": 0,
      "patPct": 0,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 3,
      "ptBlocked": 0,
      "ptLong": 40,
      "ptYards": 116,
      "ptInside20": 1,
      "ptOutOfBounds": 1,
      "ptDowned": 1,
      "ptTouchback": 0,
      "ptFairCaught": 1,
      "ptReturned": 0,
      "ptReturnYards": 0,
      "ptReturnTds": 0,
      "ptNetYards": 116,
      "timeouts": 6
    },
    {
      "season": 2025,
      "week": 2,
      "team": "KC",
      "seasonType": "REG",
      "gameId": "2025_02_PHI_KC",
      "opponentTeam": "PHI",
      "completions": 16,
      "attempts": 29,
      "passingYards": 187,
      "passingTds": 1,
      "passingInterceptions": 1,
      "sacksSuffered": 2,
      "sackYardsLost": -14,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 309,
      "passingYardsAfterCatch": 68,
      "passingFirstDowns": 7,
      "passingEpa": -7.1535654,
      "passingCpoe": -5.841068,
      "passing2ptConversions": 0,
      "passing10": 8,
      "passing16": 5,
      "passing20": 3,
      "passing40": 1,
      "carries": 26,
      "rushingYards": 121,
      "rushingTds": 1,
      "rushingFumbles": 1,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 9,
      "rushingEpa": -0.5581932,
      "rushing2ptConversions": 0,
      "rushing10": 4,
      "rushing12": 2,
      "rushing20": 1,
      "rushing40": 0,
      "receptions": 16,
      "targets": 29,
      "receivingYards": 187,
      "receivingTds": 1,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 309,
      "receivingYardsAfterCatch": 68,
      "receivingFirstDowns": 7,
      "receivingEpa": -3.5375352,
      "receiving2ptConversions": 0,
      "receiving10": 8,
      "receiving16": 5,
      "receiving20": 3,
      "receiving40": 1,
      "specialTeamsTds": 0,
      "defTacklesSolo": 37,
      "defTacklesWithAssist": 0,
      "defTackleAssists": 30,
      "defTacklesForLoss": 5,
      "defTacklesForLossYards": 11,
      "defFumblesForced": 0,
      "defSacks": 1,
      "defSackYards": 4,
      "defQbHits": 3,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 4,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 1,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 6,
      "penaltyYards": 45,
      "fumblesForcedByOpp": 1,
      "fumblesNotForced": 0,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 1,
      "fumblesLostTotal": 0,
      "puntReturns": 2,
      "puntReturnYards": 42,
      "kickoffReturns": 4,
      "kickoffReturnYards": 95,
      "fgMade": 1,
      "fgAtt": 2,
      "fgMissed": 1,
      "fgBlocked": 0,
      "fgLong": 56,
      "fgPct": 0.5,
      "fgMade019": 0,
      "fgMade2029": 0,
      "fgMade3039": 0,
      "fgMade4049": 0,
      "fgMade5059": 1,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 1,
      "fgMissed60": 0,
      "fgMadeList": "56",
      "fgMissedList": "58",
      "fgBlockedList": null,
      "fgMadeDistance": 56,
      "fgMissedDistance": 58,
      "fgBlockedDistance": 0,
      "patMade": 2,
      "patAtt": 2,
      "patMissed": 0,
      "patBlocked": 0,
      "patPct": 1,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 3,
      "ptBlocked": 0,
      "ptLong": 69,
      "ptYards": 178,
      "ptInside20": 2,
      "ptOutOfBounds": 0,
      "ptDowned": 0,
      "ptTouchback": 0,
      "ptFairCaught": 2,
      "ptReturned": 1,
      "ptReturnYards": 14,
      "ptReturnTds": 0,
      "ptNetYards": 164,
      "timeouts": 4
    },
    {
      "season": 2025,
      "week": 3,
      "team": "KC",
      "seasonType": "REG",
      "gameId": "2025_03_KC_NYG",
      "opponentTeam": "NYG",
      "completions": 22,
      "attempts": 37,
      "passingYards": 224,
      "passingTds": 1,
      "passingInterceptions": 0,
      "sacksSuffered": 2,
      "sackYardsLost": -23,
      "sackFumbles": 2,
      "sackFumblesLost": 0,
      "passingAirYards": 319,
      "passingYardsAfterCatch": 112,
      "passingFirstDowns": 13,
      "passingEpa": 8.230807,
      "passingCpoe": -1.4937389,
      "passing2ptConversions": 0,
      "passing10": 10,
      "passing16": 5,
      "passing20": 3,
      "passing40": 0,
      "carries": 28,
      "rushingYards": 105,
      "rushingTds": 1,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 6,
      "rushingEpa": 0.2622928,
      "rushing2ptConversions": 0,
      "rushing10": 2,
      "rushing12": 0,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 22,
      "targets": 35,
      "receivingYards": 224,
      "receivingTds": 1,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 319,
      "receivingYardsAfterCatch": 112,
      "receivingFirstDowns": 13,
      "receivingEpa": 10.824478,
      "receiving2ptConversions": 0,
      "receiving10": 10,
      "receiving16": 5,
      "receiving20": 3,
      "receiving40": 0,
      "specialTeamsTds": 0,
      "defTacklesSolo": 34,
      "defTacklesWithAssist": 3,
      "defTackleAssists": 35,
      "defTacklesForLoss": 6,
      "defTacklesForLossYards": 14,
      "defFumblesForced": 0,
      "defSacks": 2,
      "defSackYards": 9,
      "defQbHits": 9,
      "defInterceptions": 2,
      "defInterceptionYards": 23,
      "defPassDefended": 6,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 1,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 2,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 8,
      "penaltyYards": 85,
      "fumblesForcedByOpp": 1,
      "fumblesNotForced": 1,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 2,
      "fumblesLostTotal": 0,
      "puntReturns": 1,
      "puntReturnYards": 4,
      "kickoffReturns": 3,
      "kickoffReturnYards": 63,
      "fgMade": 3,
      "fgAtt": 4,
      "fgMissed": 1,
      "fgBlocked": 0,
      "fgLong": 54,
      "fgPct": 0.75,
      "fgMade019": 0,
      "fgMade2029": 1,
      "fgMade3039": 0,
      "fgMade4049": 1,
      "fgMade5059": 1,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 1,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": "54;48;28",
      "fgMissedList": "40",
      "fgBlockedList": null,
      "fgMadeDistance": 130,
      "fgMissedDistance": 40,
      "fgBlockedDistance": 0,
      "patMade": 1,
      "patAtt": 2,
      "patMissed": 1,
      "patBlocked": 0,
      "patPct": 0.5,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 3,
      "ptBlocked": 0,
      "ptLong": 53,
      "ptYards": 139,
      "ptInside20": 0,
      "ptOutOfBounds": 0,
      "ptDowned": 1,
      "ptTouchback": 0,
      "ptFairCaught": 0,
      "ptReturned": 2,
      "ptReturnYards": 17,
      "ptReturnTds": 0,
      "ptNetYards": 122,
      "timeouts": 3
    }
  ],
  "count": 17
}
Response fields
FieldTypeDescription
teamobject
team.abbrevstring
team.namestring
team.nickstring
team.conferencestring
team.divisionstring
team.teamIdstring
team.colorstring
team.color2string
team.color3string
team.color4string
team.logoEspnstring
team.logoWikipediastring
team.logoSquaredstring
team.wordmarkstring
team.activeboolean
team.relocatedTonull
seasonnumber
season_typestring
recordobject
record.seasonnumber
record.teamstring
record.winsnumber
record.lossesnumber
record.tiesnumber
record.winPctnumber
record.pointsFornumber
record.pointsAgainstnumber
record.pointDiffnumber
record.homeWinsnumber
record.homeLossesnumber
record.homeTiesnumber
record.awayWinsnumber
record.awayLossesnumber
record.awayTiesnumber
record.divWinsnumber
record.divLossesnumber
record.divTiesnumber
record.confWinsnumber
record.confLossesnumber
POST

get_games

5 credits

Query games by season, week, team, date, type, or status, with closing lines

When to use: You need games with scores and closing lines for a season, week, team, or date range. The consensus closing spread and total are on every game since 1999, which makes this the backtest table.

Parameters
NameTypeRequiredDescription
seasonstring | numberoptionalSeason year (e.g. 2025)
weekintegeroptionalWeek number (1-18 regular season; 19+ postseason)
teamstringoptionalTeam code (home or away)
date_fromstringoptionalStart date YYYY-MM-DD
date_tostringoptionalEnd date YYYY-MM-DD
game_typeenum: REG | WC | DIV | CON | SB | POSToptionalREG, WC, DIV, CON, SB, or POST for any playoff game
statusenum: FUT | LIVE | FINALoptionalGame status
limitintegeroptionalMax results (default 100)
Example request
{
  "tool": "get_games",
  "arguments": {
    "season": 2025,
    "week": 1,
    "team": "KC"
  }
}
Example response
json
{
  "games": [
    {
      "game_id": "2025_01_KC_LAC",
      "season": 2025,
      "game_type": "REG",
      "week": 1,
      "gameday": "2025-09-05",
      "weekday": "Friday",
      "kickoff": "2025-09-06T00:00:00.000Z",
      "away_team": "KC",
      "home_team": "LAC",
      "away_score": 21,
      "home_score": 27,
      "result": 6,
      "total": 48,
      "overtime": 0,
      "status": "FINAL",
      "location": "Neutral",
      "stadium": "SoFi Stadium",
      "roof": "dome",
      "surface": null,
      "temp": null,
      "wind": null,
      "div_game": true,
      "away_rest": 7,
      "home_rest": 7,
      "spread_line": -3,
      "total_line": 47.5,
      "away_moneyline": -175,
      "home_moneyline": 145,
      "away_qb_name": "Patrick Mahomes",
      "home_qb_name": "Justin Herbert",
      "away_qb_id": "00-0033873",
      "home_qb_id": "00-0036355",
      "away_coach": "Andy Reid",
      "home_coach": "Jim Harbaugh",
      "referee": "Carl Cheffers",
      "espn_id": "401772714",
      "pfr_id": "202509050sdg"
    }
  ],
  "count": 1,
  "filters": {
    "season": 2025,
    "week": 1,
    "team": "KC"
  }
}
Response fields
FieldTypeDescription
games[]arrayList of objects
games[].game_idstring
games[].seasonnumber
games[].game_typestring
games[].weeknumber
games[].gamedaystring
games[].weekdaystring
games[].kickoffstring
games[].away_teamstring
games[].home_teamstring
games[].away_scorenumber
games[].home_scorenumber
games[].resultnumber
games[].totalnumber
games[].overtimenumber
games[].statusstring
games[].locationstring
games[].stadiumstring
games[].roofstring
games[].surfacenull
games[].tempnull
games[].windnull
games[].div_gameboolean
games[].away_restnumber
games[].home_restnumber
games[].spread_linenumber
games[].total_linenumber
games[].away_moneylinenumber
games[].home_moneylinenumber
games[].away_qb_namestring
games[].home_qb_namestring
games[].away_qb_idstring
games[].home_qb_idstring
games[].away_coachstring
games[].home_coachstring
games[].refereestring
games[].espn_idstring
games[].pfr_idstring
countnumber
filtersobject
POST

get_player_stats

5 credits

Weekly and season stat lines for one player: passing, rushing, receiving, defense, kicking, fantasy

When to use: You are building a player page or projection input: bio, season totals, and every weekly line in one call.

Parameters
NameTypeRequiredDescription
player_idstringrequiredGSIS player id from search_players (e.g. 00-0033873)
seasonstring | numberoptionalSeason year. Defaults to the player's latest season.
season_typeenum: REG | POSToptionalRegular season (default) or postseason
Example request
{
  "tool": "get_player_stats",
  "arguments": {
    "player_id": "00-0033873",
    "season": 2025
  }
}
Example response
json
{
  "player": {
    "gsisId": "00-0033873",
    "displayName": "Patrick Mahomes",
    "firstName": "Patrick",
    "lastName": "Mahomes",
    "footballName": "Patrick",
    "suffix": null,
    "position": "QB",
    "positionGroup": "QB",
    "ngsPosition": "QB",
    "height": 74,
    "weight": 225,
    "birthDate": "1995-09-17",
    "college": "Texas Tech",
    "collegeConference": "Big Twelve Conference",
    "jerseyNumber": "15",
    "rookieSeason": 2017,
    "lastSeason": 2026,
    "latestTeam": "KC",
    "status": "ACT",
    "yearsOfExperience": 10,
    "draftYear": 2017,
    "draftRound": 1,
    "draftPick": 10,
    "draftTeam": "KC",
    "headshot": "https://static.www.nfl.com/image/upload/f_auto,q_auto/league/wdckwtob1lybvkmxnf7p",
    "esbId": "MAH401939",
    "nflId": "44822",
    "pfrId": "MahoPa00",
    "pffId": "11765",
    "otcId": "5594",
    "espnId": "3139477",
    "smartId": "32004d41-4840-1939-e4c1-bb89191b4e71",
    "sleeperId": null,
    "active": true,
    "team_name": "Kansas City Chiefs"
  },
  "season": 2025,
  "season_type": "REG",
  "season_totals": {
    "games": 14,
    "completions": 315,
    "attempts": 502,
    "passing_yards": 3587,
    "passing_tds": 22,
    "passing_interceptions": 11,
    "sacks_suffered": 34,
    "sack_yards_lost": -193,
    "sack_fumbles": 3,
    "passing_air_yards": 4050,
    "passing_yards_after_catch": 1895,
    "passing_first_downs": 173,
    "passing_epa": 68.247,
    "passing_2pt_conversions": 2,
    "passing_10": 146,
    "passing_16": 72,
    "passing_20": 49,
    "passing_40": 8,
    "carries": 64,
    "rushing_yards": 422,
    "rushing_tds": 5,
    "rushing_first_downs": 27,
    "rushing_epa": 29.164,
    "rushing_10": 18,
    "rushing_12": 10,
    "rushing_20": 1,
    "receptions": 1,
    "targets": 1,
    "receiving_yards": -10,
    "receiving_air_yards": -8,
    "receiving_yards_after_catch": -2,
    "receiving_epa": -2.539,
    "def_tackles_solo": 1,
    "fumble_recovery_own": 3,
    "penalties": 3,
    "penalty_yards": 25,
    "fumbles_forced_by_opp": 2,
    "fumbles_not_forced": 1,
    "fumbles_total": 3,
    "fantasy_points": 284.68,
    "fantasy_points_ppr": 285.68
  },
  "weeks": [
    {
      "position": "QB",
      "positionGroup": "QB",
      "season": 2025,
      "week": 1,
      "seasonType": "REG",
      "gameId": "2025_01_KC_LAC",
      "team": "KC",
      "opponentTeam": "LAC",
      "completions": 24,
      "attempts": 39,
      "passingYards": 258,
      "passingTds": 1,
      "passingInterceptions": 0,
      "sacksSuffered": 2,
      "sackYardsLost": -9,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 271,
      "passingYardsAfterCatch": 116,
      "passingFirstDowns": 9,
      "passingEpa": 3.4485526,
      "passingCpoe": -5.9927764,
      "passing2ptConversions": 0,
      "passing10": 9,
      "passing16": 4,
      "passing20": 3,
      "passing40": 1,
      "carries": 6,
      "rushingYards": 57,
      "rushingTds": 1,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 5,
      "rushingEpa": 7.2114673,
      "rushing2ptConversions": 0,
      "rushing10": 4,
      "rushing12": 1,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 0,
      "targets": 0,
      "receivingYards": 0,
      "receivingTds": 0,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 0,
      "receivingYardsAfterCatch": 0,
      "receivingFirstDowns": 0,
      "receivingEpa": null,
      "receiving2ptConversions": 0,
      "receiving10": 0,
      "receiving16": 0,
      "receiving20": 0,
      "receiving40": 0,
      "specialTeamsTds": 0,
      "defTacklesSolo": 0,
      "defTacklesWithAssist": 0,
      "defTackleAssists": 0,
      "defTacklesForLoss": 0,
      "defTacklesForLossYards": 0,
      "defFumblesForced": 0,
      "defSacks": 0,
      "defSackYards": 0,
      "defQbHits": 0,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 0,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 1,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 0,
      "penaltyYards": 0,
      "fumblesForcedByOpp": 0,
      "fumblesNotForced": 0,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 0,
      "fumblesLostTotal": 0,
      "puntReturns": 0,
      "puntReturnYards": 0,
      "kickoffReturns": 0,
      "kickoffReturnYards": 0,
      "fgMade": 0,
      "fgAtt": 0,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": null,
      "fgPct": null,
      "fgMade019": 0,
      "fgMade2029": 0,
      "fgMade3039": 0,
      "fgMade4049": 0,
      "fgMade5059": 0,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": null,
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 0,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 0,
      "patAtt": 0,
      "patMissed": 0,
      "patBlocked": 0,
      "patPct": null,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 0,
      "ptBlocked": 0,
      "ptLong": null,
      "ptYards": 0,
      "ptInside20": 0,
      "ptOutOfBounds": 0,
      "ptDowned": 0,
      "ptTouchback": 0,
      "ptFairCaught": 0,
      "ptReturned": 0,
      "ptReturnYards": 0,
      "ptReturnTds": 0,
      "ptNetYards": 0,
      "pacr": 0.9520295,
      "racr": null,
      "targetShare": 0,
      "airYardsShare": 0,
      "wopr": 0,
      "fantasyPoints": 26.02,
      "fantasyPointsPpr": 26.02
    },
    {
      "position": "QB",
      "positionGroup": "QB",
      "season": 2025,
      "week": 2,
      "seasonType": "REG",
      "gameId": "2025_02_PHI_KC",
      "team": "KC",
      "opponentTeam": "PHI",
      "completions": 16,
      "attempts": 29,
      "passingYards": 187,
      "passingTds": 1,
      "passingInterceptions": 1,
      "sacksSuffered": 2,
      "sackYardsLost": -14,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 309,
      "passingYardsAfterCatch": 68,
      "passingFirstDowns": 7,
      "passingEpa": -7.1535654,
      "passingCpoe": -5.841068,
      "passing2ptConversions": 0,
      "passing10": 8,
      "passing16": 5,
      "passing20": 3,
      "passing40": 1,
      "carries": 7,
      "rushingYards": 66,
      "rushingTds": 1,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 5,
      "rushingEpa": 6.408957,
      "rushing2ptConversions": 0,
      "rushing10": 3,
      "rushing12": 2,
      "rushing20": 1,
      "rushing40": 0,
      "receptions": 0,
      "targets": 0,
      "receivingYards": 0,
      "receivingTds": 0,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 0,
      "receivingYardsAfterCatch": 0,
      "receivingFirstDowns": 0,
      "receivingEpa": null,
      "receiving2ptConversions": 0,
      "receiving10": 0,
      "receiving16": 0,
      "receiving20": 0,
      "receiving40": 0,
      "specialTeamsTds": 0,
      "defTacklesSolo": 0,
      "defTacklesWithAssist": 0,
      "defTackleAssists": 0,
      "defTacklesForLoss": 0,
      "defTacklesForLossYards": 0,
      "defFumblesForced": 0,
      "defSacks": 0,
      "defSackYards": 0,
      "defQbHits": 0,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 0,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 0,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 0,
      "penaltyYards": 0,
      "fumblesForcedByOpp": 0,
      "fumblesNotForced": 0,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 0,
      "fumblesLostTotal": 0,
      "puntReturns": 0,
      "puntReturnYards": 0,
      "kickoffReturns": 0,
      "kickoffReturnYards": 0,
      "fgMade": 0,
      "fgAtt": 0,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": null,
      "fgPct": null,
      "fgMade019": 0,
      "fgMade2029": 0,
      "fgMade3039": 0,
      "fgMade4049": 0,
      "fgMade5059": 0,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": null,
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 0,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 0,
      "patAtt": 0,
      "patMissed": 0,
      "patBlocked": 0,
      "patPct": null,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 0,
      "ptBlocked": 0,
      "ptLong": null,
      "ptYards": 0,
      "ptInside20": 0,
      "ptOutOfBounds": 0,
      "ptDowned": 0,
      "ptTouchback": 0,
      "ptFairCaught": 0,
      "ptReturned": 0,
      "ptReturnYards": 0,
      "ptReturnTds": 0,
      "ptNetYards": 0,
      "pacr": 0.605178,
      "racr": null,
      "targetShare": 0,
      "airYardsShare": 0,
      "wopr": 0,
      "fantasyPoints": 22.08,
      "fantasyPointsPpr": 22.08
    },
    {
      "position": "QB",
      "positionGroup": "QB",
      "season": 2025,
      "week": 3,
      "seasonType": "REG",
      "gameId": "2025_03_KC_NYG",
      "team": "KC",
      "opponentTeam": "NYG",
      "completions": 22,
      "attempts": 37,
      "passingYards": 224,
      "passingTds": 1,
      "passingInterceptions": 0,
      "sacksSuffered": 2,
      "sackYardsLost": -23,
      "sackFumbles": 2,
      "sackFumblesLost": 0,
      "passingAirYards": 319,
      "passingYardsAfterCatch": 112,
      "passingFirstDowns": 13,
      "passingEpa": 8.230807,
      "passingCpoe": -1.4937389,
      "passing2ptConversions": 0,
      "passing10": 10,
      "passing16": 5,
      "passing20": 3,
      "passing40": 0,
      "carries": 5,
      "rushingYards": 2,
      "rushingTds": 0,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 0,
      "rushingEpa": -1.5214161,
      "rushing2ptConversions": 0,
      "rushing10": 0,
      "rushing12": 0,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 0,
      "targets": 0,
      "receivingYards": 0,
      "receivingTds": 0,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 0,
      "receivingYardsAfterCatch": 0,
      "receivingFirstDowns": 0,
      "receivingEpa": null,
      "receiving2ptConversions": 0,
      "receiving10": 0,
      "receiving16": 0,
      "receiving20": 0,
      "receiving40": 0,
      "specialTeamsTds": 0,
      "defTacklesSolo": 0,
      "defTacklesWithAssist": 0,
      "defTackleAssists": 0,
      "defTacklesForLoss": 0,
      "defTacklesForLossYards": 0,
      "defFumblesForced": 0,
      "defSacks": 0,
      "defSackYards": 0,
      "defQbHits": 0,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 0,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 1,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 0,
      "penaltyYards": 0,
      "fumblesForcedByOpp": 1,
      "fumblesNotForced": 1,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 2,
      "fumblesLostTotal": 0,
      "puntReturns": 0,
      "puntReturnYards": 0,
      "kickoffReturns": 0,
      "kickoffReturnYards": 0,
      "fgMade": 0,
      "fgAtt": 0,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": null,
      "fgPct": null,
      "fgMade019": 0,
      "fgMade2029": 0,
      "fgMade3039": 0,
      "fgMade4049": 0,
      "fgMade5059": 0,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": null,
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 0,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 0,
      "patAtt": 0,
      "patMissed": 0,
      "patBlocked": 0,
      "patPct": null,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 0,
      "ptBlocked": 0,
      "ptLong": null,
      "ptYards": 0,
      "ptInside20": 0,
      "ptOutOfBounds": 0,
      "ptDowned": 0,
      "ptTouchback": 0,
      "ptFairCaught": 0,
      "ptReturned": 0,
      "ptReturnYards": 0,
      "ptReturnTds": 0,
      "ptNetYards": 0,
      "pacr": 0.70219433,
      "racr": null,
      "targetShare": 0,
      "airYardsShare": 0,
      "wopr": 0,
      "fantasyPoints": 13.16,
      "fantasyPointsPpr": 13.16
    }
  ],
  "seasons": [
    {
      "season": 2026,
      "games": 1,
      "team": "KC"
    },
    {
      "season": 2025,
      "games": 14,
      "team": "KC"
    },
    {
      "season": 2024,
      "games": 16,
      "team": "KC"
    }
  ],
  "count": 14
}
Response fields
FieldTypeDescription
playerobject
player.gsisIdstring
player.displayNamestring
player.firstNamestring
player.lastNamestring
player.footballNamestring
player.suffixnull
player.positionstring
player.positionGroupstring
player.ngsPositionstring
player.heightnumber
player.weightnumber
player.birthDatestring
player.collegestring
player.collegeConferencestring
player.jerseyNumberstring
player.rookieSeasonnumber
player.lastSeasonnumber
player.latestTeamstring
player.statusstring
player.yearsOfExperiencenumber
player.draftYearnumber
player.draftRoundnumber
player.draftPicknumber
player.draftTeamstring
player.headshotstring
player.esbIdstring
player.nflIdstring
player.pfrIdstring
player.pffIdstring
player.otcIdstring
player.espnIdstring
player.smartIdstring
player.sleeperIdnull
player.activeboolean
player.team_namestring
seasonnumber
season_typestring
season_totalsobject
season_totals.gamesnumber
POST

get_player_leaders

5 credits

Leaderboard for any stat, filtered by position, team, and season

When to use: You want a leaderboard on any stat, including EPA and fantasy points, with position and games filters.

Parameters
NameTypeRequiredDescription
statstringrequiredWeekly stat column to rank by (e.g. passing_yards, receiving_epa, def_sacks)
seasonstring | numberoptionalSeason year. Defaults to current.
season_typeenum: REG | POSToptionalRegular season (default) or postseason
positionstringoptionalPosition filter, e.g. QB, RB, WR, TE
teamstringoptionalTeam code filter
min_gamesintegeroptionalMinimum games with a stat line (default 1)
limitintegeroptionalMax results (default 20)
Example request
{
  "tool": "get_player_leaders",
  "arguments": {
    "stat": "passing_epa",
    "season": 2025,
    "position": "QB",
    "limit": 5
  }
}
Example response
json
{
  "stat": "passing_epa",
  "aggregation": "sum",
  "season": 2025,
  "season_type": "REG",
  "leaders": [
    {
      "rank": 1,
      "player_id": "00-0039851",
      "name": "Drake Maye",
      "position": "QB",
      "team": "NE",
      "games": 17,
      "value": 166.215
    },
    {
      "rank": 2,
      "player_id": "00-0026498",
      "name": "Matthew Stafford",
      "position": "QB",
      "team": "LA",
      "games": 17,
      "value": 150.454
    },
    {
      "rank": 3,
      "player_id": "00-0033077",
      "name": "Dak Prescott",
      "position": "QB",
      "team": "DAL",
      "games": 17,
      "value": 114.349
    }
  ],
  "count": 5
}
Response fields
FieldTypeDescription
statstring
aggregationstring
seasonnumber
season_typestring
leaders[]arrayList of objects
leaders[].ranknumber
leaders[].player_idstring
leaders[].namestring
leaders[].positionstring
leaders[].teamstring
leaders[].gamesnumber
leaders[].valuenumber
countnumber
POST

get_snap_counts

5 credits

Offensive, defensive, and special-teams snaps and shares by game or player

When to use: You are measuring playing time or usage: snaps and snap share per game by phase.

Parameters
NameTypeRequiredDescription
game_idstringoptionalGame id, e.g. 2025_01_KC_BUF
player_idstringoptionalPFR player id (from search_players pfr_id)
teamstringoptionalTeam code
seasonstring | numberoptionalSeason year (with team or player)
weekintegeroptionalWeek filter
limitintegeroptionalMax rows (default 200)
Example request
{
  "tool": "get_snap_counts",
  "arguments": {
    "game_id": "2025_01_KC_LAC",
    "limit": 5
  }
}
Example response
json
{
  "filters": {
    "game_id": "2025_01_KC_LAC",
    "player_id": null,
    "team": null,
    "season": null,
    "week": null
  },
  "snap_counts": [
    {
      "game_id": "2025_01_KC_LAC",
      "season": 2025,
      "week": 1,
      "team": "KC",
      "opponent": "LAC",
      "player": "Trey Smith",
      "pfr_player_id": "SmitTr05",
      "position": "G",
      "offense_snaps": 61,
      "offense_pct": 1,
      "defense_snaps": 0,
      "defense_pct": 0,
      "st_snaps": 4,
      "st_pct": 0.16
    },
    {
      "game_id": "2025_01_KC_LAC",
      "season": 2025,
      "week": 1,
      "team": "KC",
      "opponent": "LAC",
      "player": "Creed Humphrey",
      "pfr_player_id": "HumpCr00",
      "position": "C",
      "offense_snaps": 61,
      "offense_pct": 1,
      "defense_snaps": 0,
      "defense_pct": 0,
      "st_snaps": 4,
      "st_pct": 0.16
    },
    {
      "game_id": "2025_01_KC_LAC",
      "season": 2025,
      "week": 1,
      "team": "KC",
      "opponent": "LAC",
      "player": "Patrick Mahomes",
      "pfr_player_id": "MahoPa00",
      "position": "QB",
      "offense_snaps": 61,
      "offense_pct": 1,
      "defense_snaps": 0,
      "defense_pct": 0,
      "st_snaps": 0,
      "st_pct": 0
    }
  ],
  "count": 5,
  "note": "Snap counts are keyed by PFR player id (see pfr_id on search_players)."
}
Response fields
FieldTypeDescription
filtersobject
filters.game_idstring
filters.player_idnull
filters.teamnull
filters.seasonnull
filters.weeknull
snap_counts[]arrayList of objects
snap_counts[].game_idstring
snap_counts[].seasonnumber
snap_counts[].weeknumber
snap_counts[].teamstring
snap_counts[].opponentstring
snap_counts[].playerstring
snap_counts[].pfr_player_idstring
snap_counts[].positionstring
snap_counts[].offense_snapsnumber
snap_counts[].offense_pctnumber
snap_counts[].defense_snapsnumber
snap_counts[].defense_pctnumber
snap_counts[].st_snapsnumber
snap_counts[].st_pctnumber
countnumber
notestring
POST

get_advanced_stats

5 credits

Next Gen Stats tracking metrics and Pro Football Reference advanced stats

When to use: The box score says a receiver had 80 yards; this says how open he was getting and how far downfield the ball travelled. Next Gen Stats for tracking (separation, cushion, time to throw, completion percentage above expectation, rush yards over expected) and Pro Football Reference for charting (pressures, hurries, blitzes, drops, bad throws, missed tackles, coverage allowed).

Parameters
NameTypeRequiredDescription
sourceenum: ngs_passing | ngs_rushing | ngs_receiving | pfr_passing | pfr_rushing | pfr_receiving | pfr_defenserequiredWhich dataset: ngs_passing, ngs_rushing, ngs_receiving, pfr_passing, pfr_rushing, pfr_receiving, pfr_defense
seasonstring | numberoptionalSeason year. Defaults to current. NGS from 2016, PFR from 2018.
weekintegeroptionalWeek. NGS also publishes week 0 as the season aggregate.
player_idstringoptionalGSIS id for an ngs_* source, PFR id for a pfr_* source; both are on search_players
teamstringoptionalTeam code
limitintegeroptionalMax rows (default 50)
Example request
{
  "tool": "get_advanced_stats",
  "arguments": {
    "source": "ngs_passing",
    "season": 2025,
    "week": 1,
    "limit": 3
  }
}
Example response
json
{
  "source": "ngs_passing",
  "season": 2025,
  "player_id_kind": "gsis (see search_players player_id)",
  "metric_keys": [
    "aggressiveness",
    "attempts",
    "avg_air_distance"
  ],
  "stats": [
    {
      "season": 2025,
      "season_type": "REG",
      "week": 1,
      "player_id": "00-0023459",
      "name": "Aaron Rodgers",
      "position": "QB",
      "team": "PIT",
      "metrics": {
        "attempts": 30,
        "pass_yards": 244,
        "completions": 22,
        "interceptions": 0,
        "passer_rating": 136.66666666666666,
        "aggressiveness": 20,
        "pass_touchdowns": 4,
        "avg_air_distance": 17.15366205115652,
        "max_air_distance": 36.97500912778792,
        "avg_time_to_throw": 2.4343999999999997,
        "completion_percentage": 73.33333333333333,
        "avg_intended_air_yards": 4.31,
        "avg_air_yards_to_sticks": -5.034827586206897,
        "avg_completed_air_yards": 2.8531818181818185,
        "avg_air_yards_differential": -1.4568181818181811,
        "max_completed_air_distance": 36.39469329449006,
        "expected_completion_percentage": 68.06099999999999,
        "completion_percentage_above_expectation": 5.272333333333336
      }
    },
    {
      "season": 2025,
      "season_type": "REG",
      "week": 1,
      "player_id": "00-0034855",
      "name": "Baker Mayfield",
      "position": "QB",
      "team": "TB",
      "metrics": {
        "attempts": 32,
        "pass_yards": 167,
        "completions": 17,
        "interceptions": 0,
        "passer_rating": 99.34895833333334,
        "aggressiveness": 18.75,
        "pass_touchdowns": 3,
        "avg_air_distance": 22.25247455358224,
        "max_air_distance": 44.36180564404474,
        "avg_time_to_throw": 2.949468749999999,
        "completion_percentage": 53.125,
        "avg_intended_air_yards": 10.207,
        "avg_air_yards_to_sticks": 2.5403333333333338,
        "avg_completed_air_yards": 7.114705882352942,
        "avg_air_yards_differential": -3.092294117647059,
        "max_completed_air_distance": 38.369322381298325,
        "expected_completion_percentage": 56.45343750000001,
        "completion_percentage_above_expectation": -3.328437500000007
      }
    },
    {
      "season": 2025,
      "season_type": "REG",
      "week": 1,
      "player_id": "00-0039732",
      "name": "Bo Nix",
      "position": "QB",
      "team": "DEN",
      "metrics": {
        "attempts": 40,
        "pass_yards": 176,
        "completions": 25,
        "interceptions": 2,
        "passer_rating": 60,
        "aggressiveness": 10,
        "pass_touchdowns": 1,
        "avg_air_distance": 18.761301472222446,
        "max_air_distance": 44.05219631301032,
        "avg_time_to_throw": 2.82785,
        "completion_percentage": 62.5,
        "avg_intended_air_yards": 6.033783783783784,
        "avg_air_yards_to_sticks": -3.1824324324324316,
        "avg_completed_air_yards": 3.0336000000000003,
        "avg_air_yards_differential": -3.000183783783784,
        "max_completed_air_distance": 36.07339324211128,
        "expected_completion_percentage": 62.95599999999999,
        "completion_percentage_above_expectation": -0.45599999999998886
      }
    }
  ],
  "count": 3
}
Response fields
FieldTypeDescription
sourcestring
seasonnumber
player_id_kindstring
metric_keys[]arrayList of string
stats[]arrayList of objects
stats[].seasonnumber
stats[].season_typestring
stats[].weeknumber
stats[].player_idstring
stats[].namestring
stats[].positionstring
stats[].teamstring
stats[].metricsobject
stats[].metrics.attemptsnumber
stats[].metrics.pass_yardsnumber
stats[].metrics.completionsnumber
stats[].metrics.interceptionsnumber
stats[].metrics.passer_ratingnumber
stats[].metrics.aggressivenessnumber
stats[].metrics.pass_touchdownsnumber
stats[].metrics.avg_air_distancenumber
stats[].metrics.max_air_distancenumber
stats[].metrics.avg_time_to_thrownumber
stats[].metrics.completion_percentagenumber
stats[].metrics.avg_intended_air_yardsnumber
stats[].metrics.avg_air_yards_to_sticksnumber
stats[].metrics.avg_completed_air_yardsnumber
stats[].metrics.avg_air_yards_differentialnumber
stats[].metrics.max_completed_air_distancenumber
stats[].metrics.expected_completion_percentagenumber
stats[].metrics.completion_percentage_above_expectationnumber
countnumber

Multi-table

10 credits/call
POST

get_game_detail

10 credits

Full game detail with team stats, starting QBs, odds, weather, and officials

When to use: You need everything about one game on one call: box score for both teams, per-book odds, officials, weather, surface.

Parameters
NameTypeRequiredDescription
game_idstringrequiredGame id, e.g. 2025_01_KC_BUF
Example request
{
  "tool": "get_game_detail",
  "arguments": {
    "game_id": "2025_01_KC_LAC"
  }
}
Example response
json
{
  "game": {
    "game_id": "2025_01_KC_LAC",
    "season": 2025,
    "game_type": "REG",
    "week": 1,
    "gameday": "2025-09-05",
    "weekday": "Friday",
    "kickoff": "2025-09-06T00:00:00.000Z",
    "away_team": "KC",
    "home_team": "LAC",
    "away_score": 21,
    "home_score": 27,
    "result": 6,
    "total": 48,
    "overtime": 0,
    "status": "FINAL",
    "location": "Neutral",
    "stadium": "SoFi Stadium",
    "roof": "dome",
    "surface": null,
    "temp": null,
    "wind": null,
    "div_game": true,
    "away_rest": 7,
    "home_rest": 7,
    "spread_line": -3,
    "total_line": 47.5,
    "away_moneyline": -175,
    "home_moneyline": 145,
    "away_qb_name": "Patrick Mahomes",
    "home_qb_name": "Justin Herbert",
    "away_qb_id": "00-0033873",
    "home_qb_id": "00-0036355",
    "away_coach": "Andy Reid",
    "home_coach": "Jim Harbaugh",
    "referee": "Carl Cheffers",
    "espn_id": "401772714",
    "pfr_id": "202509050sdg"
  },
  "home_team": {
    "abbrev": "LAC",
    "name": "Los Angeles Chargers",
    "nick": "Chargers",
    "conference": "AFC",
    "division": "AFC West",
    "teamId": "4400",
    "color": "#007BC7",
    "color2": "#ffc20e",
    "color3": "#ffb612",
    "color4": "#001532",
    "logoEspn": "https://a.espncdn.com/i/teamlogos/nfl/500/lac.png",
    "logoWikipedia": "https://upload.wikimedia.org/wikipedia/en/thumb/7/72/NFL_Chargers_logo.svg/100px-NFL_Chargers_logo.svg.png",
    "logoSquared": "https://github.com/nflverse/nflverse-pbp/raw/master/squared_logos/LAC.png",
    "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/LAC.png",
    "active": true,
    "relocatedTo": null
  },
  "away_team": {
    "abbrev": "KC",
    "name": "Kansas City Chiefs",
    "nick": "Chiefs",
    "conference": "AFC",
    "division": "AFC West",
    "teamId": "2310",
    "color": "#E31837",
    "color2": "#FFB612",
    "color3": "#000000",
    "color4": "#e31837",
    "logoEspn": "https://a.espncdn.com/i/teamlogos/nfl/500/kc.png",
    "logoWikipedia": "https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Kansas_City_Chiefs_logo.svg/100px-Kansas_City_Chiefs_logo.svg.png",
    "logoSquared": "https://github.com/nflverse/nflverse-pbp/raw/master/squared_logos/KC.png",
    "wordmark": "https://github.com/nflverse/nflverse-pbp/raw/master/wordmarks/KC.png",
    "active": true,
    "relocatedTo": null
  },
  "consensus_closing": {
    "spread_line": -3,
    "total_line": 47.5,
    "home_moneyline": 145,
    "away_moneyline": -175
  },
  "team_stats": {
    "home": {
      "id": 18,
      "season": 2025,
      "week": 1,
      "team": "LAC",
      "seasonType": "REG",
      "gameId": "2025_01_KC_LAC",
      "opponentTeam": "KC",
      "completions": 25,
      "attempts": 34,
      "passingYards": 318,
      "passingTds": 3,
      "passingInterceptions": 0,
      "sacksSuffered": 3,
      "sackYardsLost": -14,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 342,
      "passingYardsAfterCatch": 134,
      "passingFirstDowns": 16,
      "passingEpa": 17.567263,
      "passingCpoe": 5.788768,
      "passing2ptConversions": 0,
      "passing10": 12,
      "passing16": 7,
      "passing20": 4,
      "passing40": 0,
      "carries": 25,
      "rushingYards": 90,
      "rushingTds": 0,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 6,
      "rushingEpa": -0.23139648,
      "rushing2ptConversions": 0,
      "rushing10": 2,
      "rushing12": 1,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 25,
      "targets": 34,
      "receivingYards": 318,
      "receivingTds": 3,
      "receivingFumbles": 1,
      "receivingFumblesLost": 0,
      "receivingAirYards": 342,
      "receivingYardsAfterCatch": 134,
      "receivingFirstDowns": 16,
      "receivingEpa": 21.656591,
      "receiving2ptConversions": 0,
      "receiving10": 12,
      "receiving16": 7,
      "receiving20": 4,
      "receiving40": 0,
      "specialTeamsTds": 0,
      "defTacklesSolo": 36,
      "defTacklesWithAssist": 0,
      "defTackleAssists": 24,
      "defTacklesForLoss": 3,
      "defTacklesForLossYards": 10,
      "defFumblesForced": 0,
      "defSacks": 2,
      "defSackYards": 9,
      "defQbHits": 8,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 4,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 0,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 6,
      "penaltyYards": 49,
      "fumblesForcedByOpp": 1,
      "fumblesNotForced": 0,
      "fumblesOutOfBounds": 1,
      "fumblesTotal": 1,
      "fumblesLostTotal": 0,
      "puntReturns": 0,
      "puntReturnYards": 0,
      "kickoffReturns": 3,
      "kickoffReturnYards": 67,
      "fgMade": 2,
      "fgAtt": 2,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": 39,
      "fgPct": 1,
      "fgMade019": 0,
      "fgMade2029": 0,
      "fgMade3039": 2,
      "fgMade4049": 0,
      "fgMade5059": 0,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": "39;36",
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 75,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 3,
      "patAtt": 3,
      "patMissed": 0,
      "patBlocked": 0,
      "patPct": 1,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 2,
      "ptBlocked": 0,
      "ptLong": 56,
      "ptYards": 106,
      "ptInside20": 0,
      "ptOutOfBounds": 0,
      "ptDowned": 0,
      "ptTouchback": 0,
      "ptFairCaught": 0,
      "ptReturned": 2,
      "ptReturnYards": 7,
      "ptReturnTds": 0,
      "ptNetYards": 99,
      "timeouts": 1
    },
    "away": {
      "id": 16,
      "season": 2025,
      "week": 1,
      "team": "KC",
      "seasonType": "REG",
      "gameId": "2025_01_KC_LAC",
      "opponentTeam": "LAC",
      "completions": 24,
      "attempts": 39,
      "passingYards": 258,
      "passingTds": 1,
      "passingInterceptions": 0,
      "sacksSuffered": 2,
      "sackYardsLost": -9,
      "sackFumbles": 0,
      "sackFumblesLost": 0,
      "passingAirYards": 271,
      "passingYardsAfterCatch": 116,
      "passingFirstDowns": 9,
      "passingEpa": 3.4485526,
      "passingCpoe": -5.9927764,
      "passing2ptConversions": 0,
      "passing10": 9,
      "passing16": 4,
      "passing20": 3,
      "passing40": 1,
      "carries": 17,
      "rushingYards": 98,
      "rushingTds": 1,
      "rushingFumbles": 0,
      "rushingFumblesLost": 0,
      "rushingFirstDowns": 8,
      "rushingEpa": 8.906441,
      "rushing2ptConversions": 0,
      "rushing10": 5,
      "rushing12": 1,
      "rushing20": 0,
      "rushing40": 0,
      "receptions": 24,
      "targets": 38,
      "receivingYards": 258,
      "receivingTds": 1,
      "receivingFumbles": 0,
      "receivingFumblesLost": 0,
      "receivingAirYards": 271,
      "receivingYardsAfterCatch": 116,
      "receivingFirstDowns": 9,
      "receivingEpa": 5.5701094,
      "receiving2ptConversions": 0,
      "receiving10": 9,
      "receiving16": 4,
      "receiving20": 3,
      "receiving40": 1,
      "specialTeamsTds": 0,
      "defTacklesSolo": 40,
      "defTacklesWithAssist": 2,
      "defTackleAssists": 18,
      "defTacklesForLoss": 6,
      "defTacklesForLossYards": 17,
      "defFumblesForced": 1,
      "defSacks": 3,
      "defSackYards": 14,
      "defQbHits": 4,
      "defInterceptions": 0,
      "defInterceptionYards": 0,
      "defPassDefended": 2,
      "defTds": 0,
      "defFumbles": 0,
      "defSafeties": 0,
      "defPuntBlocks": 0,
      "defPatBlocks": 0,
      "defFgBlocks": 0,
      "def2ptAtts": 0,
      "def2ptMade": 0,
      "miscYards": 0,
      "fumbleRecoveryOwn": 1,
      "fumbleRecoveryYardsOwn": 0,
      "fumbleRecoveryOpp": 0,
      "fumbleRecoveryYardsOpp": 0,
      "fumbleRecoveryTds": 0,
      "penalties": 10,
      "penaltyYards": 71,
      "fumblesForcedByOpp": 0,
      "fumblesNotForced": 1,
      "fumblesOutOfBounds": 0,
      "fumblesTotal": 1,
      "fumblesLostTotal": 0,
      "puntReturns": 2,
      "puntReturnYards": 7,
      "kickoffReturns": 5,
      "kickoffReturnYards": 147,
      "fgMade": 3,
      "fgAtt": 3,
      "fgMissed": 0,
      "fgBlocked": 0,
      "fgLong": 59,
      "fgPct": 1,
      "fgMade019": 0,
      "fgMade2029": 1,
      "fgMade3039": 1,
      "fgMade4049": 0,
      "fgMade5059": 1,
      "fgMade60": 0,
      "fgMissed019": 0,
      "fgMissed2029": 0,
      "fgMissed3039": 0,
      "fgMissed4049": 0,
      "fgMissed5059": 0,
      "fgMissed60": 0,
      "fgMadeList": "35;59;27",
      "fgMissedList": null,
      "fgBlockedList": null,
      "fgMadeDistance": 121,
      "fgMissedDistance": 0,
      "fgBlockedDistance": 0,
      "patMade": 0,
      "patAtt": 1,
      "patMissed": 1,
      "patBlocked": 0,
      "patPct": 0,
      "gwfgMade": 0,
      "gwfgAtt": 0,
      "gwfgMissed": 0,
      "gwfgBlocked": 0,
      "gwfgDistance": 0,
      "ptAtt": 3,
      "ptBlocked": 0,
      "ptLong": 40,
      "ptYards": 116,
      "ptInside20": 1,
      "ptOutOfBounds": 1,
      "ptDowned": 1,
      "ptTouchback": 0,
      "ptFairCaught": 1,
      "ptReturned": 0,
      "ptReturnYards": 0,
      "ptReturnTds": 0,
      "ptNetYards": 116,
      "timeouts": 6
    }
  },
  "odds": {
    "opening_closing": [],
    "latest": []
  },
  "officials": []
}
Response fields
FieldTypeDescription
gameobject
game.game_idstring
game.seasonnumber
game.game_typestring
game.weeknumber
game.gamedaystring
game.weekdaystring
game.kickoffstring
game.away_teamstring
game.home_teamstring
game.away_scorenumber
game.home_scorenumber
game.resultnumber
game.totalnumber
game.overtimenumber
game.statusstring
game.locationstring
game.stadiumstring
game.roofstring
game.surfacenull
game.tempnull
game.windnull
game.div_gameboolean
game.away_restnumber
game.home_restnumber
game.spread_linenumber
game.total_linenumber
game.away_moneylinenumber
game.home_moneylinenumber
game.away_qb_namestring
game.home_qb_namestring
game.away_qb_idstring
game.home_qb_idstring
game.away_coachstring
game.home_coachstring
game.refereestring
game.espn_idstring
game.pfr_idstring
home_teamobject
home_team.abbrevstring
POST

get_head_to_head

10 credits

Matchup history with win/loss records and margins

When to use: You are previewing a matchup and want the recent history between two teams with margins.

Parameters
NameTypeRequiredDescription
team1stringrequiredFirst team code
team2stringrequiredSecond team code
seasonstring | numberoptionalSeason year. Omit for all-time.
limitintegeroptionalMax games (default 20)
Example request
{
  "tool": "get_head_to_head",
  "arguments": {
    "team1": "KC",
    "team2": "BUF",
    "limit": 5
  }
}
Example response
json
{
  "team1": "KC",
  "team2": "BUF",
  "record": {
    "KC": 2,
    "BUF": 3,
    "ties": 0
  },
  "total_games": 5,
  "avg_margin_team1": -2.6,
  "games": [
    {
      "game_id": "2025_09_KC_BUF",
      "season": 2025,
      "game_type": "REG",
      "week": 9,
      "gameday": "2025-11-02",
      "weekday": "Sunday",
      "kickoff": "2025-11-02T21:25:00.000Z",
      "away_team": "KC",
      "home_team": "BUF",
      "away_score": 21,
      "home_score": 28,
      "result": 7,
      "total": 49,
      "overtime": 0,
      "status": "FINAL",
      "location": "Home",
      "stadium": "New Era Field",
      "roof": "outdoors",
      "surface": "a_turf",
      "temp": 54,
      "wind": 6,
      "div_game": false,
      "away_rest": 6,
      "home_rest": 7,
      "spread_line": -2.5,
      "total_line": 53.5,
      "away_moneyline": -135,
      "home_moneyline": 114,
      "away_qb_name": "Patrick Mahomes",
      "home_qb_name": "Josh Allen",
      "away_qb_id": "00-0033873",
      "home_qb_id": "00-0034857",
      "away_coach": "Andy Reid",
      "home_coach": "Sean McDermott",
      "referee": "Carl Cheffers",
      "espn_id": "401772768",
      "pfr_id": "202511020buf"
    },
    {
      "game_id": "2024_21_BUF_KC",
      "season": 2024,
      "game_type": "CON",
      "week": 21,
      "gameday": "2025-01-26",
      "weekday": "Sunday",
      "kickoff": "2025-01-26T23:30:00.000Z",
      "away_team": "BUF",
      "home_team": "KC",
      "away_score": 29,
      "home_score": 32,
      "result": 3,
      "total": 61,
      "overtime": 0,
      "status": "FINAL",
      "location": "Home",
      "stadium": "GEHA Field at Arrowhead Stadium",
      "roof": "outdoors",
      "surface": "grass",
      "temp": 31,
      "wind": 8,
      "div_game": false,
      "away_rest": 7,
      "home_rest": 8,
      "spread_line": 1.5,
      "total_line": 49.5,
      "away_moneyline": -102,
      "home_moneyline": -118,
      "away_qb_name": "Josh Allen",
      "home_qb_name": "Patrick Mahomes",
      "away_qb_id": "00-0034857",
      "home_qb_id": "00-0033873",
      "away_coach": "Sean McDermott",
      "home_coach": "Andy Reid",
      "referee": "Clete Blakeman",
      "espn_id": "401671887",
      "pfr_id": "202501260kan"
    },
    {
      "game_id": "2024_11_KC_BUF",
      "season": 2024,
      "game_type": "REG",
      "week": 11,
      "gameday": "2024-11-17",
      "weekday": "Sunday",
      "kickoff": "2024-11-17T21:25:00.000Z",
      "away_team": "KC",
      "home_team": "BUF",
      "away_score": 21,
      "home_score": 30,
      "result": 9,
      "total": 51,
      "overtime": 0,
      "status": "FINAL",
      "location": "Home",
      "stadium": "New Era Field",
      "roof": "outdoors",
      "surface": "a_turf",
      "temp": 50,
      "wind": 3,
      "div_game": false,
      "away_rest": 7,
      "home_rest": 7,
      "spread_line": 2.5,
      "total_line": 46.5,
      "away_moneyline": 120,
      "home_moneyline": -142,
      "away_qb_name": "Patrick Mahomes",
      "home_qb_name": "Josh Allen",
      "away_qb_id": "00-0033873",
      "home_qb_id": "00-0034857",
      "away_coach": "Andy Reid",
      "home_coach": "Sean McDermott",
      "referee": "Land Clark",
      "espn_id": "401671665",
      "pfr_id": "202411170buf"
    }
  ],
  "count": 5
}
Response fields
FieldTypeDescription
team1string
team2string
recordobject
record.KCnumber
record.BUFnumber
record.tiesnumber
total_gamesnumber
avg_margin_team1number
games[]arrayList of objects
games[].game_idstring
games[].seasonnumber
games[].game_typestring
games[].weeknumber
games[].gamedaystring
games[].weekdaystring
games[].kickoffstring
games[].away_teamstring
games[].home_teamstring
games[].away_scorenumber
games[].home_scorenumber
games[].resultnumber
games[].totalnumber
games[].overtimenumber
games[].statusstring
games[].locationstring
games[].stadiumstring
games[].roofstring
games[].surfacestring
games[].tempnumber
games[].windnumber
games[].div_gameboolean
games[].away_restnumber
games[].home_restnumber
games[].spread_linenumber
games[].total_linenumber
games[].away_moneylinenumber
games[].home_moneylinenumber
games[].away_qb_namestring
games[].home_qb_namestring
games[].away_qb_idstring
POST

get_plays

10 credits

Play-by-play with EPA, win probability, situation filters, and optional FTN charting

When to use: You are doing play-level analysis: EPA, WPA, success rate, and situation filters (down, red zone, win-probability band) with pagination. Set include_charting for FTN's manual charting from 2022 on, or filter straight on it with is_play_action, is_motion, is_rpo, is_screen_pass, is_no_huddle, is_trick_play, is_qb_out_of_pocket, is_drop, and min_blitzers.

Parameters
NameTypeRequiredDescription
game_idstringoptionalGame id, e.g. 2025_01_KC_BUF
seasonstring | numberoptionalSeason year (required when game_id is not set)
weekintegeroptionalWeek
posteamstringoptionalOffense team code
defteamstringoptionalDefense team code
play_typeenum: pass | run | punt | kickoff | field_goal | extra_point | qb_kneel | qb_spike | no_playoptionalPlay type
downintegeroptionalDown
quarterintegeroptionalQuarter (5+ = overtime)
passer_idstringoptionalGSIS id of the passer
rusher_idstringoptionalGSIS id of the rusher
receiver_idstringoptionalGSIS id of the receiver
min_wpnumberoptionalMinimum pre-play win probability for the offense
max_wpnumberoptionalMaximum pre-play win probability
red_zonebooleanoptionalOnly plays inside the 20
third_downbooleanoptionalOnly third downs
include_chartingbooleanoptionalAttach FTN manual charting to each play (2022+): alignment, motion, play action, screens, RPO, blitzers, drops
is_play_actionbooleanoptionalCharting filter: play action (2022+)
is_motionbooleanoptionalCharting filter: pre-snap motion (2022+)
is_rpobooleanoptionalCharting filter: run-pass option (2022+)
is_screen_passbooleanoptionalCharting filter: screen pass (2022+)
is_no_huddlebooleanoptionalCharting filter: no huddle (2022+)
is_trick_playbooleanoptionalCharting filter: trick play (2022+)
is_qb_out_of_pocketbooleanoptionalCharting filter: quarterback out of the pocket (2022+)
is_dropbooleanoptionalCharting filter: charted drop (2022+)
min_blitzersintegeroptionalCharting filter: at least this many blitzers (2022+). FTN counts rushers beyond the base rush, so this is typically 0-3; 5+ is almost never charted.
limitintegeroptionalMax plays (default 200)
offsetintegeroptionalPagination offset
Example request
{
  "tool": "get_plays",
  "arguments": {
    "season": 2025,
    "posteam": "KC",
    "is_play_action": true,
    "include_charting": true,
    "limit": 5
  }
}
Example response
json
{
  "plays": [
    {
      "game_id": "2025_01_KC_LAC",
      "play_id": 476,
      "season": 2025,
      "week": 1,
      "posteam": "KC",
      "defteam": "LAC",
      "qtr": 1,
      "time": "07:57",
      "down": 2,
      "ydstogo": 9,
      "yardline_100": 53,
      "yrdln": "KC 47",
      "play_type": "pass",
      "desc": "(7:57) (Shotgun) 15-P.Mahomes pass short left to 87-T.Kelce to LAC 43 for 10 yards (32-A.Gilman).",
      "yards_gained": 10,
      "epa": 1.121511,
      "wpa": 0.019656122,
      "wp": 0.25632313,
      "vegas_wp": 0.4229564,
      "success": 1,
      "first_down": 1,
      "touchdown": 0,
      "interception": 0,
      "fumble_lost": 0,
      "sack": 0,
      "penalty": 0,
      "penalty_type": null,
      "shotgun": 1,
      "no_huddle": 0,
      "pass_length": "short",
      "pass_location": "left",
      "air_yards": 10,
      "yards_after_catch": 0,
      "run_location": null,
      "run_gap": null,
      "cpoe": 33.012028,
      "xpass": 0.70471954,
      "passer_player_id": "00-0033873",
      "passer_player_name": "P.Mahomes",
      "rusher_player_id": null,
      "rusher_player_name": null,
      "receiver_player_id": "00-0030506",
      "receiver_player_name": "T.Kelce",
      "posteam_score": 0,
      "defteam_score": 7,
      "score_differential": -7,
      "drive": 3,
      "drive_result": "Punt",
      "series_result": "First down",
      "charting": {
        "starting_hash": "M",
        "qb_location": "S",
        "n_offense_backfield": 1,
        "n_defense_box": 6,
        "n_blitzers": 0,
        "n_pass_rushers": 4,
        "is_no_huddle": false,
        "is_motion": true,
        "is_play_action": true,
        "is_screen_pass": false,
        "is_rpo": false,
        "is_trick_play": false,
        "is_qb_out_of_pocket": false,
        "is_qb_sneak": false,
        "is_qb_fault_sack": false,
        "is_interception_worthy": false,
        "is_throw_away": false,
        "is_catchable_ball": true,
        "is_contested_ball": false,
        "is_created_reception": false,
        "is_drop": false,
        "read_thrown": "1"
      }
    },
    {
      "game_id": "2025_01_KC_LAC",
      "play_id": 726,
      "season": 2025,
      "week": 1,
      "posteam": "KC",
      "defteam": "LAC",
      "qtr": 1,
      "time": "04:28",
      "down": 1,
      "ydstogo": 10,
      "yardline_100": 58,
      "yrdln": "KC 42",
      "play_type": "pass",
      "desc": "(4:28) (Shotgun) 15-P.Mahomes pass incomplete short left to 5-M.Brown.",
      "yards_gained": 0,
      "epa": -0.53228486,
      "wpa": -0.015009612,
      "wp": 0.26707566,
      "vegas_wp": 0.4783187,
      "success": 0,
      "first_down": 0,
      "touchdown": 0,
      "interception": 0,
      "fumble_lost": 0,
      "sack": 0,
      "penalty": 0,
      "penalty_type": null,
      "shotgun": 1,
      "no_huddle": 0,
      "pass_length": "short",
      "pass_location": "left",
      "air_yards": 11,
      "yards_after_catch": null,
      "run_location": null,
      "run_gap": null,
      "cpoe": -67.34852,
      "xpass": 0.5162144,
      "passer_player_id": "00-0033873",
      "passer_player_name": "P.Mahomes",
      "rusher_player_id": null,
      "rusher_player_name": null,
      "receiver_player_id": "00-0035662",
      "receiver_player_name": "M.Brown",
      "posteam_score": 0,
      "defteam_score": 7,
      "score_differential": -7,
      "drive": 5,
      "drive_result": "Punt",
      "series_result": "Punt",
      "charting": {
        "starting_hash": "L",
        "qb_location": "S",
        "n_offense_backfield": 2,
        "n_defense_box": 5,
        "n_blitzers": 2,
        "n_pass_rushers": 6,
        "is_no_huddle": false,
        "is_motion": false,
        "is_play_action": true,
        "is_screen_pass": false,
        "is_rpo": false,
        "is_trick_play": false,
        "is_qb_out_of_pocket": false,
        "is_qb_sneak": false,
        "is_qb_fault_sack": false,
        "is_interception_worthy": true,
        "is_throw_away": false,
        "is_catchable_ball": false,
        "is_contested_ball": false,
        "is_created_reception": false,
        "is_drop": false,
        "read_thrown": "1"
      }
    },
    {
      "game_id": "2025_01_KC_LAC",
      "play_id": 1342,
      "season": 2025,
      "week": 1,
      "posteam": "KC",
      "defteam": "LAC",
      "qtr": 2,
      "time": "10:13",
      "down": 1,
      "ydstogo": 10,
      "yardline_100": 41,
      "yrdln": "LAC 41",
      "play_type": "run",
      "desc": "(10:13) 15-P.Mahomes scrambles left end ran ob at LAC 37 for 4 yards (3-D.James).",
      "yards_gained": 4,
      "epa": -0.19704096,
      "wpa": 0.005089611,
      "wp": 0.20828883,
      "vegas_wp": 0.34518102,
      "success": 0,
      "first_down": 0,
      "touchdown": 0,
      "interception": 0,
      "fumble_lost": 0,
      "sack": 0,
      "penalty": 0,
      "penalty_type": null,
      "shotgun": 0,
      "no_huddle": 0,
      "pass_length": null,
      "pass_location": null,
      "air_yards": null,
      "yards_after_catch": null,
      "run_location": "left",
      "run_gap": "end",
      "cpoe": null,
      "xpass": 0.50771487,
      "passer_player_id": null,
      "passer_player_name": null,
      "rusher_player_id": "00-0033873",
      "rusher_player_name": "P.Mahomes",
      "receiver_player_id": null,
      "receiver_player_name": null,
      "posteam_score": 0,
      "defteam_score": 10,
      "score_differential": -10,
      "drive": 7,
      "drive_result": "Field goal",
      "series_result": "First down",
      "charting": {
        "starting_hash": "R",
        "qb_location": "U",
        "n_offense_backfield": 2,
        "n_defense_box": 7,
        "n_blitzers": 0,
        "n_pass_rushers": 4,
        "is_no_huddle": false,
        "is_motion": true,
        "is_play_action": true,
        "is_screen_pass": false,
        "is_rpo": false,
        "is_trick_play": false,
        "is_qb_out_of_pocket": true,
        "is_qb_sneak": false,
        "is_qb_fault_sack": false,
        "is_interception_worthy": false,
        "is_throw_away": false,
        "is_catchable_ball": false,
        "is_contested_ball": false,
        "is_created_reception": false,
        "is_drop": false,
        "read_thrown": "SD"
      }
    }
  ],
  "summary": {
    "plays": 5,
    "epa_total": 0.36,
    "epa_per_play": 0.072,
    "success_rate": 0.4
  },
  "count": 5,
  "charted_plays": 5,
  "next_offset": 5
}
Response fields
FieldTypeDescription
plays[]arrayList of objects
plays[].game_idstring
plays[].play_idnumber
plays[].seasonnumber
plays[].weeknumber
plays[].posteamstring
plays[].defteamstring
plays[].qtrnumber
plays[].timestring
plays[].downnumber
plays[].ydstogonumber
plays[].yardline_100number
plays[].yrdlnstring
plays[].play_typestring
plays[].descstring
plays[].yards_gainednumber
plays[].epanumber
plays[].wpanumber
plays[].wpnumber
plays[].vegas_wpnumber
plays[].successnumber
plays[].first_downnumber
plays[].touchdownnumber
plays[].interceptionnumber
plays[].fumble_lostnumber
plays[].sacknumber
plays[].penaltynumber
plays[].penalty_typenull
plays[].shotgunnumber
plays[].no_huddlenumber
plays[].pass_lengthstring
plays[].pass_locationstring
plays[].air_yardsnumber
plays[].yards_after_catchnumber
plays[].run_locationnull
plays[].run_gapnull
plays[].cpoenumber
plays[].xpassnumber
plays[].passer_player_idstring
plays[].passer_player_namestring
POST

get_odds

10 credits

Odds by game with bookmaker filters

When to use: You need lines for one game: the consensus closing line for any game since 1999, plus per-book opening, closing, and latest snapshots for 2026 onwards.

Parameters
NameTypeRequiredDescription
game_idstringrequiredGame id, e.g. 2026_01_KC_BUF
bookmakerstringoptionalBookmaker key (draftkings, fanduel, betmgm, caesars, espnbet)
snapshot_typeenum: opening | closing | latestoptionalReturn only one snapshot type. Default returns opening, closing, and latest per book.
Example request
{
  "tool": "get_odds",
  "arguments": {
    "game_id": "2025_01_KC_LAC"
  }
}
Example response
json
{
  "game_id": "2025_01_KC_LAC",
  "home_team": "LAC",
  "away_team": "KC",
  "kickoff": "2025-09-06T00:00:00.000Z",
  "consensus_closing": {
    "spread_line": -3,
    "total_line": 47.5,
    "home_moneyline": 145,
    "away_moneyline": -175
  },
  "books": [],
  "bookmaker_count": 0,
  "count": 0,
  "note": "No per-bookmaker snapshots stored for this game (snapshots begin with the 2026 season). consensus_closing is the nflverse closing line."
}
Response fields
FieldTypeDescription
game_idstring
home_teamstring
away_teamstring
kickoffstring
consensus_closingobject
consensus_closing.spread_linenumber
consensus_closing.total_linenumber
consensus_closing.home_moneylinenumber
consensus_closing.away_moneylinenumber
books[]arrayList
bookmaker_countnumber
countnumber
notestring

Time-series

25 credits/call
POST

get_line_movement

25 credits

Time-series odds grouped by bookmaker

When to use: You are studying how a line moved: every hourly snapshot per bookmaker from first post to kickoff.

Parameters
NameTypeRequiredDescription
game_idstringrequiredGame id
bookmakerstringoptionalBookmaker key filter
Example request
{
  "tool": "get_line_movement",
  "arguments": {
    "game_id": "2026_02_DET_BUF"
  }
}
Example response
json
{
  "game_id": "2026_02_DET_BUF",
  "home_team": "BUF",
  "away_team": "DET",
  "kickoff": "2026-09-18T00:15:00.000Z",
  "movement": {
    "betmgm": [
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 190,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.3448276,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -110,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 200,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.33333334,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -108,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "betmgm",
        "snapshot_type": "snapshot",
        "ml_home": -235,
        "ml_away": 200,
        "ml_home_prob": 0.70149255,
        "ml_away_prob": 0.33333334,
        "spread_home": -5.5,
        "spread_home_odds": -110,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 55,
        "total_over_odds": -108,
        "total_under_odds": -110,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "draftkings": [
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "draftkings",
        "snapshot_type": "snapshot",
        "ml_home": -238,
        "ml_away": 195,
        "ml_home_prob": 0.70414203,
        "ml_away_prob": 0.33898306,
        "spread_home": -5.5,
        "spread_home_odds": -105,
        "spread_away": 5.5,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -120,
        "total_under_odds": 100,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "espnbet": [
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "espnbet",
        "snapshot_type": "snapshot",
        "ml_home": -260,
        "ml_away": 215,
        "ml_home_prob": 0.7222222,
        "ml_away_prob": 0.31746033,
        "spread_home": -6,
        "spread_home_odds": -105,
        "spread_away": 6,
        "spread_away_odds": -115,
        "total": 54.5,
        "total_over_odds": -115,
        "total_under_odds": -105,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ],
    "fanduel": [
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:04:00.530Z"
      },
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:08:01.468Z"
      },
      {
        "bookmaker": "fanduel",
        "snapshot_type": "snapshot",
        "ml_home": -255,
        "ml_away": 210,
        "ml_home_prob": 0.7183099,
        "ml_away_prob": 0.32258064,
        "spread_home": -5.5,
        "spread_home_odds": -112,
        "spread_away": 5.5,
        "spread_away_odds": -108,
        "total": 54.5,
        "total_over_odds": -114,
        "total_under_odds": -106,
        "captured_at": "2026-09-17T15:08:35.622Z"
      }
    ]
  },
  "snapshots": 28
}
Response fields
FieldTypeDescription
game_idstring
home_teamstring
away_teamstring
kickoffstring
movementobject
movement.betmgm[]arrayList of objects
movement.betmgm[].bookmakerstring
movement.betmgm[].snapshot_typestring
movement.betmgm[].ml_homenumber
movement.betmgm[].ml_awaynumber
movement.betmgm[].ml_home_probnumber
movement.betmgm[].ml_away_probnumber
movement.betmgm[].spread_homenumber
movement.betmgm[].spread_home_oddsnumber
movement.betmgm[].spread_awaynumber
movement.betmgm[].spread_away_oddsnumber
movement.betmgm[].totalnumber
movement.betmgm[].total_over_oddsnumber
movement.betmgm[].total_under_oddsnumber
movement.betmgm[].captured_atstring
movement.draftkings[]arrayList of objects
movement.draftkings[].bookmakerstring
movement.draftkings[].snapshot_typestring
movement.draftkings[].ml_homenumber
movement.draftkings[].ml_awaynumber
movement.draftkings[].ml_home_probnumber
movement.draftkings[].ml_away_probnumber
movement.draftkings[].spread_homenumber
movement.draftkings[].spread_home_oddsnumber
movement.draftkings[].spread_awaynumber
movement.draftkings[].spread_away_oddsnumber
movement.draftkings[].totalnumber
movement.draftkings[].total_over_oddsnumber
movement.draftkings[].total_under_oddsnumber
movement.draftkings[].captured_atstring
movement.espnbet[]arrayList of objects
movement.espnbet[].bookmakerstring
movement.espnbet[].snapshot_typestring
movement.espnbet[].ml_homenumber
movement.espnbet[].ml_awaynumber

Ready to start?

500 free credits on signup. No credit card required.

Get a free key