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).
{"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"}, ...]}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.
{"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.
| Competition | Current season (every price change) | Past seasons (results and closing odds) |
|---|---|---|
| NBA | 2026-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.
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.gzNeed 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.