API reference
Get a score
One event's score for the major leagues: live or final, with the source's game id. Business and Enterprise.
/odds/v1/scores- Cost
- 1 token
- Authentication
- X-API-Key, your own key (not the demo key)
Parameters
event_idstringrequiredAn event_id from /events, sent back verbatim.
Request
The demo key (Free plan) cannot call this endpoint: it answers 403 plan_required. Set ODDS_API_KEY to your own key first.
curl -s "https://api.b337.ai/odds/v1/scores?event_id=american_football%2Fus%2Fnfl%2Fnew_orleans_saints_v_atlanta_falcons%2F2026-10-06" \
-H "X-API-Key: $ODDS_API_KEY"import os
import requests
resp = requests.get(
"https://api.b337.ai/odds/v1/scores",
params={"event_id": "american_football/us/nfl/new_orleans_saints_v_atlanta_falcons/2026-10-06"},
headers={"X-API-Key": os.environ["ODDS_API_KEY"]},
timeout=10,
)
resp.raise_for_status()
print(resp.json())// Node 18+, saved as an .mjs file
const res = await fetch("https://api.b337.ai/odds/v1/scores?event_id=american_football%2Fus%2Fnfl%2Fnew_orleans_saints_v_atlanta_falcons%2F2026-10-06", {
headers: { "X-API-Key": process.env.ODDS_API_KEY },
});
console.log(await res.json());Response
{
"event_id": "american_football/us/nfl/new_orleans_saints_v_atlanta_falcons/2026-10-06",
"event": {"event_id": "american_football/us/nfl/new_orleans_saints_v_atlanta_falcons/2026-10-06",
"sport": "american_football", "league": "nfl", "country": "us",
"name": "New Orleans Saints v Atlanta Falcons", "home": "New Orleans Saints",
"away": "Atlanta Falcons", "start_time": "2026-10-06T00:15:00Z", "status": "finished"},
"score": {"status": "final", "home_score": 24, "away_score": 45, "period": null,
"clock": null, "source": "espn", "source_game_id": "401872979",
"updated_at": "2026-10-06T04:00:03Z"},
"reason": null, "generated_at": "2026-10-06T07:30:00Z"
}Fields
| Field | Meaning |
|---|---|
status | scheduled, live or final: the source's state, not ours |
home_score, away_score | The event's home and away (event.home, event.away), even when the source lists the game the other way round |
period, clock | Live only, when the source states them (Q2, 3rd, HT; 5:21), else null |
source, source_game_id | Where the score came from and that source's own game id |
updated_at | When the source row was last written |
reason | Set when score is null: not_covered (league), not_started, outright, no_sides, no_game or ambiguous |
We never guess a game. A score binds only when both team names are the event's two teams and the game started within a day of the event. 404 only for an event_id we never listed.
Leagues covered
Scores exist for these leagues only: NBA, NHL, MLB, NFL, AFL, NRL, MLS, A-League, EPL, LaLiga, Serie A, Bundesliga, Ligue 1, the Champions League (ucl) and the Europa League (europa_league). Final scores for all of them; live scores, with period and clock, for the NBA and AFL.
Every other sport and league has no score yet: score is null with reason: "not_covered".
Selection results
On a finished event's /odds, once the score is final, each selection of the closing card can carry result: won, lost or push.
- Graded: full-game
head_to_head(a Draw wins on a level score),lineand handicap markets (your side's score plus the line against the other's; exactly level is apush), and the match total (exactly the line is apush). - Never graded (null): periods, player props, bands, team totals, quarter lines (x.25 and x.75), a level score on a two-way head to head, and Champions League, Europa League, MLS and A-League matches where extra time is possible.
{"market": "line", "selections": [
{"selection_key": "152bf435125f", "name": "New Orleans Saints (-26.5)", "line": -26.5,
"result": "lost", "prices": {"...": "..."}}]}Results are informational: your book's own settlement rules decide your bet.