NBA Odds API

NBA moneyline, handicap and totals odds from multiple bookmakers, with quarter and half markets, in one API.

By the HoopsAPI team · Updated

The HoopsAPI NBA odds API returns moneyline, handicap (point spread) and totals odds for every upcoming NBA game from 6 bookmakers (1xBet, Betway, FanDuel, Pinnacle, Smarkets, Unibet) in one JSON format, refreshed every 10 minutes. It also covers halves and quarters, every alternate line, and the closing odds of finished games. A free plan gives 10 requests a day; send GET /api/v1/games?competition=NBA with your API key.

The NBA is the most heavily bet basketball league and the most efficiently priced: margins on main lines are among the lowest in any sport, so small price differences between bookmakers matter.

NBA odds at a glance

Live figures from the API, as of 22 October 2026:

  • 23 upcoming NBA games with odds
  • 6 bookmakers pricing them: 1xBet, Betway, FanDuel, Pinnacle, Smarkets, Unibet
  • Median bookmaker margin on the full-game moneyline: 3.6%
  • Taking the best price on each side across bookmakers cuts that to 1.2%
  • 11 games have half odds and 11 have quarter odds

Upcoming NBA games

Tip-off (UTC)GameBest homeBest awayHandicapTotalBookmakers
2026-10-22 23:10Philadelphia 76ers v Cleveland Cavaliers1.682.36-3.5235.56
2026-10-23 01:40Oklahoma City Thunder v Denver Nuggets1.334.00-9.5235.56
2026-10-23 20:10Milwaukee Bucks v Chicago Bulls1.931.99-1238.55
2026-10-23 23:10Boston Celtics v New York Knicks1.802.14-2.5223.56
2026-10-23 23:10Orlando Magic v Minnesota Timberwolves2.081.87+1.5237.55
2026-10-23 23:10Washington Wizards v Toronto Raptors2.601.64+4.5236.05
2026-10-23 23:10Indiana Pacers v Dallas Mavericks1.482.94-6236.05
2026-10-23 23:10Charlotte Hornets v Atlanta Hawks2.301.71+2.5227.05

Best home and away are the highest moneyline odds across bookmakers. Handicap (home team) and total are the median of the bookmakers' main lines. The API returns every bookmaker's prices and alternate lines.

Which bookmakers cover NBA odds?

HoopsAPI collects NBA odds from 1xBet, Betway, FanDuel, Pinnacle, Smarkets, Unibet: a mix of a sharp, low-margin bookmaker (Pinnacle), a betting exchange (Smarkets) and recreational bookmakers. Every bookmaker's prices are normalised to one schema, with canonical team names and the handicap always expressed as the home team's line, so you can compare them directly without mapping each feed yourself. Each game lists only the bookmakers currently offering it; GET /v1/providers shows when each bookmaker was last collected.

Which NBA markets and periods are included?

Every NBAgame includes the full-game moneyline, handicap and total, plus team totals where bookmakers offer them. The same handicap and totals markets are available for the first and second half and for each quarter, usually added in the last couple of days before tip-off. The games list returns each bookmaker's main line; GET /v1/games/{game_id} adds every alternate handicap and total line, so you can compare bookmakers at the same line. See handicap odds, totals and quarter and half odds.

How often are NBA odds updated?

NBA odds are refreshed from every bookmaker every 10 minutes. Each game carries updated_at, the last time any of its prices changed, and each bookmaker's entry carries captured_at, the time of its last successful collection. When a bookmaker withdraws a line it disappears from the response, so you never compare against a price that is no longer offered. Odds are pre-match only: a game leaves the upcoming list at tip-off and its last prices become its closing odds.

How do I get NBA odds in Python?

Request the games endpoint with your API key as a bearer token and filter by competition:

python
import requests

r = requests.get(
    "https://hoopsapi.com/api/v1/games",
    params={"competition": "NBA"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
for game in r.json()["games"]:
    for bookmaker, markets in game["periods"]["ft"].items():
        print(game["home"], "v", game["away"], bookmaker, markets.get("moneyline"), markets.get("spread"))

The same request in JavaScript:

javascript
const r = await fetch("https://hoopsapi.com/api/v1/games?competition=NBA", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { games } = await r.json();
for (const game of games) {
  console.log(game.home, "v", game.away, game.periods.ft);
}

The name is matched case-insensitively, and GET /v1/competitions lists every competition with upcoming games. The API reference documents every field.

Can I get historical NBA odds and closing lines?

Yes. After tip-off, GET /v1/games/{game_id} keeps working and returns the game with status: "archived"and every bookmaker's closing odds, including alternate lines, on every plan. The Data plan adds /v1/games/{game_id}/history: every price change for the game, by bookmaker, market, line and period, for backtesting and for measuring closing line value. See the historical odds API.

How much does the NBA odds API cost?

Every plan includes the NBA and over 100 other competitions; plans differ in daily requests and extra endpoints. The free plan needs no credit card.

PlanPriceRequestsIncludes
Free€0/month10 a dayOdds and closing lines
Starter€10/month500 a dayOdds and closing lines
Pro€49/month5,000 a dayOdds and closing lines, discrepancies
Data€249/month20,000 a dayOdds and closing lines, discrepancies, price history

Annual billing is cheaper; see pricing. Also covered: EuroLeague, Liga ACB, Australian NBL and over 100 other competitions.

Try it with real data

The free plan includes 10 requests a day across every league and market. No credit card.