get_shot_map
Every shot attempt with rink coordinates, shot type, shooter and goalie.
When to use it
You want to plot or model shot locations rather than read a list of events -- a shooter's season heat map, a team's attempts by zone, or the input to an expected-goals model. Filter by game, by player, or by season plus team.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| game_id | string | no | NHL game ID |
| season | string | no | Season ID, 8-digit; use with team |
| team | string | no | Team abbreviation; use with season |
| player_id | number | no | NHL player ID of the shooter |
| strength | string | no | Strength filter, e.g. 5v5 |
Request
curl -X POST https://mcp.puckapi.com/v1/get_shot_map \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"game_id": "2024020601"
}'Over MCP, ask for it in plain English and the client calls get_shot_map itself. Point any MCP client at https://mcp.puckapi.com/mcp?key=YOUR_API_KEY.
Response
{
"shots": [
{
"type": "shot-on-goal",
"x_coord": 62,
"y_coord": -9,
"shot_type": "wrist",
"strength": "5v5",
"team": "PIT",
"shooter": 8471675,
"goalie": 8480045,
"game_id": "2024020601",
"period": 1,
"seconds_elapsed": 143
}
],
"summary": {
"returned": 114,
"capped_at": 2000,
"by_type": {
"shot-on-goal": 55,
"missed-shot": 29,
"blocked-shot": 20,
"goal": 10
}
},
"count": 114
}Response fields
| Field | Type | Description |
|---|---|---|
| shots[].x_coord | number | Rink x, -100..100 |
| shots[].y_coord | number | Rink y, -42..42 |
| shots[].type | string | goal, shot-on-goal, missed-shot or blocked-shot |
| shots[].shot_type | string | wrist, snap, slap, tip-in, backhand, deflected, wrap-around |
| shots[].shooter | number | Shooter's NHL player ID |
| shots[].goalie | number | Goalie in net at the time |
| summary.capped_at | number | Hard cap of 2,000 shots per call |
Related endpoints
Returns the team this one takes.
All 32 active NHL teams with divisions, conferences, and arenas.
Returns the game_id this one takes.
Upcoming games for the next N days. Defaults to 7 days.
Returns the player_id this one takes.
Find players by name, team, or position.
Returns the team this one takes.
Current standings with points, point pace, goal differential, and 5v5 possession: Corsi%, Fenwick% and expected goals.
Try it
500 credits free on signup — 50 calls to get_shot_map — and no card.