NHL API

Realtime Sports API serves NHL games through the same REST endpoints and JSON schema as every other league, using sport=hockey and league=nhl. You get the current scoreboard, live scores, game detail, play-by-play, teams, rosters and news, plus current odds and line history from a single source book and the injury report. Not currently available or not verified for this league: box scores. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Slugs
sport=hockey
league=nhl
Teams
32
Season (from data)
2026-27 Regular Season
In the scoreboard now
5 games, 3 live

Upcoming and live NHL games

NHL games from the API
DateAwayHomeTime / ResultTVVenue
Sun, Oct 4Florida PanthersAnaheim Ducks1 - 2 18:07 - 3rd PeriodHonda Center · Anaheim, CA
Sun, Oct 4Calgary FlamesSeattle Kraken0 - 5 End of 2nd PeriodClimate Pledge Arena · Seattle, WA
Sun, Oct 4Vegas Golden KnightsVancouver Canucks0 - 1 17:45 - 2nd PeriodRogers Arena · Vancouver, BC

From the /events endpoint for this league, refreshed every few minutes. Times are US Eastern. Full NHL schedule

Live example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/events?limit=1"

Response captured from live data at 2026-10-05 02:07 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key.

Response

{
  "success": true,
  "data": [
    {
      "id": "401892442",
      "uid": "s:70~l:90~e:401892442",
      "name": "Winnipeg Jets at Detroit Red Wings",
      "shortName": "WPG @ DET",
      "date": "2026-10-04T17:00Z",
      "status": {
        "state": "post",
        "completed": true,
        "period": 3,
        "clock": "0:00",
        "detail": "Final",
        "halftime": false,
        "firstHalfEnded": true
      },
      "homeTeam": {
        "id": "5",
        "name": "Detroit Red Wings",
        "abbreviation": "DET",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0JVl9AUlxGB0gdSkoYVg",
        "color": "e30526",
        "winner": false,
        "score": 2
      },
      "awayTeam": {
        "id": "28",
        "name": "Winnipeg Jets",
        "abbreviation": "WPG",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0JVl9AUlxGFF0OSkoYVg",
        "color": "002d62",
        "winner": true,
        "score": 3
      },
      "competition": {
        "attendance": 17426,
        "neutralSite": false,
        "conferenceCompetition": false,
        "divisionCompetition": false,
        "playByPlayAvailable": true,
        "highlightsAvailable": true
      },
      "venue": {
        "id": "5404",
        "name": "Little Caesars Arena",
        "city": "Detroit",
        "state": "MI",
        "indoor": true,
        "grass": false
      },
      "notes": [],
      "season": {
        "year": 2027,
        "displayName": "2026-27",
        "type": {
          "id": "2",
          "name": "Regular Season",
          "abbreviation": "reg"
        },
        "week": {}
      },
      "broadcasts": [
        {
          "network": {
            "id": "1",
            "type": "National"
          },
          "type": "TV"
        },
        {
          "network": {
            "id": "2",
            "type": "Home"
          },
          "type": "Streaming"
        }
      ],
      "officials": [
        {
          "id": "2127637",
          "fullName": "Ryan Gibbons",
          "displayName": "Ryan Gibbons",
          "order": 0,
          "position": "Linesman"
        },
        {
          "id": "2553171",
          "fullName": "Gord Dwyer",
          "displayName": "Gord Dwyer",
          "order": 0,
          "position": "Referee"
        },
        {
          "id": "4738750",
          "fullName": "Corey Syvret",
          "displayName": "Corey Syvret",
          "order": 0,
          "position": "Referee"
        },
        "... 1 more"
      ]
    }
  ],
  "meta": {
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1793491200000
    }
  }
}

NHL endpoints

Checked against live data on 2026-10-04. Paths are relative to /api/v1/sports/hockey/leagues/nhl.

EndpointPathNHLNotes
Live scores/events/liveAvailable
Events (scoreboard)/eventsAvailable
Event detail/events/{eventId}Available
Play-by-play/events/{eventId}/playsAvailable
Box score/events/{eventId}/boxscoreNot available
Odds/events/{eventId}/oddsAvailable
Win probability/events/{eventId}/winprobabilityNot available
Teams/teamsAvailable
Rosters/teams/{teamId}/rosterAvailable
Athletes/athletes/searchAvailable
Injuries/injuriesAvailable
News/newsAvailable
Schedule / weeks/seasons/{season}/scheduleAvailable
NCAA tournament/seasons/{season}/tournamentNot available
Webhooks/webhooksAvailable
WebSocket/websocket/authAvailable
  • Schedules are by date, not week: use /events for the current scoreboard and /seasons/{season}/schedule for a season. Week parameters return SCHEDULE_WEEKS_NOT_SUPPORTED.

Event object fields

Every NHL game in the events, live and schedule endpoints uses the same Event object as other leagues.

FieldTypeNotes
idstringEvent id; use it with the detail, plays, box score and odds endpoints.
uidstring
namestringFull matchup name.
shortNamestringAbbreviated matchup, e.g. "AWAY @ HOME".
datestringStart time, ISO-8601 UTC.
statusEventStatusstate (pre, in, post), completed, period, clock and display detail.
homeTeamEventTeamid, name, abbreviation, colors, logo (proxied), record, score, winner.
awayTeamEventTeamSame shape as homeTeam.
competitionobjectattendance, neutralSite, conference/division flags, playByPlayAvailable.
venueobjectVenue id, name, city, state, indoor, grass (null when unknown).
notesstring[]Headline notes, e.g. round or rivalry names.
seasonobjectyear, type (preseason/regular/postseason) and week where the league uses weeks.
broadcastsobject[]TV/stream networks for the game.
officialsobject[]Game officials when published.
oddsOddsOnly with includeOdds=true and when the game has odds.

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/events?limit=5"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/events?limit=5", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/hockey/leagues/nhl/events?limit=5",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

MCP prompt (Claude, Cursor, ChatGPT)

Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_events with sport "hockey" and league "nhl" and list the games it returns with start times, status and scores for NHL.

Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

29 leagues monitored live: NFL, college football, NBA, men's college basketball, MLB, NHL and 23 soccer competitions.

FAQ

Is there a free NHL API?
Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. The same key works for all 29 leagues.
How fresh is the NHL data?
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA. It is not intended for in-play betting that needs sub-second data.
Which NHL endpoints are available?
Available: live scores, events (scoreboard), event detail, play-by-play, odds, teams, rosters, athletes, injuries, news, schedule / weeks. Not available or not verified: box score (not available), win probability (not available), ncaa tournament (not available).
Does the NHL API include betting odds?
Yes. Upcoming NHL games returned a spread, moneyline and total when we checked, from a single source book, with line history. It is not a multi-book comparison feed and not suited to sub-second in-play betting.
Does it include NHL injuries?
Yes. The injuries endpoint returned current NHL designations grouped by team, and player-availability normalizes them to values like OUT and QUESTIONABLE. Pass team for a complete team report.
Can I get NHL score updates pushed instead of polling?
Yes. Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview. Both can be filtered to nhl.