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

    Getting started

    Odds formats

    Decimal by default. Ask for American or fractional on /odds or a WebSocket subscribe.

    Choosing a format

    Pass format= on /odds, or the format field of a WebSocket subscribe. Every tier, no extra tokens. Prices are stored in decimal and converted when served, so the three formats are always the same price. The body (and each snapshot / changes frame) says which with odds_format. Any other value is a 400 bad_request.

    It converts every price field: odds, prev_odds, open_odds and close_odds. A missing price stays missing.

    Conversion rules

    FormatTypeRuleExamples
    decimalnumberUnchanged2.1 to 2.1
    americanintegerDecimal 2.0 and up: +(d-1)*100. Below 2.0: -100/(d-1). Rounded half up. Even money is 100; never between -100 and +100.2.0 to 100, 2.5 to 150, 1.5 to -200
    fractionalstring "n/d"The nearest price on the traditional UK ladder (1/1000 up to 1000/1, evens is "1/1"), with traditional spellings kept (6/4, not 3/2). A display value: for maths, use decimal.2.5 to "6/4", 1.85 to "5/6", 2.0 to "1/1"

    Example

    EVENT_ID=$(curl -s "https://api.b337.ai/odds/v1/events?league=epl&limit=1" \
      -H "X-API-Key: demo" | jq -r '.data[0].event_id')
    
    curl -sG "https://api.b337.ai/odds/v1/odds" \
      --data-urlencode "event_id=$EVENT_ID" \
      --data-urlencode "markets=head_to_head" \
      --data-urlencode "books=sportsbet" \
      --data-urlencode "format=fractional" \
      -H "X-API-Key: demo" --compressed
    Response (price-bearing part)
    {
      "odds_format": "fractional",
      "markets": [
        {"market": "head_to_head", "name": "Match Result", "selections": [
          {"selection_key": "774c72a86710", "label": "Arsenal FC",
           "prices": {"sportsbet": {"odds": "3/8", "updated_at": "2026-10-05T03:05:20Z",
                                    "open_odds": "2/7"}}}]}
      ]
    }
    PreviousErrorsNextGET /sports

    On this page

    • Choosing a format
    • Conversion rules
    • Example