---
title: Odds & best prices
description: Query consensus and per-bookmaker decimal odds, track line movement, and find the best available price per market.
---

# Odds & best prices

BSD exposes odds at three levels: **consensus** (one number per market),
**per-bookmaker comparison**, and a dedicated multi-sport
[Odds API](/docs/odds-api/) with tick-level prices. All odds are decimal.

## Consensus odds for a match (free)

```bash
curl -H "Authorization: Token YOUR_API_KEY" \
     "https://sports.bzzoiro.com/api/v2/events/223510/odds/"
```

```json
{
  "event_id": 223510,
  "odds": {
    "1x2": { "home": 2.45, "draw": 3.10, "away": 3.05 },
    "over_under_25": { "over": 2.10, "under": 1.75 },
    "btts": { "yes": 2.05, "no": 1.72 }
  }
}
```

## The odds feed (free)

`/api/v2/odds/` is a filterable feed of current prices, one row per
market/outcome/bookmaker:

```bash
# All 1x2 prices for one match
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/odds/?event_id=223510&market=1x2"

# Everything that moved in the last 10 minutes in a league
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/odds/?league_id=85&updated_after=2026-08-02T14:50:00Z"
```

Useful filters: `market`, `outcome`, `bookmaker_slug`, `movement`
(`up`/`down`), `min_decimal_odds`/`max_decimal_odds`, `is_max_quote` (only
rows that are the best current price for their outcome). Each row carries
`previous_decimal_odds` + `movement` so you can render drift arrows without
storing history.

Markets: `1x2`, `over_under_15/25/35`, `btts`, `double_chance`,
`draw_no_bet`, plus lined markets (`total_corners`, `total_red_cards`) which
include a `line` field.

## Best price per outcome (free)

```bash
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/odds/best/?market=1x2&league_id=85"
```

Returns, per event, the single best decimal price for each outcome with the
bookmaker that offers it — the endpoint behind price-comparison tables.

## Per-bookmaker grid for one match (free)

```bash
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/events/223510/odds/comparison/"
```

All markets × all bookmakers for one event, ready to render as a comparison
grid. Bookmaker names/slugs come from `GET /api/v2/bookmakers/`.

## Prediction-market probabilities (free)

```bash
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/events/223510/polymarket/"
```

Polymarket implied probabilities (0–1 floats) for matches that have an active
market — an independent signal to show against bookmaker odds.

## Model predictions vs the market (free)

```bash
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://sports.bzzoiro.com/api/v2/events/223510/prediction/"
```

Forecast probabilities per market (match result, totals, BTTS, corners) with
expected goals and a most-likely score. Compare `prob_*` against the implied
probability of the odds feed to build value screens.

## Tick-level, multi-sport: the Odds API (separate product)

For odds across **all sports** (football, tennis, basketball, hockey, darts,
esports…), with observation timestamps and the pre-match closing price per
market, use the dedicated [Odds API](/docs/odds-api/) — a separate $5/mo
subscription, currently **free for everyone until 2026-08-17**.

## Live odds without polling

The [football WebSocket](/docs/websocket/football/) pushes consensus odds
(~30 s cadence) and, with `bookmaker_slug` subscriptions, per-bookmaker
updates for a match — no polling loop needed.
