# NHL API

> NHL returns game scores, team standings, and player statistics as a workflow and API.

NHL’s Get scores returns games, scores, and details for a date, with optional team and time zone inputs. NHL’s Get standings returns team records and rankings for a date. NHL’s Get player stats returns a player profile and regular-season statistics for a required player and optional season.

- Page: https://fous.com/tools/nhl
- Handle: `@nhl`
- Category: [Sports](https://fous.com/tools/category/sports)
- Source website: https://nhl.com
- Last verified: Sep 29, 2026

## Methods

### Get player stats

Operation `get_player_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get an NHL player’s profile and NHL regular-season stats for a selected season and career. Without a season, uses the latest season with recorded regular-season games; seasons without games return null stats.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `player` | string | yes | `"Connor McDavid"` | Player name, NHL player link, or player ID, e.g. Connor McDavid. |
| `season` | integer | no | `2025` | Starting year of the season, e.g. 2025 for 2025–26. Omit for latest season with recorded games. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "player"
  ],
  "properties": {
    "player": {
      "type": "string",
      "description": "Player name, NHL player link, or player ID, e.g. Connor McDavid.",
      "examples": [
        "Connor McDavid",
        "Igor Shesterkin",
        "Mikko Rantanen"
      ]
    },
    "season": {
      "type": "integer",
      "description": "Starting year of the season, e.g. 2025 for 2025–26. Omit for latest season with recorded games.",
      "examples": [
        2025,
        2024
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "player": "Connor McDavid",
      "season": 2025
    },
    {
      "player": "Igor Shesterkin"
    },
    {
      "player": "Mikko Rantanen",
      "season": 2024
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `age` | integer or null | `29` | Age in years today. |
| `name` | string | `"Connor McDavid"` | Player name. |
| `team` | string or null | `"Edmonton Oilers"` | Current NHL team, or most recent NHL team if no longer active. |
| `season` | string | `"2025-26"` | Selected NHL season, such as 2025-26. |
| `country` | string or null | `"Canada"` | Country of birth. |
| `position` | string or null | `"Center"` | Playing position. |
| `player_id` | integer | `8478402` | NHL player ID. |
| `player_link` | string | `"https://www.nhl.com/player/connor-mcdavid-8478402"` | NHL player page. |
| `career_stats` | object |  | NHL regular-season career totals. |
| `career_stats.wins` | integer or null | `187` | NHL regular-season wins. |
| `career_stats.goals` | integer or null | `409` | NHL regular-season goals. |
| `career_stats.losses` | integer or null | `107` | NHL regular-season losses. |
| `career_stats.points` | integer or null | `1220` | NHL regular-season points. |
| `career_stats.assists` | integer or null | `811` | NHL regular-season assists. |
| `career_stats.shutouts` | integer or null | `22` | NHL regular-season shutouts. |
| `career_stats.plus_minus` | integer or null | `186` | NHL regular-season plus minus. |
| `career_stats.games_played` | integer or null | `794` | NHL regular-season games played. |
| `career_stats.penalty_minutes` | integer or null | `330` | NHL regular-season penalty minutes. |
| `career_stats.save_percentage` | number or null | `0.916614` | NHL regular-season save percentage. |
| `career_stats.goals_against_average` | number or null | `2.519471` | NHL regular-season goals against average. |
| `season_stats` | object |  | NHL regular-season statistics across all teams in this season. |
| `season_stats.wins` | integer or null | `25` | NHL regular-season wins. |
| `season_stats.goals` | integer or null | `48` | NHL regular-season goals. |
| `season_stats.losses` | integer or null | `19` | NHL regular-season losses. |
| `season_stats.points` | integer or null | `138` | NHL regular-season points. |
| `season_stats.assists` | integer or null | `90` | NHL regular-season assists. |
| `season_stats.shutouts` | integer or null | `1` | NHL regular-season shutouts. |
| `season_stats.plus_minus` | integer or null | `17` | NHL regular-season plus minus. |
| `season_stats.games_played` | integer or null | `82` | NHL regular-season games played. |
| `season_stats.penalty_minutes` | integer or null | `44` | NHL regular-season penalty minutes. |
| `season_stats.save_percentage` | number or null | `0.911579` | NHL regular-season save percentage. |
| `season_stats.goals_against_average` | number or null | `2.499821` | NHL regular-season goals against average. |
| `jersey_number` | integer or null | `97` | Jersey number. |
| `shoots_or_catches` | string or null | `"Left"` | Shoots or catches left or right. |
| `headshot_image_link` | string or null | `"https://assets.nhle.com/mugs/nhl/20262027/EDM/8478402.png"` | Player headshot image link. |

**Example input**

```json
{
  "player": "Connor McDavid",
  "season": 2025
}
```

**Example output**

```json
{
  "age": 29,
  "name": "Connor McDavid",
  "team": "Edmonton Oilers",
  "season": "2025-26",
  "country": "Canada",
  "position": "Center",
  "player_id": 8478402,
  "player_link": "https://www.nhl.com/player/connor-mcdavid-8478402",
  "career_stats": {
    "wins": null,
    "goals": 409,
    "losses": null,
    "points": 1220,
    "assists": 811,
    "shutouts": null,
    "plus_minus": 186,
    "games_played": 794,
    "penalty_minutes": 330,
    "save_percentage": null,
    "goals_against_average": null
  },
  "season_stats": {
    "wins": null,
    "goals": 48,
    "losses": null,
    "points": 138,
    "assists": 90,
    "shutouts": null,
    "plus_minus": 17,
    "games_played": 82,
    "penalty_minutes": 44,
    "save_percentage": null,
    "goals_against_average": null
  },
  "jersey_number": 97,
  "shoots_or_catches": "Left",
  "headshot_image_link": "https://assets.nhle.com/mugs/nhl/20262027/EDM/8478402.png"
}
```

### Get scores

Operation `get_scores`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get NHL games and scores for a date, optionally limited to one team. Start times use your chosen time zone; scores and game details are available when NHL publishes them.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `date` | string | no | `"2026-09-29"` | NHL schedule date, such as 2026-09-29. Defaults to today. |
| `team` | string | no | `"Leafs"` | Team name or nickname to include, such as Toronto Maple Leafs or Leafs. |
| `time_zone` | string | no | `"America/New_York"` | Time zone for game start times, such as America/Los_Angeles. Defaults to US Eastern. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "format": "date",
      "description": "NHL schedule date, such as 2026-09-29. Defaults to today.",
      "examples": [
        "2026-09-29",
        "2026-09-28",
        "2026-04-15"
      ]
    },
    "team": {
      "type": "string",
      "default": "",
      "description": "Team name or nickname to include, such as Toronto Maple Leafs or Leafs.",
      "examples": [
        "Leafs",
        "Utah Hockey Club"
      ]
    },
    "time_zone": {
      "type": "string",
      "default": "America/New_York",
      "description": "Time zone for game start times, such as America/Los_Angeles. Defaults to US Eastern.",
      "examples": [
        "America/New_York",
        "America/Los_Angeles"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "date": "2026-09-29",
      "team": "Leafs",
      "time_zone": "America/New_York"
    },
    {
      "date": "2026-09-28"
    },
    {
      "date": "2026-04-15",
      "time_zone": "America/Los_Angeles"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `games` | array |  |  |
| `games[].arena` | string or null | `"Scotiabank Arena"` |  |
| `games[].period` | string or null |  | Current period during a live game, otherwise null. |
| `games[].status` | string | `"scheduled"` |  |
| `games[].game_id` | integer | `2026020002` |  |
| `games[].away_team` | string | `"Montréal Canadiens"` |  |
| `games[].game_link` | string | `"https://www.nhl.com/gamecenter/mtl-vs-tor/2026/09/29/2026020002"` |  |
| `games[].home_team` | string | `"Toronto Maple Leafs"` |  |
| `games[].away_goals` | integer or null | `4` |  |
| `games[].home_goals` | integer or null | `3` |  |
| `games[].start_time` | string | `"2026-09-29T19:00:00-04:00"` | Game start time in the selected time zone (ISO 8601). |
| `games[].tv_networks` | array |  |  |
| `games[].time_remaining` | string or null |  | Time remaining in the current period during a live game, otherwise null. |
| `games[].away_shots_on_goal` | integer or null | `28` |  |
| `games[].home_shots_on_goal` | integer or null | `24` |  |

**Example input**

```json
{
  "date": "2026-09-29",
  "team": "Leafs",
  "time_zone": "America/New_York"
}
```

**Example output**

```json
{
  "games": [
    {
      "arena": "Scotiabank Arena",
      "period": null,
      "status": "scheduled",
      "game_id": 2026020002,
      "away_team": "Montréal Canadiens",
      "game_link": "https://www.nhl.com/gamecenter/mtl-vs-tor/2026/09/29/2026020002",
      "home_team": "Toronto Maple Leafs",
      "away_goals": null,
      "home_goals": null,
      "start_time": "2026-09-29T19:00:00-04:00",
      "tv_networks": [
        "SN",
        "TVAS"
      ],
      "time_remaining": null,
      "away_shots_on_goal": null,
      "home_shots_on_goal": null
    }
  ]
}
```

### Get standings

Operation `get_standings`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get NHL standings as of a date, ordered by conference, division, and division rank. Dates outside a season return a message and no teams; statistics not yet available are null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `date` | string | no | `"2025-12-01"` | Standings date in YYYY-MM-DD; defaults to today. Example: 2025-12-01. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "format": "date",
      "description": "Standings date in YYYY-MM-DD; defaults to today. Example: 2025-12-01.",
      "examples": [
        "2025-12-01",
        "2026-07-01"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {},
    {
      "date": "2025-12-01"
    },
    {
      "date": "2026-07-01"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `date` | string | `"2026-09-29"` | Requested standings date. |
| `teams` | array |  | Teams ordered by conference, division, and division rank. |
| `teams[].team` | string | `"Boston Bruins"` | Team name. |
| `teams[].wins` | integer | `0` | Wins. |
| `teams[].losses` | integer | `0` | Regulation losses. |
| `teams[].points` | integer | `0` | Standings points. |
| `teams[].division` | string or null | `"Atlantic"` | Division name. |
| `teams[].page_url` | string | `"https://www.nhl.com/bruins"` | Official team page, or standings page when no team page is listed. |
| `teams[].goals_for` | integer | `0` | Goals scored. |
| `teams[].conference` | string or null | `"Eastern"` | Conference name. |
| `teams[].league_rank` | integer or null | `2` | Rank in league. |
| `teams[].games_played` | integer | `0` | Games played. |
| `teams[].division_rank` | integer or null | `1` | Rank in division. |
| `teams[].goals_against` | integer | `0` | Goals allowed. |
| `teams[].current_streak` | string or null | `"Won 7"` | Current winning or losing streak in words. |
| `teams[].conference_rank` | integer or null | `1` | Rank in conference. |
| `teams[].goal_difference` | integer | `0` | Goals scored minus goals allowed. |
| `teams[].overtime_losses` | integer | `0` | Overtime losses. |
| `teams[].points_percentage` | number or null | `0.68` | Share of possible standings points, from 0 to 1. |
| `message` | string or null | `"No NHL standings are available for 2026-07-01."` | Explains when there are no standings for the date. |

**Example input**

```json
{}
```

**Example output**

```json
{
  "date": "2026-09-29",
  "teams": [
    {
      "team": "Boston Bruins",
      "wins": 0,
      "losses": 0,
      "points": 0,
      "division": "Atlantic",
      "page_url": "https://www.nhl.com/bruins",
      "goals_for": 0,
      "conference": "Eastern",
      "league_rank": 2,
      "games_played": 0,
      "division_rank": 1,
      "goals_against": 0,
      "current_streak": null,
      "conference_rank": 1,
      "goal_difference": 0,
      "overtime_losses": 0,
      "points_percentage": null
    },
    {
      "team": "Buffalo Sabres",
      "wins": 0,
      "losses": 0,
      "points": 0,
      "division": "Atlantic",
      "page_url": "https://www.nhl.com/sabres",
      "goals_for": 0,
      "conference": "Eastern",
      "league_rank": 3,
      "games_played": 0,
      "division_rank": 2,
      "goals_against": 0,
      "current_streak": null,
      "conference_rank": 2,
      "goal_difference": 0,
      "overtime_losses": 0,
      "points_percentage": null
    },
    {
      "team": "Detroit Red Wings",
      "wins": 0,
      "losses": 0,
      "points": 0,
      "division": "Atlantic",
      "page_url": "https://www.nhl.com/redwings",
      "goals_for": 0,
      "conference": "Eastern",
      "league_rank": 10,
      "games_played": 0,
      "division_rank": 3,
      "goals_against": 0,
      "current_streak": null,
      "conference_rank": 5,
      "goal_difference": 0,
      "overtime_losses": 0,
      "points_percentage": null
    }
  ],
  "message": null
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@nhl",
  "visibility": "public",
  "operation": "get_player_stats",
  "version": 1,
  "input": {
    "player": "Connor McDavid",
    "season": 2025
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@nhl\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_player_stats\",\n  \"version\": 1,\n  \"input\": {\n    \"player\": \"Connor McDavid\",\n    \"season\": 2025\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@nhl",
  "visibility": "public",
  "operation": "get_player_stats",
  "version": 1,
  "input": {
    "player": "Connor McDavid",
    "season": 2025
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/nhl`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_player_stats`: Get player stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_scores`: Get scores. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_standings`: Get standings. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-nhl https://api.fous.com/mcp/tools/nhl --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Track NHL game scores by date and team
- Review team records and division rankings
- Compare standings across dates
- Analyze player season and career statistics

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this NHL tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a NHL account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from nhl.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What are the NHL scores for a date?

Get scores returns games and scores for a date, optionally limited to a team and shown in a chosen time zone.

### How are NHL teams ranked?

Get standings returns teams ordered by conference, division, and division rank for the requested date.

### What are a player's NHL season and career stats?

Get player stats returns regular-season statistics for a selected season and career. Provide the player’s name, NHL link, or player ID.

## Related

- [MLB API](https://fous.com/tools/mlb.md): MLB provides scores, schedules and game details for one date or up to seven days, regular-season division standings defaulting to the current year, and player profiles with regular-season stats for a selected season and career.
- [NFL API](https://fous.com/tools/nfl.md): NFL provides weekly scores and schedules, regular-season standings, current rosters, and player season and career stats; released players are excluded, and ages or stats may be unavailable.
- [Yahoo Sports API](https://fous.com/tools/yahoo-sports.md): Yahoo Sports returns date-based scores and schedules, seasonal standings, and player regular-season and career stats when Yahoo provides them; unavailable data may be missing.
- [NBA API](https://fous.com/tools/nba.md): NBA provides up-to-seven-day schedules and scores, seasonal standings, player bios and available regular-season averages, plus matchup box scores, with undated matchups showing the latest.
- [ESPN API](https://fous.com/tools/espn.md): ESPN provides daily scores and schedules, team results, player statistics, matchup summaries, and latest topic-specific headlines; coverage and published details vary, especially for college and soccer.
- [NCAA API](https://fous.com/tools/ncaa.md): NCAA provides college sports scores and schedules from NCAA.com, including date-based games or football weeks, plus latest NCAA.com Top 25 rankings where published.
- [Sports Reference API](https://fous.com/tools/sports-reference.md): Sports Reference provides regular-season career stats, awards and season records across basketball, football, baseball and hockey, plus season leaders using the latest published season if unspecified.
- [Premier League API](https://fous.com/tools/premier-league.md): Premier League provides current/chosen-season tables and recent form, date-range fixtures/results (up to 380), player profiles and stats, and seasonal leaders; older-season stats may be limited.
- [All Sports tools](https://fous.com/tools/category/sports)
