New: MCP server for Claude and other assistants· every season back to 1917 on ArchiveSee plans

Ice Hockey API

Every game, every league, scored and priced.

Results, teams and odds from more than 1,250 leagues and cups, from the first seasons to last night. One REST API, one MCP server, and a free key in a minute.

No card for the free key50 calls a dayUpgrade or cancel any time
200 OK · 41 ms
910,000+games with a final score
1,250+leagues and cups worldwide
22,000+teams, men's and women's
280,000+games with odds
Last nightYesterday's results, already in the API

Every finished game arrives the same evening with goals by period, venue and attendance. The same call works for any date back to .

See every game
National League · 13 Nov 2026SO
123OTT
BERBern----4
FRIFribourg----3
PostFinance Arena · 17,031Open game
Czech Extraliga · 13 Nov 2026Final
123OTT
PARPardubice----6
KOMKometa Brno----2
enteria arena · 9,938Open game
Liiga · 13 Nov 2026Final
123OTT
TPSTPS03104
JOKJokerit20103
Turun Monitoimihalli Oy · 9,258Open game
Coverage1,250 leagues, from the top flights to the juniors

Each league page lists its seasons, teams and games. Full means scores, periods, lineups and player stats; results means final scores and dates.

Browse all leagues
LeagueCountrySeasonsGamesWith oddsDetail
NONHL1917-18 to 2026-27
North America10973,390
48%
FullOpenAPI call
NOAHL2003-04 to 2026-27
North America2433,327
63%
ResultsOpenAPI call
CAQMJHL1969-70 to 2026-27
Canada5832,671
22%
ResultsOpenAPI call
CAWHL1995-96 to 2026-27
Canada3226,530
42%
ResultsOpenAPI call
WOClub friendlies1903-04 to 2026-27
World11726,492
0%
ResultsOpenAPI call
CAOHL1997-98 to 2026-27
Canada2922,814
43%
ResultsOpenAPI call
NOECHL2006-07 to 2026-27
North America2121,719
27%
ResultsOpenAPI call
The API54 endpoints, one shape

Every answer is { data, meta } with our own ids, UTC times, paging and rate-limit headers. Paid fields stay in place on the free key as nulls, so nothing breaks when you upgrade.

Open the docs
GET
/v1/usage

Your plan, calls used today and this period, limits, reset times and the data your plan covers

Free key
GET
/v1/coverage

What the data holds: leagues, seasons, teams, finished games, games with detail and with odds, players and venues, and the first and last game dates

Free key
GET
/v1/changes

Every game that changed since a moment (a new result, a score corrected, a status, a day, a start time, a rink or a crowd), oldest change first, each with changed_at, and in meta.removed the games taken out (a duplicate folded into another, with into_id): keep a copy current with one call. Up to 7 days back; follow next_cursor, then ask again from the last until

Free key
GET
/v1/freshness

How fresh the results are, measured on every game rather than claimed: for each league with a result in the last 30 days, when its newest result reached the data, how many results came in the last day, week and month, the minutes from the final buzzer (start plus 150 minutes) to the result (median and 90th percentile over 7 days), and the games past their start still waiting for one. Overall: the newest result, the result lag, and the webhook lag as our own endpoint receives every game.final (push lag and end to end). Counted every minute

Free key
GET
/v1/countries

Every country with the number of leagues and teams it has

Free key
GET
/v1/leagues

Every league and competition, with country, level, age group, gender and what it holds (coverage: box scores, part box scores, scores and odds, or scores only)

Free key
GET
/v1/leagues/{league_id}

One league, with its number of seasons, its latest season and exactly what it holds: finished games, how many have a box score and odds, the seasons with box scores, and how often start time, rink and attendance are known

Free key
GET
/v1/leagues/{league_id}/seasons

Every season of a league, newest first, with first and last game dates, the number of games, and how many finished games have a box score and odds

Free key
GET
/v1/leagues/{league_id}/teams

Every team that has played in a league, most recent first, with its first and last season and games played

Free key
GET
/v1/seasons/{season_id}

One season: its league, label, dates and number of games

Free key
GET
/v1/seasons/{season_id}/games

Every game of a season, by date, with the same fields as the games list

Free key
GET
/v1/seasons/{season_id}/standings

The regular season table built from the results: games, wins, losses, overtime and shootout results, goals and points. The free key reads current seasons

Free key
GET
/v1/seasons/{season_id}/teams

The teams that took part in a season, with their number of games. The free key reads current seasons

Free key
GET
/v1/seasons/{season_id}/playoffs

Playoff series in the order they started: the two teams, wins each, the winner and every game. The free key reads current seasons

Free key
GET
/v1/seasons/{season_id}/leaders

The regular season leaders in points, goals, assists, plus-minus, penalty minutes, shots or expected goals (North American top league seasons from 2009-10), for leagues with game detail

Live
GET
/v1/seasons/{season_id}/summary

A season in numbers: goals a game, home and away wins, overtime and shootout share, average attendance and the biggest win

Live
GET
/v1/teams

Teams, by name, country, or the league or season they played in

Free key
GET
/v1/teams/{team_id}

One team: its name, short name, country and the leagues it has played in

Free key
GET
/v1/teams/{team_id}/games

A team's results and fixtures by date, optionally for one season or a date range

Free key
GET
/v1/teams/{team_id}/seasons

A team's regular season record, season by season, newest first, with points under each league's rule

Live
GET
/v1/teams/{team_id}/roster

The players who dressed for a team in a season, with number, position and games, for leagues with game detail

Live
GET
/v1/teams/{team_id}/stats

A team's regular season in one season: overall, home and away records, shots a game, average home attendance and, in North American top league seasons from 2009-10, expected goals for and against

Live
GET
/v1/teams/{team_id}/head-to-head/{other_id}

Every meeting of two teams your plan covers, newest first, with the first team's record against the second

Live
GET
/v1/games

Games by date, date range, league, season or team: teams, score, how it ended, venue and attendance. Every game says how exact its date is (date_precision: day, on_or_after or season, with earliest_date and latest_date); a date filter returns the games dated to the day

Free key
GET
/v1/games/upcoming

Scheduled games from today over the next two days, optionally for one league

Live
GET
/v1/games/{game_id}

One game, with its odds on paid plans

Free key
GET
/v1/results/yesterday

Every finished game from yesterday (UTC), on every plan

Free key
GET
/v1/results

Finished games for one day or a date range, optionally for one league. Give date, or from (and to); yesterday (UTC) when left out

Free key
GET
/v1/games/{game_id}/periods

Goals and shots for each side, period by period, overtime and shootout included

Free key
GET
/v1/games/{game_id}/goals

Every goal in order: period, time, side, scorer, assists, strength, empty net and the score after it

Free key
GET
/v1/games/{game_id}/penalties

Every penalty in order: period, time, side, player, who drew it, minutes, kind and offence

Live
GET
/v1/games/{game_id}/lineups

Who dressed for each side, with number, position, line, captaincy and the starting goalie

Live
GET
/v1/games/{game_id}/skaters

Each skater's line: goals, assists, points, plus-minus, penalty minutes, shots, hits, blocks, faceoffs and ice time; in North American top league games from 2009-10, his expected goals too

Live
GET
/v1/games/{game_id}/goalies

Each goalie's line: ice time, shots against, saves, goals against, save percentage and decision

Live
GET
/v1/games/{game_id}/team-stats

Team totals for the game side by side: shots, faceoffs, power play, penalty minutes, hits, blocks, giveaways and takeaways; in North American top league games from 2009-10, expected goals too

Live
GET
/v1/games/{game_id}/events

Every event in order: type, period, time, side, players, goalie, zone, rink position and shot type, with the expected goals of each unblocked shot (our own model, North American top league from 2009-10). While a North American top league game is being played it is read again every minute, and meta.live gives the period, clock and score as they stand

Live
GET
/v1/games/{game_id}/officials

The referees and linesmen of the game, each with an official_id that follows the same referee across games, seasons and leagues

Live
GET
/v1/games/{game_id}/context

Everything around the game in one call: the rink with its city and country, the start in UTC and in the rink's own time zone, and for each side the days of rest, back to back, games in the last 7 days and home or road games in a row; for the away side the city it came from; and, where the game has a line-up, the side's regulars who are not dressed. Every game, upcoming ones included. Weather and ice are always null: the game is played indoors and no open source records ice conditions

Live
GET
/v1/games/{game_id}/coaches

The head coach behind each bench, with side

Live
GET
/v1/games/{game_id}/stars

The three stars of the game, with side

Free key
GET
/v1/games/{game_id}/odds

Odds for one game: three-way, moneyline, puck line and totals, opening, closing or average prices

Live
GET
/v1/odds

Games with odds for one day or a date range, each with its prices. Give date, or from (and to); yesterday (UTC) when left out

Live
GET
/v1/upsets

The results nobody expected, each with the reasons in plain words: the chance the winner had by the closing prices, and what else stood against the favourite (the road, rest, a back to back). An upset is a win, overtime and shootout included, by a side with a 30% chance or less, the prices taken together so the margin is shared out: the closing moneyline first, else the closing three-way price (a draw after regulation counted half to each side), else the average price. upset_size runs from 0 to 100, how far under the 30% line it fell. The latest seven days by default, newest first; give a day or a range (up to 92 days), a league, a country or a team, and sort by size for the biggest first. Games with no price are left out

Complete
GET
/v1/players

Players by part of the name, position, nationality or birth year

Free key
GET
/v1/players/{player_id}

One player: name, position, shoots, birth date and place, nationality, height, weight, draft and number of awards

Free key
GET
/v1/players/{player_id}/seasons

A player's career season by season, every league and team, regular season and playoffs, with skater or goalie numbers, and a skater's expected goals in North American top league seasons from 2009-10

Live
GET
/v1/players/{player_id}/games

Every game your plan covers in which the player has a line, newest first, with his goals, assists, shots and ice time

Live
GET
/v1/players/{player_id}/awards

The trophies and awards a player has won, by season

Free key
GET
/v1/draft/{year}

Every pick of one draft year in order: round, pick, overall, the drafting team's code and the player

Free key
GET
/v1/officials/{official_id}

One referee or linesman: name, games worked as referee and as linesman, first and last game, and the leagues worked most

Free key
GET
/v1/officials/{official_id}/games

Every game your plan covers that the official worked, newest first, with the role

Live
GET
/v1/venues

Arenas by part of the name or city, or by country

Free key
GET
/v1/venues/{venue_id}

One arena: name, city, country and the teams that have played home games there

Free key
GET
/v1/venues/{venue_id}/games

Games played at an arena that your plan covers, newest first

Free key
MCP serverAsk your assistant, get the numbers

Add one address to Claude or any MCP client with your key. Fifteen tools call the same API, under the same plan and limits.

find_gamesby date, league or team
get_gameone game in full
game_oddsprices for one game
yesterdays_resultslast night, every league
find_leaguesby country or name
league_seasonsevery season of a league
find_teamsby name or league
get_standingsa season's table
How did the 2025 Stanley Cup Final go, game by game?
find_games · date 2025-06-04 to 2025-06-17 · 6 games
Florida won the series 4 to 2. Edmonton took the openers in overtime twice, but Florida won the last two by four goals each.
Game 1 · Oilers v Panthers4 : 3 OT
Game 2 · Oilers v Panthers4 : 5 2OT
Game 3 · Panthers v Oilers6 : 1
Game 4 · Panthers v Oilers4 : 5 OT
Game 5 · Oilers v Panthers2 : 5
Game 6 · Panthers v Oilers5 : 1
Built forWhat people build with it

Betting models

Opening and closing prices next to every result, back across decades of seasons, to test a model before it costs anything.

/v1/games/{id}/odds

Scores in apps and media

Last night's results and today's games for score widgets, newsletters and team sites, one call each morning.

/v1/results/yesterday

History and research

Every season of a league with its dates and games, for records, long-run studies and the stories behind them.

/v1/leagues/{id}/seasons

Assistants and agents

The MCP server lets Claude and other assistants answer hockey questions with real numbers instead of guesses.

/mcp
PricingStart free, pay for the seasons you need

Live is this season across every league. Archive is every season before it. Complete is both, with the highest limits.

Free key

$0

Real data for yesterday, today and games scheduled ahead. No card needed.

  • 50 calls a day
  • 10 calls a minute
  • Results and teams
  • Odds
  • Past seasons
Get a free key

Live

$29 a month

Current seasons in every league we cover: games, scores and odds.

  • 100,000 calls a month
  • 60 calls a minute
  • Results and teams
  • Odds
  • Past seasons
Choose Live

Archive

$49 a month

Every past season we hold, back to the earliest recorded games.

  • 200,000 calls a month
  • 60 calls a minute
  • Results and teams
  • Odds
  • Past seasons
Choose Archive
Everything

Complete

$79 a month

Live and Archive together, with the highest limits.

  • 500,000 calls a month
  • 120 calls a minute
  • Results and teams
  • Odds
  • Every season
Choose Complete

Pay yearly and get two months free. Cancel any time; your plan runs to the end of the period.

Start in a minuteThree steps to your first game

Make a free key

Sign in and your key is ready on the account page. No card.

iha_live_••••••••••••

Make one call

Send the key in a header and ask for any day's games.

GET /v1/games?date=2025-06-04

Build on it

Follow the ids from games to teams, leagues and seasons. Upgrade when you need odds or history.

GET /v1/teams/{team_id}
QuestionsBefore you start
Which leagues do you cover?

More than 1,250 leagues and cups: the top flights in North America and Europe, second tiers, juniors, women's leagues and international tournaments. The leagues page lists every one with its seasons.

How far back does the data go?

To the first recorded seasons of each league, back to for the oldest. Past seasons are on the Archive and Complete plans.

How soon do results arrive?

Finished games are in the API the same evening, with a second pass overnight for detail.

Is the free key real data?

Yes. It covers yesterday's games in every league, 50 calls a day, with paid fields shown as nulls. Today's games, live games and the days ahead are on the paid plans.

Which odds do you have?

Three-way and moneyline prices, puck lines and totals, as opening, closing or average prices, on the paid plans.

Can I use it with Claude or another assistant?

Yes. Add the MCP server address with your key and eight tools are available, under your plan's limits.

Get last night's results in your first call

Free key, no card, 50 calls a day.