get_plays
10 creditsMulti-tablePOST /v1/get_plays
Data refreshed · changelog
Play-by-play with EPA, win probability, situation filters
Use it when you are doing play-level analysis: EPA, WPA, success rate, and situation filters (down, red zone, win-probability band) with pagination.
Parameters
game_idstringoptional- Game id, e.g. 2025_01_KC_BUF
seasonstring | numberoptional- Season year (required when game_id is not set)
weekintegeroptional- Week
posteamstringoptional- Offense team code
defteamstringoptional- Defense team code
play_typeenum: pass | run | punt | kickoff | field_goal | extra_point | qb_kneel | qb_spike | no_playoptional- Play type
downintegeroptional- Down
quarterintegeroptional- Quarter (5+ = overtime)
passer_idstringoptional- GSIS id of the passer
rusher_idstringoptional- GSIS id of the rusher
receiver_idstringoptional- GSIS id of the receiver
min_wpnumberoptional- Minimum pre-play win probability for the offense
max_wpnumberoptional- Maximum pre-play win probability
red_zonebooleanoptional- Only plays inside the 20
third_downbooleanoptional- Only third downs
limitintegeroptional- Max plays (default 200)
offsetintegeroptional- Pagination offset
Notes
- Over MCP, ask for it in plain English and the client calls
get_playsitself. Point any MCP client athttps://mcp.endzoneapi.com/mcp?key=YOUR_API_KEY. - Each call costs 10 credits, taken before it runs and refunded if the server errors.
- Not the call you need? Find the right call by what you are trying to answer.
Request
curl -X POST https://mcp.endzoneapi.com/v1/get_plays \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"season": 2025,
"posteam": "KC",
"limit": 5
}'Response
json
{
"plays": [
{
"game_id": "2025_01_KC_LAC",
"play_id": 40,
"season": 2025,
"week": 1,
"posteam": "KC",
"defteam": "LAC",
"qtr": 1,
"time": "15:00",
"down": null,
"ydstogo": 0,
"yardline_100": 35,
"yrdln": "LAC 35",
"play_type": "kickoff",
"desc": "11-C.Dicker kicks 59 yards from LAC 35 to KC 6. 80-T.Thornton pushed ob at KC 48 for 42 yards (24-B.St-Juste). PENALTY on KC-2-J.Williams, Offensive Holding, 10 yards, enforced at KC 34.",
"yards_gained": 0,
"epa": -0.24012075,
"wpa": 0,
"wp": 0.43320796,
"vegas_wp": 0.61365855,
"success": 0,
"first_down": 0,
"touchdown": 0,
"interception": 0,
"fumble_lost": 0,
"sack": 0,
"penalty": 1,
"penalty_type": "Offensive Holding",
"shotgun": 0,
"no_huddle": 0,
"pass_length": null,
"pass_location": null,
"air_yards": null,
"yards_after_catch": null,
"run_location": null,
"run_gap": null,
"cpoe": null,
"xpass": null,
"passer_player_id": null,
"passer_player_name": null,
"rusher_player_id": null,
"rusher_player_name": null,
"receiver_player_id": null,
"receiver_player_name": null,
"posteam_score": 0,
"defteam_score": 0,
"score_differential": 0,
"drive": 1,
"drive_result": "Punt",
"series_result": "Punt"
},
{
"game_id": "2025_01_KC_LAC",
"play_id": 79,
"season": 2025,
"week": 1,
"posteam": "KC",
"defteam": "LAC",
"qtr": 1,
"time": "14:52",
"down": 1,
"ydstogo": 10,
"yardline_100": 76,
"yrdln": "KC 24",
"play_type": "run",
"desc": "(14:52) (Shotgun) 10-I.Pacheco right guard to KC 28 for 4 yards (32-A.Gilman; 0-D.Henley).",
"yards_gained": 4,
"epa": -0.008932982,
"wpa": -0.010726303,
"wp": 0.43320796,
"vegas_wp": 0.6127665,
"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": null,
"pass_location": null,
"air_yards": null,
"yards_after_catch": null,
"run_location": "right",
"run_gap": "guard",
"cpoe": null,
"xpass": 0.48951253,
"passer_player_id": null,
"passer_player_name": null,
"rusher_player_id": "00-0037197",
"rusher_player_name": "I.Pacheco",
"receiver_player_id": null,
"receiver_player_name": null,
"posteam_score": 0,
"defteam_score": 0,
"score_differential": 0,
"drive": 1,
"drive_result": "Punt",
"series_result": "Punt"
},
{
"game_id": "2025_01_KC_LAC",
"play_id": 101,
"season": 2025,
"week": 1,
"posteam": "KC",
"defteam": "LAC",
"qtr": 1,
"time": "14:21",
"down": 2,
"ydstogo": 6,
"yardline_100": 72,
"yrdln": "KC 28",
"play_type": "run",
"desc": "(14:21) (Shotgun) 1-X.Worthy right end to KC 28 for no gain (52-K.Mack).",
"yards_gained": 0,
"epa": -0.806627,
"wpa": -0.0171507,
"wp": 0.42248166,
"vegas_wp": 0.6049587,
"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": null,
"pass_location": null,
"air_yards": null,
"yards_after_catch": null,
"run_location": "right",
"run_gap": "end",
"cpoe": null,
"xpass": 0.6220576,
"passer_player_id": null,
"passer_player_name": null,
"rusher_player_id": "00-0039894",
"rusher_player_name": "X.Worthy",
"receiver_player_id": null,
"receiver_player_name": null,
"posteam_score": 0,
"defteam_score": 0,
"score_differential": 0,
"drive": 1,
"drive_result": "Punt",
"series_result": "Punt"
}
],
"summary": {
"plays": 5,
"epa_total": -2.6,
"epa_per_play": -0.519,
"success_rate": 0.2
},
"count": 5,
"next_offset": 5
}Response fields
plays[]array- List of objects
plays[].game_idstringplays[].play_idnumberplays[].seasonnumberplays[].weeknumberplays[].posteamstringplays[].defteamstringplays[].qtrnumberplays[].timestringplays[].downnullplays[].ydstogonumberplays[].yardline_100numberplays[].yrdlnstringplays[].play_typestringplays[].descstringplays[].yards_gainednumberplays[].epanumberplays[].wpanumberplays[].wpnumberplays[].vegas_wpnumberplays[].successnumberplays[].first_downnumberplays[].touchdownnumberplays[].interceptionnumberplays[].fumble_lostnumberplays[].sacknumberplays[].penaltynumberplays[].penalty_typestringplays[].shotgunnumberplays[].no_huddlenumberplays[].pass_lengthnullplays[].pass_locationnullplays[].air_yardsnullplays[].yards_after_catchnullplays[].run_locationnullplays[].run_gapnullplays[].cpoenullplays[].xpassnullplays[].passer_player_idnullplays[].passer_player_namenull
Related endpoints
get_player_stats5 cr
Takes the player_id this one returns.
Weekly and season stat lines for one player: passing, rushing, receiving, defense, kicking, fantasy
get_game_detail10 cr
Takes the game_id this one returns.
Full game detail with team stats, starting QBs, odds, weather, and officials
get_prop_history10 cr
Takes the player_id this one returns.
A player's prop lines against the result, game by game
get_prop_movement10 cr
Takes the game_id this one returns.
How one player's prop line moved before a game, every capture by sportsbook
Try it
500 free credits every month: 50 calls to get_plays, and no card.