get_advanced_stats
Next Gen Stats tracking metrics and Pro Football Reference advanced stats
When to use it
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
| Name | Type | Required | Description |
|---|---|---|---|
| source | enum: ngs_passing | ngs_rushing | ngs_receiving | pfr_passing | pfr_rushing | pfr_receiving | pfr_defense | yes | Which dataset: ngs_passing, ngs_rushing, ngs_receiving, pfr_passing, pfr_rushing, pfr_receiving, pfr_defense |
| season | string | number | no | Season year. Defaults to current. NGS from 2016, PFR from 2018. |
| week | integer | no | Week. NGS also publishes week 0 as the season aggregate. |
| player_id | string | no | GSIS id for an ngs_* source, PFR id for a pfr_* source; both are on search_players |
| team | string | no | Team code |
| limit | integer | no | Max rows (default 50) |
Request
curl -X POST https://football-mcp-production.up.railway.app/v1/get_advanced_stats \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"source": "ngs_passing",
"season": 2025,
"week": 1,
"limit": 3
}'Over MCP, ask for it in plain English and the client calls get_advanced_stats itself. Point any MCP client at https://football-mcp-production.up.railway.app/mcp?key=YOUR_API_KEY.
Response
{
"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
| Field | Type | Description |
|---|---|---|
| source | string | |
| season | number | |
| player_id_kind | string | |
| metric_keys[] | array | List of string |
| stats[] | array | List of objects |
| stats[].season | number | |
| stats[].season_type | string | |
| stats[].week | number | |
| stats[].player_id | string | |
| stats[].name | string | |
| stats[].position | string | |
| stats[].team | string | |
| stats[].metrics | object | |
| stats[].metrics.attempts | number | |
| stats[].metrics.pass_yards | number | |
| stats[].metrics.completions | number | |
| stats[].metrics.interceptions | number | |
| stats[].metrics.passer_rating | number | |
| stats[].metrics.aggressiveness | number | |
| stats[].metrics.pass_touchdowns | number | |
| stats[].metrics.avg_air_distance | number | |
| stats[].metrics.max_air_distance | number | |
| stats[].metrics.avg_time_to_throw | number | |
| stats[].metrics.completion_percentage | number | |
| stats[].metrics.avg_intended_air_yards | number | |
| stats[].metrics.avg_air_yards_to_sticks | number | |
| stats[].metrics.avg_completed_air_yards | number | |
| stats[].metrics.avg_air_yards_differential | number | |
| stats[].metrics.max_completed_air_distance | number | |
| stats[].metrics.expected_completion_percentage | number | |
| stats[].metrics.completion_percentage_above_expectation | number | |
| count | number |
Related endpoints
Takes the player_id this one returns.
Weekly and season stat lines for one player: passing, rushing, receiving, defense, kicking, fantasy
Returns the team this one takes.
All 32 teams with conference, division, colours, and logos
Returns the player_id this one takes.
Find players by name, team, or position
Returns the player_id this one takes.
Injury report by team and week with practice and game status
Try it
500 credits free on signup — 100 calls to get_advanced_stats — and no card.