get_goalie_stats
Goalie leaderboard sorted by save%, GAA, GSAX or wins, with high-danger save%, recent form and rest days.
When to use it
You want to rank goalies across the league or within a team. GSAX (goals saved above expected) is the advanced metric that tells you who's actually good versus who plays behind a strong defense.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| team | string | no | Filter by team abbreviation |
| season | string | no | Season (e.g. "20252026") |
| min_games | integer | no | Minimum games played (default 10) |
| sort_by | string | no | save_pct, gaa, gsax, or wins |
| limit | integer | no | Max results (1-50, default 20) |
Request
curl -X POST https://mcp.puckapi.com/v1/get_goalie_stats \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"sort_by": "gsax",
"limit": 3
}'Over MCP, ask for it in plain English and the client calls get_goalie_stats itself. Point any MCP client at https://mcp.puckapi.com/mcp?key=YOUR_API_KEY.
Response
{
"goalies": [
{
"playerId": 8480313,
"playerName": "Logan Thompson",
"team": "WSH",
"gamesPlayed": 58,
"wins": 35,
"losses": 16,
"savePct": 0.913,
"gaa": 2.45,
"gsax": 34.5,
"shutouts": 4,
"expectedGoalsAgainst": 175.1,
"highDangerSavePct": 0.883,
"rollingSavePct": 0.905,
"rollingGsax": 2.1,
"trend": "down",
"restDays": 1
},
{
"playerId": 8478009,
"playerName": "Ilya Sorokin",
"team": "NYI",
"gamesPlayed": 55,
"wins": 29,
"losses": 24,
"savePct": 0.906,
"gaa": 2.68,
"gsax": 28.5,
"shutouts": 7,
"expectedGoalsAgainst": 172.5,
"highDangerSavePct": 0.894,
"rollingSavePct": 0.922,
"rollingGsax": -3.6,
"trend": "down",
"restDays": 1
},
{
"playerId": 8480280,
"playerName": "Jeremy Swayman",
"team": "BOS",
"gamesPlayed": 55,
"wins": 31,
"losses": 18,
"savePct": 0.908,
"gaa": 2.71,
"gsax": 25,
"shutouts": 2,
"expectedGoalsAgainst": 171,
"highDangerSavePct": 0.895,
"rollingSavePct": 0.945,
"rollingGsax": 7,
"trend": "stable",
"restDays": 3
}
]
}Response fields
| Field | Type | Description |
|---|---|---|
| goalies[].playerId | integer | Player ID |
| goalies[].playerName | string | Goalie name |
| goalies[].team | string | Team abbreviation |
| goalies[].teamName | string | Full team name |
| goalies[].gamesPlayed | integer | Games played |
| goalies[].wins | integer | Wins |
| goalies[].losses | integer | Losses |
| goalies[].otLosses | integer | Overtime losses |
| goalies[].savePct | number | Save percentage |
| goalies[].gaa | number | Goals against average |
| goalies[].gsax | number | Goals saved above expected |
| goalies[].shutouts | integer | Shutouts |
| goalies[].highDangerSavePct | number | Save percentage on shots inside the slot, about a quarter of all shots |
| goalies[].rollingSavePct | number | Save percentage over the last 10 appearances |
| goalies[].trend | string | Recent form against the season: up, down or stable |
| goalies[].restDays | integer | Days since last start |
Related endpoints
Takes the player_id this one returns.
Player bio and goalie stats (if goalie). For skaters, returns bio info and team context.
Returns the team this one takes.
All 32 active NHL teams with divisions, conferences, and arenas.
Returns the team this one takes.
Current standings with points, point pace, goal differential, and 5v5 possession: Corsi%, Fenwick% and expected goals.
Takes the player_id this one returns.
Play-by-play events with rink coordinates, strength state, and the players involved.
Try it
500 credits free on signup — 100 calls to get_goalie_stats — and no card.