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:
- /v1/hockeygames - Schedules, live and final scores
- /v1/hockeystandings - Standings
- /v1/hockeyteams - Teams, divisions and venues
- /v1/hockeyplayers - Rosters and player profiles
League guides: NHL API. One API key works for every sports API.
Ice hockey data at a glance
| Periods | Three 20-minute periods; period counts on into overtime (4, and more in the playoffs) |
|---|---|
| Overtime and shootouts | decided_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 games | On paid plans: the score, period, time left and intermission between periods |
| Points | Two points for a win and one for an overtime or shootout loss, in points, ot_losses and point_pct |
| Tiebreaks | regulation_wins is the first standings tiebreaker; wildcard_rank and clinched track the playoff race |
| Season value | season=2026 is the 2026-27 season |
| Rosters | Position (C, L, R, D, G), sweater number, shoots or catches (shoots_catches), height, weight, birth date and birthplace |
League
| League | What you get | League value |
|---|---|---|
| NHL | Schedules, live and final scores by period with overtime and shootouts, standings with points, teams and rosters | nhl |
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.
leagueoptionalOptional:
nhl, the default.dateoptionalGame day in the league's home time zone (YYYY-MM-DD). Defaults to today when no team or season is given.
teamoptionalTeam id, abbreviation or name (e.g.
TOR): that team's games in the season.seasonoptionalSeason, as the year it starts (
2026= 2026-27). Defaults to the current season. On its own, returns the season's games 50 per page; useoffsetfor the next page.season_typeoptionalOnly games of this part of the season.
statusoptionalOnly games with this status.
game_idoptionalReturn one game.
limitoptional Premium onlyGames per page (1-500). Default
50.offsetoptionalGames to skip, for paging. Default
0.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
The /v1/hockeygames endpoint returns a JSON array of games in start order, or an error.
game_idUnique id of the game, e.g.
nhl-20261020-sjs-mtl. It never changes, even when a game is moved to another date.leaguenhl.sportAlways
ice_hockey.seasonSeason, as the year it starts:
2026is the 2026-27 season.season_labelDisplay form of the season, e.g.
2026-27.season_typepreseason,regularorpostseason.dateGame day in US Eastern time (YYYY-MM-DD), so a West Coast night game keeps its US date.
start_timeScheduled start in UTC (ISO 8601).
statusscheduled,in_progress,final,postponed,canceled,suspended(including abandoned soccer matches) ordelayed(e.g. a baseball rain delay).status_detailPremium onlyDuring a game:
intermissionbetween periods. Otherwisenull. While a game is in progress, the free plan seesThis field is for premium subscribers only.periodLive values: PremiumCurrent 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 seesThis field is for premium subscribers only.clockPremium onlyWhile a game is in progress: time left in the period, e.g.
12:08. The free plan seesThis field is for premium subscribers only.home_team, away_teamThe teams:
team_id,nameandabbreviation, named as they were that season. A team that moved, such as the Atlanta Thrashers, has its ownteam_id.home_score, away_scoreLive values: PremiumCurrent or final score (goals, with one goal for the winner of a shootout);
nullbefore the game starts. While a game is in progress, the free plan seesThis field is for premium subscribers only.period_scoresLive values: PremiumScore per period for
homeandaway, with each overtime period. A shootout is not a period, so it is not included. While a game is in progress, the free plan seesThis field is for premium subscribers only.decided_inFor final games:
regulation,overtimeorshootout.winnerteam_idof the winner once the game is final, including a shootout winner;nullbefore that.venueWhere the game is played:
name,city,stateandcountry(ISO 3166-1 alpha-2).neutral_sitetruewhen neither team is at home, e.g. international and outdoor games played away from either arena.original_dateFor a game moved to another date: the date it was first scheduled for. Otherwise
null.updated_atWhen any field of the game last changed (UTC).
Live Demo
Get a free API key to get started — no credit card required.
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
leagueoptionalOptional:
nhl, the default.seasonoptionalSeason, as the year it starts. Defaults to the current season.
conferenceoptionalOnly this conference, e.g.
Western.divisionoptionalOnly this division, e.g.
Pacific.
Headers
X-Api-KeyrequiredAPI 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_labelLeague, sport and season of the table.
teamteam_id,nameandabbreviation, named as they were that season.conference, divisionConference and division that season, e.g.
EasternandAtlantic.games_played, wins, lossesRecord.
pointsStandings points: two for a win, one for an overtime or shootout loss.
ot_losses, point_pct, regulation_winsOvertime and shootout losses, points percentage and regulation wins (the first tiebreaker).
goals_for, goals_againstGoals scored and conceded.
goal_differentialGoals for minus goals against.
streakCurrent streak, e.g.
W2orL1.home_record, away_recordHome and road records, e.g.
4-1(NHL: wins-losses-overtime losses).last_10Record over the last 10 games.
league_rank, conference_rank, division_rankRank in the league, conference and division.
wildcard_rank, clinchedWild-card position and the clinching indicator the league publishes.
finaltrueonce the regular season is over and the table no longer changes.
Live Demo
Get a free API key to get started — no credit card required.
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
leagueoptionalOptional:
nhl.teamoptionalTeam id, abbreviation or name (e.g.
TOR): return one team.conferenceoptionalOnly teams in this conference.
divisionoptionalOnly teams in this division.
activeoptionalfalselists former teams that appear in past seasons.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
The /v1/hockeyteams endpoint returns a JSON array of teams, or an error.
team_idUnique id, e.g.
nhl-tor. Use it, the abbreviation or the name in other endpoints.leagueThe team's league.
sportAlways
ice_hockey.abbreviation, name, cityIdentity of the team.
nickname, conference, divisionNickname, current conference and division.
venueHome venue:
name,city,state,country.activefalsefor teams that have since moved, such as the Atlanta Thrashers, which still appear in past seasons.
Live Demo
Get a free API key to get started — no credit card required.
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.
leagueoptionalOptional:
nhl, the default.teamoptionalTeam id, abbreviation or name: that team's current roster.
nameoptionalFull or partial player name. Case and accents are ignored.
player_idoptionalReturn one player.
positionoptionalOnly this position, e.g.
C.limitoptional Premium onlyPlayers per page (1-500). Default
50.offsetoptionalPlayers to skip, for paging. Default
0.
Headers
X-Api-KeyrequiredAPI 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_idUnique id, e.g.
nhl-p-4f1caed20d. It stays the same when a player changes teams.leagueLeague of the player's current roster.
teamCurrent team:
team_id,nameandabbreviation;nullfor a player whoseroster_statusisnot_on_roster.name, first_name, last_namePlayer name.
position, jersey_numberPosition abbreviation (
C,L,R,DorG) and jersey number.height_in, height_cm, weight_lb, weight_kgHeight and weight.
birth_date, birth_placeDate of birth and birthplace (
city,state,country).roster_statusactive,suspendedornot_on_roster.shoots_catchesLorR.
Live Demo
Get a free API key to get started — no credit card required.
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/hockeyplayers?team=TOR" \
-H "X-Api-Key: YOUR_API_KEY"Frequently Asked Questions
Can I use the Hockey API for commercial purposes?
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.How do I get an API key and start using the Hockey API?
Sign up for a free account to instantly get your API key, then pass it in theX-Api-Keyheader on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.What happens if I exceed my quota for the month?
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.What happens if a request to the Hockey API fails?
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.Is there a free hockey API?
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.Which hockey league is covered?
The NHL.league=nhlis the default, so no league parameter is needed, and every game, standings row and team hassport: ice_hockey. See the NHL API guide for team and season details.How are overtime and shootout results shown?
decided_inisregulation,overtimeorshootout. Overtime goals are inperiod_scoresas a fourth period; a shootout is not a period, so it shows only in the final score anddecided_in.How do standings points work in the API?
A win is worth two points and an overtime or shootout loss one, so each row of/v1/hockeystandingshaspoints,wins,losses,ot_losses,point_pctandregulation_wins, the first tiebreaker, pluswildcard_rankfor the playoff race.How do I get a team's schedule?
Call/v1/hockeygames?team=TORfor the team's current season, with scores for the games already played. Results come 50 games per page; addoffset=50for the rest, or uselimiton paid plans.
Explore API integration use cases for recommended APIs and workflow examples.
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.