Sports scores and settlement results with proof
Normalized scoreboards and final results for 24 leagues, each final available with a notarized snapshot of the source: settlement-grade sports data for prediction market agents.
Endpoints
GET /v1/sports (free) lists supported leagues. GET /v1/scores?league=mlb&date=YYYYMMDD ($0.01) returns the normalized scoreboard. GET /v1/result?league=mlb&event=<id>&attest=true ($0.02) returns one final result with a notarized snapshot of the source bundled.
Supported leagues
| slug | league |
|---|---|
nfl | NFL |
nba | NBA |
wnba | WNBA |
mlb | MLB |
nhl | NHL |
epl | English Premier League |
ucl | UEFA Champions League |
laliga | Spanish LaLiga |
bundesliga | German Bundesliga |
seriea | Italian Serie A |
ligue1 | French Ligue 1 |
mls | MLS |
psl | South African Premiership |
ufc | UFC |
urc | United Rugby Championship |
rugbychampionship | The Rugby Championship |
superrugby | Super Rugby Pacific |
sixnations | Six Nations |
top14 | French Top 14 |
champscup | European Rugby Champions Cup |
premrugby | English Premiership Rugby |
mlr | Major League Rugby |
ipl | Indian Premier League |
bbl | Big Bash League |
The settlement rule
The result endpoint refuses to attest an event that is not final: attest=true on a live or scheduled event returns 409 not_final and no attestation is created. An agent can wire jurat directly into settlement logic without writing its own is-it-over guard. Completion semantics: the upstream completed flag when present; for cricket, which omits it, a final is state post. Cricket scores are strings ("161/5 (18/20 ov, target 156)") and are preserved verbatim; other sports return numbers.
Every event, shape
{
"event_id": "401816171",
"short_name": "CHW @ TOR",
"start": "2026-07-19T17:07:00Z",
"state": "post",
"completed": true,
"home": { "team": "Toronto Blue Jays", "abbrev": "TOR", "score": 0, "winner": false },
"away": { "team": "Chicago White Sox", "abbrev": "CHW", "score": 3, "winner": true },
"venue": "Rogers Centre"
}
Watching a whole league day
GET /v1/watch/league?league=mlb&webhook=https://... ($0.10) watches every event in a league for the day: each final is delivered to your webhook as it lands, with one shared source attestation per check batch, and the watch closes itself when the slate completes. For a single fixture, use a watcher in result:<league>:<event_id> mode.
Scores are facts and facts are not copyrightable (NBA v. Motorola, 2d Cir. 1997). jurat serves facts plus its own attestations of what a source said.