Skip to content
datasportsAPI

Betting oddsFixture odds

Documentation

/

Type to filter the docs by title or path.

Betting oddsEndpoint 107 of 116

Fixture odds

GET

/v2/fixtures/{id}/odds

Plan
Pro + Business
Auth
Bearer dsa_live_…
Parameters
1 required · 0 optional
Returns
Odds

All markets the bookmaker offers on a fixture — result (1X2), double chance, draw no bet, winner, first to score, both teams to score, Asian handicap, handicap / point spread, goal / card / corner / points totals, the cricket toss winner, most sixes, a hundred / fifty in the match, and next goal (live).

Each comes with opening and current prices in decimal and fractional form, the direction of the latest price change, its suspension state and, once the match is over, the winning selections. Available on Pro and Business plans.

Plan access

Requires a Pro or Business plan; every other plan receives 403 endpoint_not_in_plan.

Worth knowing

  • Every market has a key that stays the same for the whole fixture, built from the kind followed by :period, :line and :live ("result", "result:half1", "totalGoals:2.5", "asianHandicap:-1.25", "winner:live"); use it to merge WebSocket odds frames.
  • During play the bookmaker shows the in-play market (live: true, key ending …:live) alongside the now-closed pre-match market, which keeps its final prices from before kick-off.
  • line is the figure of a total or the handicap of the HOME side; when the line moves, the market gets a new key.
  • decimal equals 1 + fractional, rounded to 2 decimal places.
  • winning is null until settlement and wherever our data source gives no result — and some markets are never settled by the source.
  • On NBA games, for instance, the point spread (handicap) and the first-quarter winner remained null hours after full time when we checked on 2026-11-05, while the total and the full-time and first-half winners were settled within seconds.
  • Settlement is relayed from the source exactly as given and never computed by us, so on such markets winning remains null permanently.
  • An empty markets list, with bookmaker / updatedAt null, means the bookmaker offers nothing on the fixture — typical for minor leagues and matches far in the future.
  • Over REST the data refreshes roughly every 30 seconds in play; subscribe to odds:{id} to receive every price change.

01Parameters

  • idpathRequired

    fixture id issued by DataSportsAPI, a positive integer

02Request

The same call from the command line and each SDK. The SDK lines assume a client created with your key; left out, it is read from DATASPORTSAPI_API_KEY. Installing a client: SDKs & CLI.

curl -H "Authorization: Bearer dsa_live_…" \
    "https://api.datasportsapi.com/v2/fixtures/{id}/odds"

03Response

The top-level keys of the JSON body. Each object links to its full shape in the data reference.

data
Odds
meta
count (number of markets)
ObjectsOdds
Example response
{ "data": { "fixtureId": 701210, "bookmaker": { "id": 1, "name": "bet365" }, "updatedAt": "2026-11-04T17:20:00.000Z",
    "markets": [
      { "key": "result", "kind": "result", "name": "Full time", "period": "match", "line": null, "live": false, "suspended": false,
        "choices": [
          { "name": "1", "outcome": "home", "fractional": "19/20", "decimal": 1.95, "openingFractional": "11/10", "openingDecimal": 2.1, "change": "down", "winning": null },
          { "name": "X", "outcome": "draw", "fractional": "10/3", "decimal": 4.33, "openingFractional": "5/2", "openingDecimal": 3.5, "change": "up", "winning": null },
          { "name": "2", "outcome": "away", "fractional": "11/5", "decimal": 3.2, "openingFractional": "11/5", "openingDecimal": 3.2, "change": "none", "winning": null } ] },
      { "key": "totalGoals:2.5", "kind": "totalGoals", "name": "Match goals", "period": "match", "line": 2.5, "live": false, "suspended": false,
        "choices": [ { "name": "Over", "outcome": "over", "fractional": "4/5", "decimal": 1.8, … }, { "name": "Under", "outcome": "under", … } ] },
      { "key": "asianHandicap:-0.5", "kind": "asianHandicap", "name": "Asian handicap", "period": "match", "line": -0.5, … }, … ] },
  "meta": { "count": 19 } }

04Errors

  • 403endpoint_not_in_plan

    returned to keys on the Free and Starter plans

  • 403history_not_in_plan

    the fixture predates the history your plan covers

  • 404not_found

    DataSportsAPI never issued this id

Any key can also meet401unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code