NHL PLAYER PROPSLive · 2026-27 season

NHL Player Props API

Per-player props live across 5 sportsbooks and 6 markets: shots on goal, goals, assists, points, saves, and power play points. Cross-book best-line aggregation in the same canonical schema as the rest of the API.

Edge ($149/mo) or higher. Start free on the rest of the API, no credit card.

7,711 prop lines live across BetMGM, Caesars, DraftKings, FanDuel, BetRivers, as of 2026-09-29.

What you'll get

The same primitives that make /v1/nba/players/{id}/props useful, brought to NHL. One free key, one shape.

  • Cross-book best line

    Surface the best over and best under per market in a single request, with the book that posted the price.

  • Hit rate dashboards

    Render last-10 and season-long hit rate per market so users see the bet history at a glance.

  • Unified player_id

    Props join cleanly to /v1/nhl/games/{id}/matchup, player streaks, rolling stats — one id everywhere.

  • Bets Chat ready

    JSON envelope mirrors /v1/nba/players/{id}/props, so the Bets Chat integration ports directly with no schema rework.

  • Six core markets

    Shots on goal, goals, assists, points, saves, and power play points. Audited markets, no novelty clutter.

  • Live for the 2026-27 season

    7,711 prop lines as of 2026-09-29, refreshed every 4 hours across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers.

Markets covered

Six core NHL markets live today. Audited, no novelty props.

MarketDescription
shots_on_goalTotal shots on goal in the game
goalsGoals scored
assistsAssists
pointsGoals + assists (the canonical NHL "points" combo)
savesGoalie saves
power_play_pointsPoints (goals + assists) scored while on the power play

Endpoint shape

One call returns a single market for the player: the current line across books (best book per side) plus a rolling last-N-games hit rate for that market.

GET /v1/nhl/players/:id/props?market=shots_on_goal

Response shapejson
{
  "data": {
    "player": {
      "bbs_id": "84977260-f7d7-48af-857e-ea355ccdb266",
      "name": "Tage Thompson",
      "position": "C",
      "team": { "bbs_id": "37766f6e-e138-4f4a-a845-cf3bf06d00f4", "name": "Buffalo Sabres", "abbr": "BUF" }
    },
    "market": "shots_on_goal",
    "current_line": {
      "line": 3.5,
      "over_juice": -115,
      "under_juice": -114,
      "sportsbook": "balldontlie_fanduel",
      "sportsbook_display": "FanDuel",
      "fetched_at": "2026-06-02T06:07:21.726Z",
      "all_books": [
        { "sportsbook": "balldontlie_betmgm", "display": "BetMGM", "line": 3.5, "over_juice": -105, "under_juice": -130 },
        { "sportsbook": "balldontlie_draftkings", "display": "DraftKings", "line": 3.5, "over_juice": -135, "under_juice": 105 },
        { "sportsbook": "balldontlie_fanduel", "display": "FanDuel", "line": 3.5, "over_juice": -115, "under_juice": -114 }
      ]
    },
    "hit_rate": {
      "lookback_games": 20,
      "games_with_box_score": 7,
      "over_hits": 4,
      "under_hits": 3,
      "pushes": 0,
      "hit_pct_over": 0.5714,
      "samples": [
        { "match_id": "529e7cb8-8e2a-4554-a0ef-88bbfd21d510", "game_date": "2025-10-22", "opponent": null, "value": 5, "result": "over" },
        { "match_id": "9f9ba07e-1bac-45b6-bf65-d22d4020c566", "game_date": "2025-10-20", "opponent": null, "value": 3, "result": "under" }
      ]
    },
    "as_of": "2026-06-02T10:06:32.049Z"
  },
  "meta": { "cached": false, "cache_age_ms": 0 }
}

SDK call

One call returns every market the player has a posted line on tonight. The cross-book attribution lands in the same payload.

  • · Six markets returned in one call
  • · Cross-book best-line attribution per market
  • · Same canonical envelope as the rest of the API
Node.js, @bigballsdata/sdktypescript
// One market per call: best line across books + a rolling hit rate.
const url =
  'https://api.bigballsdata.com/v1/nhl/players/' + playerId +
  '/props?market=shots_on_goal&lookback=20';
const res = await fetch(url, { headers: { 'x-api-key': process.env.BBS_API_KEY! } });
const { data } = await res.json();

console.log(data.market, data.current_line?.line, 'best:', data.current_line?.sportsbook_display);
console.log('over hit rate:', data.hit_rate?.hit_pct_over, 'on', data.hit_rate?.games_with_box_score, 'games');

for (const b of data.current_line?.all_books ?? []) {
  console.log(' ', b.display, b.line, b.over_juice, '/', b.under_juice);
}

What will it cost

Edge, $149/mo, is where NHL Player Props starts, and Pro includes it. It is the same floor as /v1/nba/players/{id}/props, because it is the same layer: props and their hit rates, live and stored bookmaker lines, opening-to-closing movement, and closing-line value. Free, Solo and Trio cover the rest of the API at 250 req/day (500 with GitHub), no credit card.

See all plans

Frequently asked

How do I call the NHL Player Props endpoint?
GET /v1/nhl/players/:id/props?market=shots_on_goal with your API key in the Authorization header or as ?api_key=. One call returns one market: data.current_line (line, over_juice / under_juice, the best book per side, and all_books) plus data.hit_rate (over_hits / under_hits, hit_pct_over, games_with_box_score, and per-game samples). Live today across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers.
Which plan do I need?
The Edge plan ($149/mo) or higher, the same as /v1/nba/players/{id}/props. Player props are part of the odds and model layer, so they sit with live and stored bookmaker lines, opening-to-closing movement, closing-line value and fair-price edges. Free, Solo and Trio do not include them. Those plans still cover NHL schedules, scores, linescores, skater and goalie stats, standings and injuries at 250 req/day (500 if you connect GitHub), no credit card.
Which sportsbooks does it cross-reference?
The same books the rest of the API normalises across. The response includes a books_count plus the specific book that posted the best over and the best under per market, so the source attribution is in the payload, not buried in a separate call.
How fresh are the prices?
Prices refresh every 4 hours, at 00:00, 04:00, 08:00, 12:00, 16:00 and 20:00 UTC, from the upstream books and the response is canonicalised to the BBS schema. The first request after a price change pays the upstream-fetch latency; subsequent calls within the cache window return cached data with cache_age_ms surfaced in meta.

Get an API key now

The endpoint is live across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers. 7,711 prop lines as of 2026-09-29, refreshed every 4 hours through the 2026-27 season.