Historical Basketball Odds Data: Bulk JSON Downloads

Download NBA odds data by season as JSON: every price change of the current season, and results with closing odds for every game since 2021-22.

By the HoopsAPI team · Updated

Basketball odds data by league and season, as one file per download. The current season has every price change HoopsAPI recorded: moneyline, handicap, totals and team totals for the full game, halves and quarters, and every alternate line, updated daily and two days behind. Past seasonshave every game's result and closing odds. Downloads are part of the Data plan.

What is in a current-season file?

Gzipped JSON Lines: one JSON object per game, with its price history oldest first. Field names match the REST API; handicap lines are the home team's handicap. A few games have only their closing moneyline ("closing_only": true, at the end of the file).

One line of hoopsapi-nba-2026-27.ndjson.gz
{"game_id": 1639304025, "competition": "NBA", "start_time": "2026-10-28T03:10:00Z",
 "home": "Los Angeles Lakers", "away": "Portland Trail Blazers",
 "changes": [{"market": "spread", "period": "ft", "line": -3.5, "outcome": "home",
              "price": 1.874, "at": "2026-10-27T02:02:05Z"}, ...]}
Python
import pandas as pd
games = pd.read_json("hoopsapi-nba-2026-27.ndjson.gz", lines=True)
changes = games.explode("changes")

What is in a past-season file?

Every game of a season with its final score, quarter scores and closing moneyline: the average of the bookmakers' last prices before tip-off. Preseason, regular season, play-in and playoffs; team names match the API.

One line of hoopsapi-nba-2023-24.ndjson.gz
{"season": "2023-24", "stage": "regular-season", "start_time": "2023-10-24T23:30:00Z",
 "home": "Denver Nuggets", "away": "Los Angeles Lakers", "home_score": 119, "away_score": 107,
 "periods": [[34, 20], [29, 34], [24, 26], [32, 27]],
 "closing": {"moneyline": {"home": 1.51, "away": 2.64}}, "bookmakers": 8}

Scores include overtime. closing.moneyline is null for the few games without reliable closing odds. The NBA Cup knockout games (from 2023-24) are not included yet.

Downloads

Data plan Sign in with a Data plan account to download; other plans can see what is available. The current season is updated through 2026-11-01.

CompetitionCurrent season (every price change)Past seasons (results and closing odds)
NBA2026-27 (156 games so far)2025-26 · 2024-25 · 2023-24 · 2022-23 · 2021-22

How do I download through the API?

The same files are available with your API key. Each download counts as one request.

List files, then download one
curl -H "Authorization: Bearer YOUR_API_KEY" https://hoopsapi.com/api/v1/exports
curl -H "Authorization: Bearer YOUR_API_KEY" -o nba-2026-10.ndjson.gz \
  https://hoopsapi.com/api/v1/exports/nba/2026-10.ndjson.gz

Need another league or older seasons?

Tell us which league and which seasons or years you need, and we'll reply by email with availability and a price.

Try it with real data

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