Odds337Docs
    Odds337BackGet API key
    Getting started
    • Introduction
    • Authentication
    • Quickstart
    • Tokens & pricing
    • Limits
    • Errors
    • Odds formats
    Reference
    • GET/sports
    • GET/books
    • GET/teams
    • GET/players
    • Logos & headshots
    • GET/events
    • GET/odds
    • GET/scores
    • GET/history
    • GET/clv
    • POST /clv
    • GET/usage
    • GET/_health
    • WebSocket
    • Specs & SDKs
    Racing
    • GET/racing/meetings
    • GET/racing/race
    • GET/racing/history
    • race_id and status
    Concepts
    • event_id
    • selection_key
    • team_id & player_id
    • Open & close prices
    • 337 model price
    • Event links
    • Statuses
    Getting started
    • Introduction
    • Authentication
    • Quickstart
    • Tokens & pricing
    • Limits
    • Errors
    • Odds formats
    Reference
    • GET/sports
    • GET/books
    • GET/teams
    • GET/players
    • Logos & headshots
    • GET/events
    • GET/odds
    • GET/scores
    • GET/history
    • GET/clv
    • POST /clv
    • GET/usage
    • GET/_health
    • WebSocket
    • Specs & SDKs
    Racing
    • GET/racing/meetings
    • GET/racing/race
    • GET/racing/history
    • race_id and status
    Concepts
    • event_id
    • selection_key
    • team_id & player_id
    • Open & close prices
    • 337 model price
    • Event links
    • Statuses

    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.

    GET/odds/v1/scores
    Cost
    1 token
    Authentication
    X-API-Key, your own key (not the demo key)

    Parameters

    • event_idstringrequired
      An 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

    200 OK
    {
      "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

    Business and Enterprise only: other plans get 403 plan_required with feature: "scores". The same score object rides /events and /odds at no extra tokens.

    FieldMeaning
    statusscheduled, live or final: the source's state, not ours
    home_score, away_scoreThe event's home and away (event.home, event.away), even when the source lists the game the other way round
    period, clockLive only, when the source states them (Q2, 3rd, HT; 5:21), else null
    source, source_game_idWhere the score came from and that source's own game id
    updated_atWhen the source row was last written
    reasonSet 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), line and handicap markets (your side's score plus the line against the other's; exactly level is a push), and the match total (exactly the line is a push).
    • 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.

    PreviousGET /oddsNextGET /history

    On this page

    • Parameters
    • Request
    • Response
    • Fields
    • Leagues covered
    • Selection results