Skip to content

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_plays itself. Point any MCP client at https://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_idstring
plays[].play_idnumber
plays[].seasonnumber
plays[].weeknumber
plays[].posteamstring
plays[].defteamstring
plays[].qtrnumber
plays[].timestring
plays[].downnull
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_typestring
plays[].shotgunnumber
plays[].no_huddlenumber
plays[].pass_lengthnull
plays[].pass_locationnull
plays[].air_yardsnull
plays[].yards_after_catchnull
plays[].run_locationnull
plays[].run_gapnull
plays[].cpoenull
plays[].xpassnull
plays[].passer_player_idnull
plays[].passer_player_namenull

Related endpoints

Try it

500 free credits every month: 50 calls to get_plays, and no card.