The Hockey API for developers ballers.

One envelope for hockey and for every other sport we serve — the JSON you parse for a hockey game is the JSON you parse for a soccer match, same field names, same coordinate conventions. Final and period-by-period scores, expected-goals leaderboards, skater and goalie season stats, player props with sportsbook lines and a derived freshness stamp on every response, and a matchup endpoint that assembles the full preview in one call. Coverage is the NHL: expected goals twelve seasons deep, scores from 2025-26, free to start.

1,000 req/day free (2,000 with GitHub). No credit card.

Ice hockey · one cross-sport schema · NHL · xG 12 seasons · scores current season

Seasons: 2014-15, 2015-16, 2016-17, 2017-18, 2018-19, 2019-20, 2020-21, 2021-22, 2022-23, 2023-24, 2024-25, 2025-26

Want the league rather than the sport? The NHL API page covers the current season, its teams and its games. See the NHL API →

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

Historical

Held 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

Historical

Held 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)

Historical

Held 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.

Name the field or the endpoint shape. Specifics help more than categories.

Goes straight to the team as a product signal. No newsletter, no account, nothing else done with your address.

What you can build

  • Live score widget

    Embed NHL scores with period-by-period linescores (overtime included) on any site.

  • Matchup preview page

    Records, linescore, and game state for both teams in one /matchup call.

  • Goalie dashboard

    Save percentage, GAA, and saves per goalie, plus a saves prop market.

  • Player props tracker

    Shots on goal, goals, assists, points, and saves lines with over/under juice.

  • Expected-goals model

    Rank skaters by xG and goals-above-expected from the season leaders endpoint.

  • Fantasy hockey tool

    Skater and goalie season stats plus current injury status in one feed.

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.

MethodPathReturnsPlan
GET/v1/matches?sport=ice_hockey&league=nhlNHL games with final + period-by-period linescoresFree
GET/v1/standings?sport=ice_hockey&league=nhlConference + division standings (W-L-OTL, streak)Free
GET/v1/nhl/leadersSeason leaders with expected goals (xG) and goals-above-expectedFree
GET/v1/nhl/games/:game_id/matchupFull matchup: records, linescore, and state for both teams in one callFree
GET/v1/nhl/players/:player_id/props?market=shots_on_goalPlayer props (shots_on_goal, goals, assists, points, saves) with linesFree
GET/v1/players/:id/stats?sport=ice_hockeySkater + goalie season stats (goals, assists, save%, GAA)Free
GET/v1/injuries?sport=ice_hockeyActive NHL injury reports (status, type, expected return)Free
Off-seasonResults through · next fixture

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 1,000 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 2,000.
  • No credit card.
Get a key →

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

Node.js, @bigballsdata/sdktypescript
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.

1,000 req/day free (2,000 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.

Frequently asked

Is there a free hockey API?
Yes. NHL scores with period-by-period linescores, standings, expected-goals leaders, skater and goalie stats, player props, injuries, and a matchup endpoint on the free tier at 1,000 req/day (2,000 with GitHub), no credit card.
How many seasons of NHL data are there?
Twelve: 2014-15 through 2025-26. The seasons line on this page is sourced from the coverage manifest, so it never drifts from what the API actually serves.
Does the hockey 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.
Does it include 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 hockey 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 and over/under juice from sportsbooks.
Does it include full game betting odds (moneyline / puck line)?
Historically, yes — and it is the deepest odds archive we hold for any sport. Opening and closing snapshots for 1,204 of 1,391 finished NHL games (87%) are served by /v1/odds/historical on the Pro plan, which is what you want for backtesting against real closing lines. What is NOT available is current per-game pricing: /v1/matches/:id/odds returns nothing for finished NHL games, and no new NHL prices have been written since 18 June 2026 because the league is between seasons. Player props with lines are served now via the props endpoint; full-game pricing resumes closer to the 2026-27 opener.
Can I get live NHL scores?
During the season, scores refresh from the stored feed (typical REST round trip ~0.2–2s). The NHL is between seasons right now — the 2026-27 season resumes in October — and all twelve seasons of historical games, stats, and xG are available immediately.
Is this the same as the NHL API?
Same data, different question. This page is about ice hockey as a sport — how it maps into the one schema we use for every sport, and which fields you get. The NHL API page is about the league: the current season, its teams and its games. The NHL is the hockey league we cover, so the endpoints overlap; pick the page that matches what you are looking up.

Get an API key in 30 seconds