Clutch's NBA win probabilities, free to download.
Every number Clutch has put on an NBA game this season, as JSON and CSV. No key, no sign-up: rebuilt with the site four times a day, free to reuse with credit.
The files
| FILE | WHAT IT HOLDS | GAMES |
|---|---|---|
| games.json | Every game of the season that has Clutch's number: the number, the result, whether the call held, and its seal. | 56 |
| games.csv | The same rows as a spreadsheet. | 56 |
| tonight.json | Tonight's games only, with each number as it stands. | 4 |
| nba-538-format.csv | The same games in the column layout of FiveThirtyEight's retired nba_elo_latest.csv. | 56 |
From Oct 20, 2026 to tonight. 52 of those games are graded so far: 36–16. A game's row appears once Clutch has a number for it, usually the morning of the game.
The fields
game_id- Clutch's id for the game (the same in the seal files).
date- The game's date in New York (US Eastern), YYYY-MM-DD.
tip_utc- Scheduled tip-off, UTC.
season, season_type- "2026-27"; "Regular Season" or "Playoffs".
home, away- Team codes (BKN, CHA, PHX…); home_name and away_name spell them out.
neutral- true when neither side is at home.
clutch_home_win_prob- Clutch's chance the home team wins, 0 to 1. clutch_away_win_prob is 1 minus it.
called- The side Clutch's number favours.
status- scheduled, live, halftime or final.
home_score, away_score- Filled once the game is final.
graded, called_right- Whether the Ledger has graded the call, and whether the called side won.
sealed_at, seal_file- When the number was sealed and the file on GitHub that holds it.
game_url- The game's page on clutchledger.com.
Read it in a line
Python, with pandas:
import pandas as pd
games = pd.read_csv("https://clutchledger.com/data/games.csv")
graded = games[games.graded]
print(graded.called_right.mean())
R:
games <- read.csv("https://clutchledger.com/data/games.csv")
table(games$called_right)
In a browser or a bot (the files allow any origin):
const res = await fetch("https://clutchledger.com/data/tonight.json");
const { games } = await res.json();Coming from FiveThirtyEight?
FiveThirtyEight's NBA forecast stopped after the 2022-23 season, the site closed in 2025, and its nba_elo.csv and nba_elo_latest.csv addresses now send you to ABC News. nba-538-format.csv has the same columns up to the scores (team1 at home, the same team codes, the season as the year it ends), with Clutch's number in clutch_prob1 and clutch_prob2. What changed and how to switch →
Credit
Clutch's numbers on this page are free to reuse under CC BY 4.0: credit Clutch and link to clutchledger.com. A line like this under your chart or post is enough:
Data: <a href="https://clutchledger.com/">Clutch</a> (CC BY 4.0)What's in, what isn't
Only Clutch's own numbers. The site shows ESPN BPI and the market's number beside Clutch's on every game; those belong to their sources and are not in the files. Pro numbers and the preseason are left out. Before tip a game's number can still move as news comes in; the one graded is the last sealed before tip, and a graded row never changes.
Every number is sealed with a SHA-256 fingerprint in a public repository before tip, so a row can be checked against its seal file. How to check one →
More
The same numbers with every seal and reveal file, plus the two-season test's calibration bands, are on Kaggle and Hugging Face, updated every Monday. How the numbers hold up: Accuracy.