The NHL API for developers ballers.
Live and historical NHL scores with period-by-period linescores, expected-goals leaderboards, skater and goalie season stats, player props with live sportsbook lines, and a matchup endpoint that assembles the full preview in one call. Licensed data and our own computed xG. There is a free tier; pricing lists what each plan covers.
250 req/day free (500 with GitHub). No credit card.
NHL · expected-goals analytics · skater + goalie stats · player props
Seasons: 1997-98, 1998-99, 1999-00, 2000-01, 2001-02, 2002-03, 2003-04, 2005-06, 2006-07, 2007-08, 2008-09, 2009-10, 2010-11, 2011-12, 2012-13, 2013-14, 2014-15, 2015-16, 2016-17, 2017-18, 2018-19, 2019-20, 2020-21, 2021-22, 2022-23, 2023-24, 2024-25, 2025-26, 2026-27
Want the sport rather than the league? The Hockey API page covers how ice hockey maps onto the same envelope as every other sport we serve. See the Hockey API →
- 29
- seasons in the archive
- 36,061 finished games, back to 1997-98
How far back the National Hockey League archive goes
29 seasons are on record, back to 1997-98 — 36,061 finished games you can query today. One route serves the full span. These figures are measured from the customer-facing routes listed below, so this page cannot silently drift from the product.
| Archive | Route | Seasons | Reaches back to | Finished games |
|---|---|---|---|---|
| National Hockey League | /v1/matches | 29 | 1997-98 – 2026-27 | 36,061 |
What each plan reaches
- Edge & Pro
- all 29 seasons
- Solo & Trio
- 5 seasons
- Free
- the current season
Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.
What you get, by plan
One row per capability, not per field per endpoint. Season spans are counted from rows that are actually populated, and each capability names the simplest endpoint that returns it.
Ratings and derived intelligence
| Capability | Free | Solo | Trio | Edge | Pro | Endpoint |
|---|---|---|---|---|---|---|
| Current Elo rating | — | PENDING | PENDING | PENDING | PENDING | /v1/teams/{id}/elo |
Measured against production on 2026-09-13. A capability appears here only when it has rows, an endpoint that returns it, and a source we may both serve and quote.
Stats included
Every hockey stat field the API returns today — 76 in total, grouped by how they are produced. Each group carries its own freshness, because a sport is rarely uniformly current.
Per-game player stats
HistoricalHeld and queryable, but not currently being ingested. Last ingested 2026-06-06.
- Endpoint
- /v1/players/:id/stats
- Last updated
- 2026-06-06
Fields (30)
Assists, Blocked Shots, Even Strength Goals Against, Even Strength Saves, Even Strength Shots Against, Even Strength Line, Faceoff Win %, Giveaways, Goals, Goals Against, Hits, Penalty Minutes, Plus/Minus, Points (goals + assists), Power Play Goals, Power Play Goals Against, Power Play Saves, Power Play Shots Against, Power Play Line, Save %, Saves, Shifts, Shorthanded Goals Against, Shorthanded Saves, Shorthanded Shots Against, Shorthanded Line, Shots Against, Shots on Goal, Takeaways, Time on Ice
Season player stats
HistoricalHeld and queryable, but not currently being ingested. Last ingested 2026-06-06.
- Endpoint
- /v1/nhl/leaders
- Last updated
- 2026-06-06
Fields (34)
Assists, Blocked Shots, Faceoff Losses, Faceoff Wins, Games Played, Giveaways, Goals, Goals Against, Hits, Penalty Minutes, Plus/Minus, Points (goals + assists), Power Play Goals, Saves, Shifts, Shots Against, Shots on Goal, Shutouts, Takeaways, Time on Ice Seconds, Individual Goals, Individual Points, Primary Assists, Secondary Assists, Individual Shots on Goal, Individual xGoals, Individual xGoals (adjusted), Individual xGoals (with rebounds), Ice Time (seconds), On-Ice xG Against, On-Ice xG For, On-Ice xG %, Situation, Team Abbr
Goalie fields (15)
Freezes, High-Danger Goals, High-Danger Shots, High-Danger xGoals, Low-Danger Goals, Low-Danger Shots, Low-Danger xGoals, Medium-Danger Goals, Medium-Danger Shots, Medium-Danger xGoals, Rebounds, X Freezes, Expected Rebounds, Expected Goals (xG), xGoals (flurry-adjusted)
Team stats (per game)
HistoricalHeld and queryable, but not currently being ingested. Last ingested 2026-08-07.
- Endpoint
- /v1/matches/:id/statistics
- Last updated
- 2026-08-07
Fields (15)
Blocked Shots, Faceoff Win %, Faceoffs Won, Giveaways, Hits, Penalties, Penalty Minutes, Power Play Goals, Power Play Opportunities, Power Play %, Score, Shootout Goals, Short Handed Goals, Shots Total, Takeaways
Not included
- Not shown here — player_per_game_eav: a SECOND source for per-game player stats alongside the primary one; listing both would double-count the same stats.
- Not shown here — play_by_play: play-by-play events, not a stat line — mostly identifiers once classified.
- Not shown here — standings_history: standings snapshots — reference data, not a player or team stat.
- Not shown here — props: betting lines and prices, not stats — they belong on the odds surface.
- player_per_game is not currently ingesting (last 2026-06-06).
- team_per_game is not currently ingesting (last 2026-08-07).
- player_season is not currently ingesting (last 2026-06-06).
Missing a stat?
We build what people actually ask for. If a field you need is not on this page, tell us — requests are how we decide what to add next.
What you can build
Live score widget
Embed NHL scores with period-by-period linescores (overtime included) on any site.
Matchup preview page
Season stats, last-5, records, and linescore for both teams in one /matchup call.
Fantasy hockey tool
Skater and goalie season stats plus current injury status in one feed.
Expected-goals model
Rank skaters by xG and goals-above-expected from the season leaders endpoint.
Goalie dashboard
Save percentage, GAA, and saves per goalie, plus a saves prop market.
Playoff tracker
Conference and division standings with W-L-OTL records through the postseason.
Walk through it end to end: How to build a fantasy hockey app.
Endpoints
On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys. Click any endpoint to see every field it returns.
13 endpoints · 260 documented fields. Click any row to see every field it returns.
Read live from GET /v1/coverage — the same endpoint you can call yourself. Dates are absolute, not a build timestamp.
Start on the free tier
100 requests per minute and 250 per day, free — the highest per-minute burst of any free sports API we checked. Burst is what matters when something asks several questions in a row and waits on each answer.
- Every sport and league we cover — the paid tiers add history depth and premium fields, not more leagues.
- Calls are counted one for one — no credit weighting, no markets-times-regions arithmetic.
- Link GitHub and the daily cap goes to 500.
- No credit card.
Or ask your AI tool directly
Connect your account to Claude, ChatGPT, Cursor, Perplexity or any other MCP-compatible tool and ask for hockey data in conversation — scores, standings, player stats and Elo ratings, with no API key to paste and no code to write. Your plan and limits carry over exactly as they do here.
Connect your AI tool →Integrate in a few lines
const API = 'https://api.bigballsdata.com';
const headers = { 'x-api-key': process.env.BBS_API_KEY };
// Recent NHL games with final score + period-by-period linescore.
const res = await fetch(`${API}/v1/matches?sport=ice_hockey&league=nhl&limit=5`, { headers });
const { data: games } = await res.json();
for (const g of games) {
const periods = (g.linescore?.home ?? [])
.map((h, i) => `${h}-${g.linescore.away[i]}`)
.join(' ');
console.log(`${g.away.name} @ ${g.home.name} ${g.score.away}-${g.score.home} [${periods}]`);
}Free covers a real app. Scale when you need to.
250 req/day free (500 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.
Frequently asked
- Is there a free NHL API?
- Yes. It covers scores with period-by-period linescores, standings, expected-goals leaders, skater and goalie stats, injuries, and a matchup endpoint. There is a free tier; pricing lists what each plan covers. Player props need the Edge plan ($149/mo) or higher, with odds and the rest of the model layer. Free keys get 250 req/day (500 with GitHub). No credit card.
- How many seasons of NHL data are there?
- 29 seasons of game coverage reach back to the 1997-98 season — 36,061 finished games from 1997-10-01 onward (2004-05 was not played). Free covers the current season, Solo and Trio five, and Edge and Pro the full 29. Licensed counting-stat leaderboards are a separate, shallower surface covering season-start years 2023 through 2025, and computed xG currently covers 2025. The coverage manifest remains the machine-readable source for game-season availability.
- Does the NHL API include period scores?
- Yes. Each game carries a linescore object with home and away arrays, one entry per period plus overtime when applicable (e.g. linescore.home = [1, 2, 1]).
- Does the NHL API include expected goals (xG)?
- Yes. /v1/nhl/leaders returns season leaders with expected goals (xG) and goals-above-expected, so you can rank skaters by finishing over or under their xG.
- Can I get goalie stats?
- Yes. /v1/players/:id/stats returns goalie aggregates (save percentage, GAA, saves) alongside skater stats, and "saves" is one of the player-prop markets.
- Does the NHL API include player props?
- Yes. /v1/nhl/players/:player_id/props returns five markets — shots on goal, goals, assists, points, and saves — with the line, over/under juice, and a rolling hit rate. Every response carries a `freshness` block derived from the line’s own timestamp: `data_as_of`, its age in days, and a status of live, recent or stale. Read `freshness.status` rather than assuming a returned line is a current price: when nothing is on the board the newest line we hold can be days or weeks old, and the block says so in the response instead of leaving you to guess.
- Does it include full game betting odds (moneyline / puck line)?
- Yes, in two places, and they answer different questions. The archive: /v1/odds/historical serves archived closing-line snapshots, plus a T-24h snapshot, for finished NHL games — that is the endpoint to backtest against real closing lines. It needs the Edge plan ($149/mo) or higher. Every response names the snapshot types it actually contains in meta.snapshot_types_present, and /v1/coverage reports how many games carry them under data_types.odds_historical, so you can size the archive from the API rather than from this page. The live board: /v1/matches/:id/odds serves current pre-match and in-play moneyline, puck line and totals for games that are on the board now. It returns nothing for a game that has already finished, because a finished game has no current price — that is the archive endpoint’s job, not a gap. Player props carry their own lines via /v1/nhl/players/:player_id/props.
- Does the NHL feed cover the playoffs?
- Yes. The same endpoints serve regular season and postseason; standings reflect division and conference during the season and series records in the playoffs. 29 seasons of completed NHL games, back to 1997-98, are available immediately on an Edge or Pro key — GET /v1/coverage?sport=ice_hockey lists exactly which under seasons.list, and freshness.next_event tells you when the next game is.
Explore NHL teams
32 captured team profiles. Dated previews, not live data.
NHL teams
- Anaheim Ducks
- Boston Bruins
- Buffalo Sabres
- Calgary Flames
- Carolina Hurricanes
- Chicago Blackhawks
- Colorado Avalanche
- Columbus Blue Jackets
- Dallas Stars
- Detroit Red Wings
- Edmonton Oilers
- Florida Panthers
- Los Angeles Kings
- Minnesota Wild
- Montreal Canadiens
- Nashville Predators
- New Jersey Devils
- New York Islanders
- New York Rangers
- Ottawa Senators
- Philadelphia Flyers
- Pittsburgh Penguins
- San Jose Sharks
- Seattle Kraken
- St. Louis Blues
- Tampa Bay Lightning
- Toronto Maple Leafs
- Utah Mammoth
- Vancouver Canucks
- Vegas Golden Knights
- Washington Capitals
- Winnipeg Jets
Get an API key in 30 seconds
Explore NHL teams
32 captured team profiles. Dated previews, not live data.
NHL teams
- Anaheim Ducks
- Boston Bruins
- Buffalo Sabres
- Calgary Flames
- Carolina Hurricanes
- Chicago Blackhawks
- Colorado Avalanche
- Columbus Blue Jackets
- Dallas Stars
- Detroit Red Wings
- Edmonton Oilers
- Florida Panthers
- Los Angeles Kings
- Minnesota Wild
- Montreal Canadiens
- Nashville Predators
- New Jersey Devils
- New York Islanders
- New York Rangers
- Ottawa Senators
- Philadelphia Flyers
- Pittsburgh Penguins
- San Jose Sharks
- Seattle Kraken
- St. Louis Blues
- Tampa Bay Lightning
- Toronto Maple Leafs
- Utah Mammoth
- Vancouver Canucks
- Vegas Golden Knights
- Washington Capitals
- Winnipeg Jets