# 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/workflows/nhl
- Handle: `@nhl`
- Category: [Sports](https://fous.com/workflows/category/sports)
- Source website: https://nhl.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with NHL.

## Methods

### Get player stats

Operation `get_player_stats`, version 1. 1 credit per call.

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 call.

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 call.

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-07-01"` | Requested standings date. |
| `teams` | array |  | Teams ordered by conference, division, and division rank. |
| `teams[].team` | string |  | Team name. |
| `teams[].wins` | integer |  | Wins. |
| `teams[].losses` | integer |  | Regulation losses. |
| `teams[].points` | integer |  | Standings points. |
| `teams[].division` | string or null |  | Division name. |
| `teams[].page_url` | string |  | Official team page, or standings page when no team page is listed. |
| `teams[].goals_for` | integer |  | Goals scored. |
| `teams[].conference` | string or null |  | Conference name. |
| `teams[].league_rank` | integer or null |  | Rank in league. |
| `teams[].games_played` | integer |  | Games played. |
| `teams[].division_rank` | integer or null |  | Rank in division. |
| `teams[].goals_against` | integer |  | Goals allowed. |
| `teams[].current_streak` | string or null |  | Current winning or losing streak in words. |
| `teams[].conference_rank` | integer or null |  | Rank in conference. |
| `teams[].goal_difference` | integer |  | Goals scored minus goals allowed. |
| `teams[].overtime_losses` | integer |  | Overtime losses. |
| `teams[].points_percentage` | number or null |  | 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
{
  "date": "2026-07-01"
}
```

**Example output**

```json
{
  "date": "2026-07-01",
  "teams": [],
  "message": "No NHL standings are available for 2026-07-01."
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@nhl","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with NHL?

No. Fous is not affiliated with NHL. This workflow reads the public nhl.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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 workflows](https://fous.com/workflows/category/sports)
