The hockey data API.
Every NHL play since 2010.
6.8 million plays, each with the x and y it happened at and the skaters on the ice for it. Sixteen seasons of games, goalie and skater stats that refresh every morning, and line movement from the books we track. Call it over REST or point Claude at it over MCP. The first 500 credits are free and we do not ask for a card.
- plays
- 6.8M+
- games
- 23,000+
- players
- 4,800+
- seasons
- 17
This week
What get_schedule returns right now.
Rendered from the same rows get_schedule returns, refreshed every hour. Lines appear here once books post them, a few days before puck drop.
| Kickoff | Away | Home | Game id |
|---|---|---|---|
| Mon 7:00 PM ET | BUF | PIT | 2026010016 |
| Mon 7:00 PM ET | DET | CBJ | 2026010017 |
| Mon 7:00 PM ET | NYR | NJD | 2026010019 |
| Mon 7:00 PM ET | PHI | WSH | 2026010020 |
| Mon 7:00 PM ET | OTT | MTL | 2026010022 |
| Mon 8:00 PM ET | COL | WPG | 2026010015 |
get_schedule · 2 credits · then get_game_detail for the box score and odds
Coverage
Coverage you can inspect before you build.
Every event since 2010-11 with coordinates, strength state and the players involved.
Regular season, playoffs, and preseason across supported seasons.
Supported moneyline, spread, and totals snapshots where available.
| Dataset | Seasons | Volume | Status | Tools |
|---|---|---|---|---|
Play-by-play Every event with rink coordinates, strength state, zone, shot type, and the players involved: goals, shots, misses, blocks, faceoffs, hits, giveaways, takeaways, penalties. | 2010-11 through current | 6,800,000+ events | Full 21,980 of 22,067 completed games. The 87 gaps are preseason games before 2018, for which the source publishes no play data. Coordinates are present on locatable events; stoppages and period markers carry none. | |
Games Game records and detail for supported regular season, playoff, and preseason matchups. | 2010-11 through current | 23,000+ | Full Historical coverage depends on supported seasons and source availability. | |
Players Player search and player stat lookup across supported datasets. | Bio, roster, position, supported stats | 4,800+ | Full | |
Goalies Goalie stat lookup including save percentage, GAA, wins, shutouts, and time on ice. Shot-quality metrics (GSAX, high-danger save%) are not yet computed. | Supported goalie stat seasons | 1,509 | Full | |
Teams Team metadata, abbreviations, divisions, conferences, and arenas. | Active and historical franchises represented in PuckAPI | 34 | Full | |
Standings + rankings Standings, rankings, and supported advanced team metrics. | Supported seasons and current-season snapshots | 494 | Full Do not treat standings as real-time unless freshness is shown separately. | |
Odds Odds for supported games, books, and markets where available. | 2019-20 through current | 107,000+ | Partial Coverage varies by sportsbook, game, market, and source availability. | |
Line movement Line movement data where multiple odds snapshots exist for a supported game and market. | Historical odds snapshots where available | Opening/current/closing snapshots | Partial Not every game, book, or market has line movement history. | |
Head-to-head Historical matchup context for supported teams and games. | Supported teams and games | Matchup history | Full |
Full detail in the data atlas. Sportsbooks: DraftKings, FanDuel, BetMGM, and ESPN BET. Sportsbook availability varies by game, market, and source. Do not assume every book is available for every game.
Tools
Every tool, and what a call costs.
Every tool is one REST endpoint and one MCP tool with the same name, the same parameters, and a fixed credit cost. Empty results are not charged.
- get_gamesQuery games by date range, team, season, game state, or type.
- get_team_statsDetailed stats for a specific team including advanced metrics and league rankings.
- get_player_statsPlayer bio and goalie stats (if goalie). For skaters, returns bio info and team context.
- get_goalie_statsGoalie leaderboard sorted by save%, GAA, GSAX, or wins.
- get_skater_season_statsSkater leaderboard sorted by points, goals, assists, plus/minus, or shots.
- get_oddsOdds for a specific game with optional bookmaker and snapshot type filters.
- get_game_detailFull game detail including odds snapshots and confirmed goalie starts.
- get_head_to_headMatchup history between two teams with win/loss records.
- get_playsPlay-by-play events with rink coordinates, strength state, and the players involved.
- get_shot_mapEvery shot attempt with rink coordinates, shot type, shooter and goalie.
Access
REST or MCP. Same data either way.
Call it from any language over REST. Let Claude or Cursor query it in plain English over MCP.
- GET https://mcp.puckapi.com/v1/tools public catalogue with JSON Schema
- POST https://mcp.puckapi.com/v1/{tool}
- MCP https://mcp.puckapi.com/mcp
curl -X POST https://mcp.puckapi.com/v1/list_teams \
-H "x-api-key: YOUR_API_KEY"
# every tool: POST /v1/{tool} with a JSON body
# responses carry X-Credits-Used and X-Credits-RemainingPricing
Free to start, then you pay per call.
500 credits on signup, no card. Subscriptions add a monthly allowance; wallet top-ups never expire.
- +All 15 endpoints
- +REST API + MCP access
- +No credit card required
- +10,000 credits/month
- +All 15 endpoints
- +Email support
- +Overage at wallet rates
- +30,000 credits/month
- +All 15 endpoints
- +Priority support
- +Overage at wallet rates
- +125,000 credits/month
- +All 15 endpoints
- +Dedicated support
- +Volume rates available
Full breakdown, credit costs per tool, and FAQ on the pricing page.
Before you write another scraper
Start with 500 credits and no card.
PuckAPI · The hockey data API.