NBA odds API

NBA prices, markets and identifiers through one REST API.

The NBA has the league key nba in the SockOdds API. It is a basketball league based in the United States (sport key basketball). Its events have a home and an away team.

Request NBA odds

Current prices for the next NBA game, one market, from every bookmaker your plan includes:

curl -sS "https://api.sockodds.com/v1/odds?league=nba&markets=winner&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  -H "Authorization: Bearer $SOCKODDS_API_KEY"
const response = await fetch(`https://api.sockodds.com/v1/odds?league=nba&markets=winner&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));
import json, os, urllib.request
from datetime import datetime, timezone

request = urllib.request.Request(
    f"https://api.sockodds.com/v1/odds?league=nba&markets=winner&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
    headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
    print(json.dumps(json.load(response), indent=2))

Response from a local copy of the API with invented test prices

{
  "data": [
    {
      "id": "ev_000ckk0ee4ze",
      "name": "Atlanta Hawks v Boston Celtics",
      "league": {
        "key": "nba",
        "name": "NBA"
      },
      "scheduled_start": "2026-10-16T17:00:00.000Z",
      "status": "scheduled",
      "participants": [
        {
          "role": "away",
          "identity": {
            "key": "boston_celtics",
            "name": "Boston Celtics"
          }
        },
        {
          "role": "home",
          "identity": {
            "key": "atlanta_hawks",
            "name": "Atlanta Hawks"
          }
        }
      ],
      "markets": [
        {
          "id": "mk_1e3spch3ksp3ptf7",
          "key": "winner",
          "name": "Winner",
          "period": "full",
          "subject": null,
          "alternate": false,
          "outcomes": [
            {
              "id": "oc_2b675wjrrdr96ngx",
              "name": "Atlanta Hawks",
              "side": "home",
              "line": null,
              "prices": [
                {
                  "bookmaker": "fanatics_markets",
                  "decimal_odds": 1.81,
                  "implied_probability": 0.552486,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "tab",
                  "decimal_odds": 1.77,
                  "implied_probability": 0.564972,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "sportsbet",
                  "decimal_odds": 1.72,
                  "implied_probability": 0.581395,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "pointsbet",
                  "decimal_odds": 1.69,
                  "implied_probability": 0.591716,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "novig",
                  "decimal_odds": 1.65,
                  "implied_probability": 0.606061,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_hsr6kxp5rq99zsfx",
              "name": "Boston Celtics",
              "side": "away",
              "line": null,
              "prices": [
                {
                  "bookmaker": "fanatics_markets",
                  "decimal_odds": 2.23,
                  "implied_probability": 0.44843,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "tab",
                  "decimal_odds": 2.18,
                  "implied_probability": 0.458716,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "sportsbet",
                  "decimal_odds": 2.12,
                  "implied_probability": 0.471698,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "pointsbet",
                  "decimal_odds": 2.08,
                  "implied_probability": 0.480769,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                },
                {
                  "bookmaker": "novig",
                  "decimal_odds": 2.04,
                  "implied_probability": 0.490196,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "count": 1,
    "cursor": null
  },
  "links": {
    "next": null
  }
}

Prices are decimal and exactly as each bookmaker showed them, with the time we saw them. A price older than ten minutes is withheld rather than shown as current.

Bookmakers

23 bookmakers deliver NBA prices through v1 as of 30 October 2026: Sportsbet, TAB, PointsBet, Unibet, Betfair Exchange, Pinnacle, Dabble, Betr, DraftKings, FanDuel, BetMGM, Kalshi, Polymarket, Matchbook, Bally Bet, BetDeluxe, BetRivers, Fanatics Markets, Hard Rock Bet, Novig, ProphetX, SwiftBet and TABtouch.

NBA markets

18 market types are defined for the NBA. Ask for any of them with markets=; a bookmaker quotes the markets it offers for each game.

Game markets

MarketKeySidesLinePeriods
Winnerwinnerhome, away, competitor_1, competitor_2Nofull, half_1, half_2, quarter_1, quarter_2, quarter_3, quarter_4
Handicaphandicaphome, away, competitor_1, competitor_2Yesfull, half_1, half_2, quarter_1, quarter_2, quarter_3, quarter_4
Total pointstotal_pointsover, underYesfull, half_1, half_2, quarter_1, quarter_2, quarter_3, quarter_4

Team markets

MarketKeySidesLinePeriods
Team points over/underteam_points_over_underover, underYesfull, half_1, half_2, quarter_1, quarter_2, quarter_3, quarter_4

Player markets

MarketKeySidesLinePeriods
Player points over/underplayer_points_over_underover, underYesfull, quarter_1
Player rebounds over/underplayer_rebounds_over_underover, underYesfull
Player assists over/underplayer_assists_over_underover, underYesfull
Player three-pointers over/underplayer_three_pointers_over_underover, underYesfull
Player steals over/underplayer_steals_over_underover, underYesfull
Player blocks over/underplayer_blocks_over_underover, underYesfull
Player points, rebounds and assists over/underplayer_points_rebounds_assists_over_underover, underYesfull
Player points and rebounds over/underplayer_points_rebounds_over_underover, underYesfull
Player points and assists over/underplayer_points_assists_over_underover, underYesfull
Player rebounds and assists over/underplayer_rebounds_assists_over_underover, underYesfull
Player blocks and steals over/underplayer_blocks_steals_over_underover, underYesfull
Player double-doubleplayer_double_double_yes_noyes, noNofull
Player triple-doubleplayer_triple_double_yes_noyes, noNofull
First field goal scorerplayer_field_goals_firstEach competitorNofull

Periods

full (Full match), regulation (Regulation time), half_1 (First half), half_2 (Second half), quarter_1 (First quarter), quarter_2 (Second quarter), quarter_3 (Third quarter) and quarter_4 (Fourth quarter).

Plans

The NBA is included on Rookie and Pro. Pro adds recorded price history, from 23 December 2025. See pricing.

Search across the SockOdds documentation and catalogue.