BYTETOOLS

NHL Web API

Free NHL API with no key: live scores, standings, team rosters, player statistics and schedules from the official NHL data service. Tested curl example.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the NHL Web API?

The NHL Web API is a free, key-free service providing official National Hockey League data — live scores, standings, schedules, team rosters and detailed player statistics.

The NHL publishes an unusually complete free API with no key requirement. Standings, schedules, box scores, play-by-play and player statistics are all available, and the data is official rather than scraped.

It is undocumented in the formal sense — the NHL does not publish a developer portal — but the endpoints are stable and widely used by the hockey analytics community. The `/standings/now` path is a convenient alias that redirects to the current date.

Quick facts

Base URL
https://api-web.nhle.com/v1
Authentication
No API key required. The API is officially undocumented but publicly accessible.
Rate limit
No published limit; reasonable use expected.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the NHL Web API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch current NHL standings

GET https://api-web.nhle.com/v1/standings/now

curl
curl 'https://api-web.nhle.com/v1/standings/now'
JavaScript (fetch)
const res = await fetch("https://api-web.nhle.com/v1/standings/now");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api-web.nhle.com/v1/standings/now", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "wildCardIndicator": true,
  "standingsDateTimeUtc": "2026-08-19T20:28:15Z",
  "standings": [
    {
      "clinchIndicator": "p",
      "conferenceAbbrev": "W",
      "conferenceHomeSequence": 1,
      "conferenceL10Sequence": 2,
      "conferenceName": "Western",
      "conferenceRoadSequence": 1,
      "conferenceSequence": 1,
      "date": "2026-04-17",
      "divisionAbbrev": "C",
      "divisionHomeSequence": 1,
      "divisionL10Sequence": 1,
      "divisionName": "Central",
      "divisionRoadSequence": 1,
      "divisionSequence": 1,
      "gameTypeId": 2,
      "gamesPlayed": 82,
      "goalDifferential": 99,
      "goalDifferentialPctg": 1.207317,
      "goalAgainst": 203,
      "goalFor": 302,
      "goalsForPctg": 3.682927,
      "homeGamesPlayed": 41,
      "homeGoalDifferential": 49,
      "homeGoalsAgainst": 108,
      "homeGoalsFor": 157,
      "homeLosses": 9,
      "homeOtLosses": 6,
      "homePoints": 58,
      "homeRegulationPlusOtWins": 25,
      "homeRegulationWins": 25,
      "homeTies": 0,
      "homeWins": 26,
      "l10GamesPlayed": 10,
      "l10GoalDifferential": 14,
      "l10GoalsAgainst": 20,
      "l10GoalsFor": 34,
      "l10Losses": 2,
      "l10OtLosses": 1,
      "l10Points": 15,
      "l10RegulationPlusOtWins": 6,
      "l10RegulationWins": 6,
      "l10Ties": 0,
      "l10Wins": 7,
      "leagueHomeSequence": 3,
      "leagueL10Sequence": 4,
      "leagueRoadSequence": 1,
      "leagueSequence": 1,
      "losses": 16,
      "otLosses": 11,
      "placeName": {
        "default": "Colorado"
      },
      "pointPctg": 0.737805,

Parameters

ParameterTypeRequiredDescription
standings/nowpathOptionalCurrent standings; redirects to today's date. standings/now
standings/<date>pathOptionalStandings as of a specific date. 2026-01-15
club-schedule-season/<team>/nowpathOptionalFull season schedule for a team. TOR
player/<id>/landingpathOptionalPlayer profile and career statistics. 8478402
gamecenter/<gameId>/boxscorepathOptionalBox score for a game. 2023020204

Response fields

standings[].teamNameobject
Team name with localised variants.
standings[].pointsinteger
Points in the standings.
standings[].wins / losses / otLossesinteger
Win-loss record including overtime losses.
standings[].conferenceAbbrev / divisionAbbrevstring
Conference and division.
standings[].clinchIndicatorstring
Playoff clinch status such as `p` for presidents trophy or `x` for clinched.
standingsDateTimeUtcstring
Timestamp the standings were generated.

What you can build with the NHL Web API

  • Build an NHL standings or scoreboard display
  • Track a team's schedule and results through a season
  • Analyse player statistics for fantasy hockey
  • Create hockey analytics tooling with official data

Common errors and how to fix them

404

Wrong path structure or an invalid team abbreviation.

Fix: Team codes are three-letter uppercase, e.g. TOR, BOS, EDM.

Endpoints change without notice

The API is officially undocumented.

Fix: The community reference on GitHub is the practical source of truth; pin behaviour with tests.

Empty standings out of season

No games have been played yet.

Fix: Handle the off-season case; standings for a future date return an empty or zeroed structure.

NHL Web API — frequently asked questions

Is the NHL API free?

Yes, free with no API key. It is officially undocumented but publicly accessible and widely used by the hockey analytics community.

Where is the documentation?

The NHL does not publish a developer portal. A community-maintained reference on GitHub documents the endpoints, and it is the practical source of truth.

Does it provide live scores?

Yes, the gamecenter endpoints provide live box scores and play-by-play during games.

Is it stable enough to build on?

The endpoints have been stable in practice, but because it is undocumented the NHL could change it without notice. Write tests around your integration.

Tools that pair with this API

NHL Web API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.