---
title: "Goalie stats"
method: POST
path: "/v1/get_goalie_stats"
tags: ["Stats + aggregation"]
---

# Goalie stats

`POST /v1/get_goalie_stats`

## Request

- Base URL: `https://mcp.puckapi.com`
- URL: `https://mcp.puckapi.com/v1/get_goalie_stats`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Use when ranking goalies or comparing goalie performance. Returns a leaderboard sorted by save%, GAA, GSAX, or wins, with a games-played filter. Includes goals saved above expected, high-danger save%, rolling save% and GSAX over the last 10 appearances, form trend and rest days. Goalie expected goals cover every strength, unlike the 5v5-only team possession columns. Costs 5 credits.

## Request body

- object
  - `team` string: Filter by team abbreviation
  - `season` string: Season ID, 8-digit (e.g. 20242025 for 2024-25). 2024-25 and 2024-2025 also accepted. Defaults to the most recent season with stats, which is the current season once it is under way and the previous one before that. The season actually used is echoed in filters.season.
  - `min_games` integer: Minimum games played (default 10; early in a season, half the most games anyone has played so far)
  - `sort_by` 'save_pct' | 'gaa' | 'gsax' | 'wins': Sort metric (default save_pct). gsax is goals saved above expected.
  - `limit` integer: Max results (default 20)
  - `league` 'nhl' | 'pwhl' | 'ohl' | 'whl' | 'qmjhl' | 'echl' | 'ahl' | 'ushl': League. Defaults to nhl. One of: nhl, pwhl, ohl, whl, qmjhl, echl, ahl, ushl.

## Response `200`

The result, wrapped in data.

- object
  - `data` object, required
    - `goalies` object[], required
      - `playerId` number, required
      - `playerName` string, required
      - `team` string, nullable, required
      - `teamName` string, nullable, required
      - `gamesPlayed` number, nullable, required
      - `wins` number, nullable, required
      - `losses` number, nullable, required
      - `otLosses` number, nullable, required
      - `savePct` number, nullable, required
      - `gaa` number, nullable, required
      - `gsax` number, nullable, required
      - `shutouts` number, nullable, required
      - `highDangerSavePct` number, nullable, required
      - `rollingSavePct` number, nullable, required
      - `trend` string, nullable, required
      - `restDays` number, nullable, required
      - `snapshotDate` string, nullable, required
    - `count` number, required
    - `filters` object, required
      - `season` string, nullable, required
      - `min_games` number, required
      - `sort_by` string, required

## Other responses

- `400`: Invalid arguments.
- `401`: Missing or invalid API key.
- `402`: Not enough credits.
- `429`: Rate limited.

---

[API](https://skmtc.dev/puckapi/apis/puckapi-api.md) · [All operations](https://skmtc.dev/puckapi/apis/puckapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/puckapi/apis/puckapi-api/revisions/99b3e5171ab4?raw)
