NewConnect Claude, Gemini, ChatGPT, and other AI agents to API Ninjas via our MCP server →

Hockey API

The Hockey API is an ice hockey API for the NHL: get the schedule, live scores with the period, clock and intermissions on paid plans, final scores by period with overtime and shootout results, standings with points, regulation wins and wild-card positions, and every team's roster of forwards, defensemen and goalies. league=nhl is the default, so no league parameter is needed. The free plan covers the current season's schedule, final scores, standings and rosters.

Available endpoints:

League guides: NHL API. One API key works for every sports API.

Ice hockey data at a glance

PeriodsThree 20-minute periods; period counts on into overtime (4, and more in the playoffs)
Overtime and shootoutsdecided_in is regulation, overtime or shootout. A shootout decides the winner and adds one goal to its final score, but is not a period, so it is not in period_scores
Live gamesOn paid plans: the score, period, time left and intermission between periods
PointsTwo points for a win and one for an overtime or shootout loss, in points, ot_losses and point_pct
Tiebreaksregulation_wins is the first standings tiebreaker; wildcard_rank and clinched track the playoff race
Season valueseason=2026 is the 2026-27 season
RostersPosition (C, L, R, D, G), sweater number, shoots or catches (shoots_catches), height, weight, birth date and birthplace

League

LeagueWhat you getLeague value
NHLSchedules, live and final scores by period with overtime and shootouts, standings with points, teams and rostersnhl
4 endpoints

https://api.api-ninjas.com/v1/hockeygames

Returns schedules, live scores and final scores. Ask for one day, a team's season or one game; with no parameters you get today's games. Paid plans see games in progress with the score, period and clock updated throughout the game; the free plan sees their status and the final score once they end. The free plan covers the current season. Developer plans add the three previous seasons, and the Business tier and above gets the full season archive.

Parameters

Every parameter is optional; league defaults to nhl.

  • league  optional

    Optional: nhl, the default.

  • date  optional

    Game day in the league's home time zone (YYYY-MM-DD). Defaults to today when no team or season is given.

  • team  optional

    Team id, abbreviation or name (e.g. TOR): that team's games in the season.

  • season  optional

    Season, as the year it starts (2026 = 2026-27). Defaults to the current season. On its own, returns the season's games 50 per page; use offset for the next page.

  • season_type  optional

    Only games of this part of the season.

  • status  optional

    Only games with this status.

  • game_id  optional

    Return one game.

  • limit  optional Premium only

    Games per page (1-500). Default 50.

  • offset  optional

    Games to skip, for paging. Default 0.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/hockeygames endpoint returns a JSON array of games in start order, or an error.

  • game_id

    Unique id of the game, e.g. nhl-20261020-sjs-mtl. It never changes, even when a game is moved to another date.

  • league

    nhl.

  • sport

    Always ice_hockey.

  • season

    Season, as the year it starts: 2026 is the 2026-27 season.

  • season_label

    Display form of the season, e.g. 2026-27.

  • season_type

    preseason, regular or postseason.

  • date

    Game day in US Eastern time (YYYY-MM-DD), so a West Coast night game keeps its US date.

  • start_time

    Scheduled start in UTC (ISO 8601).

  • status

    scheduled, in_progress, final, postponed, canceled, suspended (including abandoned soccer matches) or delayed (e.g. a baseball rain delay).

  • status_detail Premium only

    During a game: intermission between periods. Otherwise null. While a game is in progress, the free plan sees This field is for premium subscribers only.

  • period Live values: Premium

    Current period, or the last one played once the game is final. Overtime continues the count (4, and more in the playoffs). While a game is in progress, the free plan sees This field is for premium subscribers only.

  • clock Premium only

    While a game is in progress: time left in the period, e.g. 12:08. The free plan sees This field is for premium subscribers only.

  • home_team, away_team

    The teams: team_id, name and abbreviation, named as they were that season. A team that moved, such as the Atlanta Thrashers, has its own team_id.

  • home_score, away_score Live values: Premium

    Current or final score (goals, with one goal for the winner of a shootout); null before the game starts. While a game is in progress, the free plan sees This field is for premium subscribers only.

  • period_scores Live values: Premium

    Score per period for home and away, with each overtime period. A shootout is not a period, so it is not included. While a game is in progress, the free plan sees This field is for premium subscribers only.

  • decided_in

    For final games: regulation, overtime or shootout.

  • winner

    team_id of the winner once the game is final, including a shootout winner; null before that.

  • venue

    Where the game is played: name, city, state and country (ISO 3166-1 alpha-2).

  • neutral_site

    true when neither team is at home, e.g. international and outdoor games played away from either arena.

  • original_date

    For a game moved to another date: the date it was first scheduled for. Otherwise null.

  • updated_at

    When any field of the game last changed (UTC).

Live Demo

Live demo · no API key required
Query parameters
league
date
team
season
season_type
status
game_id
limit
offset

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/hockeygames
Sample response
[
{
"game_id": "nhl-20261020-sjs-mtl",
"league": "nhl",
"sport": "ice_hockey",
"season": 2026,
"season_label": "2026-27",
"season_type": "regular",
"date": "2026-10-20",
"start_time": "2026-10-20T23:00:00Z",
"status": "final",
"status_detail": null,
"period": 4,
"clock": null,
"home_team": {
"team_id": "nhl-mtl",
"name": "Montreal Canadiens",
"abbreviation": "MTL"
},
"away_team": {
"team_id": "nhl-sjs",
"name": "San Jose Sharks",
"abbreviation": "SJS"
},
"home_score": 3,
"away_score": 4,
"period_scores": {
"home": [
1,
2,
0,
0
],
"away": [
1,
0,
2,
1
]
},
"decided_in": "overtime",
"winner": "nhl-sjs",
"venue": {
"name": "Bell Centre",
"city": "Montreal",
"state": "QC",
"country": "CA"
},
"neutral_site": false,
"original_date": null,
"updated_at": "2026-10-23T03:18:35Z"
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/hockeygames" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/hockeystandings

Returns the league table for a season, ordered by league rank, or by conference or division rank when you filter. Tables update throughout the season, shortly after each game ends. The free plan covers the current season. Developer plans add the three previous seasons, and the Business tier and above gets the full season archive.

Parameters

  • league  optional

    Optional: nhl, the default.

  • season  optional

    Season, as the year it starts. Defaults to the current season.

  • conference  optional

    Only this conference, e.g. Western.

  • division  optional

    Only this division, e.g. Pacific.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/hockeystandings endpoint returns a JSON array of team rows, or an error. Fields that do not apply to a league are left out.

  • league, sport, season, season_label

    League, sport and season of the table.

  • team

    team_id, name and abbreviation, named as they were that season.

  • conference, division

    Conference and division that season, e.g. Eastern and Atlantic.

  • games_played, wins, losses

    Record.

  • points

    Standings points: two for a win, one for an overtime or shootout loss.

  • ot_losses, point_pct, regulation_wins

    Overtime and shootout losses, points percentage and regulation wins (the first tiebreaker).

  • goals_for, goals_against

    Goals scored and conceded.

  • goal_differential

    Goals for minus goals against.

  • streak

    Current streak, e.g. W2 or L1.

  • home_record, away_record

    Home and road records, e.g. 4-1 (NHL: wins-losses-overtime losses).

  • last_10

    Record over the last 10 games.

  • league_rank, conference_rank, division_rank

    Rank in the league, conference and division.

  • wildcard_rank, clinched

    Wild-card position and the clinching indicator the league publishes.

  • final

    true once the regular season is over and the table no longer changes.

Live Demo

Live demo · no API key required
Query parameters
league
season
conference
division

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/hockeystandings
Sample response
[
{
"league": "nhl",
"sport": "ice_hockey",
"season": 2026,
"season_label": "2026-27",
"team": {
"team_id": "nhl-car",
"name": "Carolina Hurricanes",
"abbreviation": "CAR"
},
"conference": "Eastern",
"division": "Metropolitan",
"games_played": 14,
"wins": 10,
"losses": 2,
"ot_losses": 2,
"points": 22,
"point_pct": 0.786,
"regulation_wins": 9,
"goals_for": 53,
"goals_against": 34,
"goal_differential": 19,
"streak": "W2",
"home_record": "3-1-1",
"away_record": "7-1-1",
"last_10": "8-1-1",
"league_rank": 1,
"conference_rank": 1,
"division_rank": 1,
"final": false
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/hockeystandings" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/hockeyteams

Lists teams with their league, conference, division and home venue. Available on every plan.

Parameters

  • league  optional

    Optional: nhl.

  • team  optional

    Team id, abbreviation or name (e.g. TOR): return one team.

  • conference  optional

    Only teams in this conference.

  • division  optional

    Only teams in this division.

  • active  optional

    false lists former teams that appear in past seasons.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/hockeyteams endpoint returns a JSON array of teams, or an error.

  • team_id

    Unique id, e.g. nhl-tor. Use it, the abbreviation or the name in other endpoints.

  • league

    The team's league.

  • sport

    Always ice_hockey.

  • abbreviation, name, city

    Identity of the team.

  • nickname, conference, division

    Nickname, current conference and division.

  • venue

    Home venue: name, city, state, country.

  • active

    false for teams that have since moved, such as the Atlanta Thrashers, which still appear in past seasons.

Live Demo

Live demo · no API key required
Query parameters
league
team
conference
division
active

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/hockeyteams
Sample response
[
{
"team_id": "nhl-tor",
"league": "nhl",
"sport": "ice_hockey",
"abbreviation": "TOR",
"name": "Toronto Maple Leafs",
"nickname": "Maple Leafs",
"city": "Toronto",
"conference": "Eastern",
"division": "Atlantic",
"venue": {
"name": "Scotiabank Arena",
"city": "Toronto",
"state": "ON",
"country": "CA"
},
"active": true
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/hockeyteams" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/hockeyplayers

Returns current rosters and player profiles, by team or by name. Rosters refresh every day. Available on every plan.

Parameters

Provide team or name, or a player_id.

  • league  optional

    Optional: nhl, the default.

  • team  optional

    Team id, abbreviation or name: that team's current roster.

  • name  optional

    Full or partial player name. Case and accents are ignored.

  • player_id  optional

    Return one player.

  • position  optional

    Only this position, e.g. C.

  • limit  optional Premium only

    Players per page (1-500). Default 50.

  • offset  optional

    Players to skip, for paging. Default 0.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/hockeyplayers endpoint returns a JSON array of players, or an error. League-specific fields are left out where they do not apply.

  • player_id

    Unique id, e.g. nhl-p-4f1caed20d. It stays the same when a player changes teams.

  • league

    League of the player's current roster.

  • team

    Current team: team_id, name and abbreviation; null for a player whose roster_status is not_on_roster.

  • name, first_name, last_name

    Player name.

  • position, jersey_number

    Position abbreviation (C, L, R, D or G) and jersey number.

  • height_in, height_cm, weight_lb, weight_kg

    Height and weight.

  • birth_date, birth_place

    Date of birth and birthplace (city, state, country).

  • roster_status

    active, suspended or not_on_roster.

  • shoots_catches

    L or R.

Live Demo

Live demo · no API key required
Query parameters
league
team
name
player_id
position
limit
offset

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/hockeyplayers?team=TOR
Sample response
[
{
"player_id": "nhl-p-4f1caed20d",
"league": "nhl",
"team": {
"team_id": "nhl-tor",
"name": "Toronto Maple Leafs",
"abbreviation": "TOR"
},
"name": "Auston Matthews",
"first_name": "Auston",
"last_name": "Matthews",
"position": "C",
"jersey_number": "34",
"height_in": 75,
"height_cm": 190,
"weight_lb": 214,
"weight_kg": 97,
"birth_date": "1997-09-17",
"birth_place": {
"city": "San Ramon",
"state": "CA",
"country": "US"
},
"roster_status": "active",
"shoots_catches": "L"
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/hockeyplayers?team=TOR" \ -H "X-Api-Key: YOUR_API_KEY"

Frequently Asked Questions

  • Yes, but you must have a premium subscription. Commercial use of the Hockey API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.
  • Sign up for a free account to instantly get your API key, then pass it in the X-Api-Key header on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.
  • Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.
  • The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.
  • Yes. The free plan covers the current NHL season: the full schedule, final scores by period, standings with points, teams and rosters. Paid plans add live scores with the period and clock, and past seasons.
  • The NHL. league=nhl is the default, so no league parameter is needed, and every game, standings row and team has sport: ice_hockey. See the NHL API guide for team and season details.
  • decided_in is regulation, overtime or shootout. Overtime goals are in period_scores as a fourth period; a shootout is not a period, so it shows only in the final score and decided_in.
  • A win is worth two points and an overtime or shootout loss one, so each row of /v1/hockeystandings has points, wins, losses, ot_losses, point_pct and regulation_wins, the first tiebreaker, plus wildcard_rank for the playoff race.
  • Call /v1/hockeygames?team=TOR for the team's current season, with scores for the games already played. Results come 50 games per page; add offset=50 for the rest, or use limit on paid plans.

API Ninjas is not affiliated with or endorsed by the NFL, the NBA, the NHL or any other league, competition or team. League, competition and team names are trademarks of their owners and are used only to identify them.