FIFA WORLD CUP 2026
Group AMexico·Czechia·South Africa·South KoreaGroup BBosnia & Herzegovina·Canada·Qatar·SwitzerlandGroup CBrazil·Haiti·Morocco·ScotlandGroup DAustralia·Paraguay·Türkiye·USAGroup ECuraçao·Ecuador·Germany·Côte d'IvoireGroup FJapan·Netherlands·Sweden·TunisiaGroup GBelgium·Egypt·Iran·New ZealandGroup HCabo Verde·Saudi Arabia·Spain·UruguayGroup IFrance·Iraq·Norway·SenegalGroup JAlgeria·Argentina·Austria·JordanGroup KColombia·DR Congo·Portugal·UzbekistanGroup LCroatia·England·Ghana·Panama Group AMexico·Czechia·South Africa·South KoreaGroup BBosnia & Herzegovina·Canada·Qatar·SwitzerlandGroup CBrazil·Haiti·Morocco·ScotlandGroup DAustralia·Paraguay·Türkiye·USAGroup ECuraçao·Ecuador·Germany·Côte d'IvoireGroup FJapan·Netherlands·Sweden·TunisiaGroup GBelgium·Egypt·Iran·New ZealandGroup HCabo Verde·Saudi Arabia·Spain·UruguayGroup IFrance·Iraq·Norway·SenegalGroup JAlgeria·Argentina·Austria·JordanGroup KColombia·DR Congo·Portugal·UzbekistanGroup LCroatia·England·Ghana·Panama
Open full hub →
Growing Discord community — direct access to the developer, live coverage & picks. Join the Discord Join now →
Odds API · $5/mo

Built for serious bettors.
Not a tipster service.

Raw per-bookmaker odds from 15 bookmakers across 12+ sports and 87+ football leagues. Football events cross-linked to BSD match data come with xG, lineups and ML predictions. More league coverage than most commercial providers — the inputs serious bettors use to build their own edges.


12 sports · 15 bookmakers

Football and tennis events are linked — they include a bsd_id you can use with the BSD football and tennis APIs. All other sports are odds-only (bsd_id: null).

Football linked
🎾 Tennis linked
🏀 Basketball
Baseball
🏒 Ice Hockey
🏈 Am. Football
🎯 Darts
🎮 CS2
🤾 Handball
🏉 Rugby
🏐 Volleyball
🏑 Rugby League

Bookmakers included

Raw per-bookmaker prices — not just a single averaged number. 15 books plus pre-computed consensus lines.

Bet365 Pinnacle 1xBet Bwin Unibet William Hill Betway Betano 888Sport Betsson Interwetten Marathon Mozzartbet Novibet SportingBet

Football — 87+ leagues & competitions

The odds feed covers 87+ football leagues — more than most commercial providers. 66 of them are linked to BSD match data (xG, lineups, predictions); the rest are odds-only. Includes qualifiers, cups, and international tournaments — not just the Big 5.

Europe — Top flights
  • Premier League · La Liga
  • Serie A · Bundesliga · Ligue 1
  • Eredivisie · Championship
  • Super Lig · Pro League (BEL)
  • Scottish Prem · Ekstraklasa
  • Allsvenskan · Eliteserien
  • Super League (SUI) · Superliga (ROU)
Europe — Cups & continental
  • Champions League · Europa League
  • UEFA Nations League · Euro 2024
  • FA Cup · Carabao Cup
  • Copa del Rey · Coppa Italia
  • DFB Pokal · Coupe de France
  • Puchar Polski
  • WC Qualification UEFA
Americas & International
  • World Cup 2026
  • Copa Libertadores · Copa Sudamericana
  • Brasileirão Serie A & B
  • MLS · Liga MX
  • Copa America 2024
  • CONCACAF Nations League
  • WC Qualifications (all 6 conf.)
Africa · Asia · Other
  • Saudi Pro League
  • CAF Champions League · AFCON
  • Nigeria PFL · Botola Pro
  • J1 League · K League 1
  • Chinese Super League
  • AFC Asian Cup 2023
  • USL Championship (USA)

Two IDs, every response

Every event in the API includes mod_id and bsd_id. They serve different purposes:

FieldTypeWhat it is
mod_id integer The ID used by the Odds API. Pass it to GET /odds/api/events/{mod_id}/ to get all bookmakers for that event.
bsd_id integer | null The event's ID in our master sports database. linked for football and tennis — use it with /api/v2/events/{bsd_id}/ or /tennis/api/v2/matches/{bsd_id}/. null for all other sports.
odds[ ] array One entry per (bookmaker × market × selection). Raw price, not averaged. Includes bookmaker, market, kind, selection, line, price, observed_at.
// A single football event from GET /odds/api/events/?sport=football
{
  "mod_id":       209476,   // use this to call /odds/api/events/209476/
  "bsd_id":       209476,   // same for football — use with /api/v2/events/209476/
  "sport":        "football",
  "home_team":    "Barcelona",
  "away_team":    "Real Madrid",
  "kickoff_utc":  "2026-06-08T19:00:00+00:00",
  "status":       "notstarted",
  "league":       "La Liga",
  "odds": [
    { "bookmaker": "pinnacle", "market": "1X2_HOME_FT", "kind": "1X2",
      "selection": "HOME", "line": null, "price": 1.87,
      "observed_at": "2026-06-08T18:00:00+00:00" },
    { "bookmaker": "bet365",  "market": "1X2_HOME_FT", "kind": "1X2",
      "selection": "HOME", "line": null, "price": 1.83,
      "observed_at": "2026-06-08T17:55:00+00:00" },
    { "bookmaker": "1xbet",   "market": "OU_OVER_FT",  "kind": "OU",
      "selection": "OVER",  "line": 2.5,  "price": 1.72,
      "observed_at": "2026-06-08T18:02:00+00:00" }
  ]
}

From odds to match data in one step

When bsd_id is present, you can enrich any odds event with match detail, lineups, xG, H2H or ML predictions — all with the same token.

Sportbsd_id isEnrich withYou get
⚽ Football Event.id /api/v2/events/{bsd_id}/
/api/v2/events/{bsd_id}/prediction/
/api/v2/events/{bsd_id}/lineups/
/api/v2/events/{bsd_id}/h2h/
Teams, live score, xG shotmap, lineups, ML prediction, H2H history
🎾 Tennis TennisMatch.id /tennis/api/v2/matches/{bsd_id}/
/tennis/api/v2/matches/{bsd_id}/h2h/
Players, surface, tournament, set scores, H2H, prediction
🏀🏒⚾ Others null Odds only — no internal match database for these sports yet

Code examples

Football — odds + prediction

Get today's football events, then use bsd_id to fetch the ML prediction.

# 1. List football events with per-bookmaker odds
curl "https://sports.bzzoiro.com/odds/api/events/?sport=football&date=2026-06-08" \
  -H "Authorization: Token <your_token>"

# 2. Pick a bsd_id from the response and fetch the ML prediction
curl "https://sports.bzzoiro.com/api/v2/events/209476/prediction/" \
  -H "Authorization: Token <your_token>"

# 3. Or get lineups + xG stats for the same event
curl "https://sports.bzzoiro.com/api/v2/events/209476/lineups/" \
  -H "Authorization: Token <your_token>"
curl "https://sports.bzzoiro.com/api/v2/events/209476/stats/" \
  -H "Authorization: Token <your_token>"

Tennis — odds + match detail

Tennis mod_id and bsd_id are different. Use mod_id for the Odds API, bsd_id for the Tennis API.

# 1. List today's tennis odds
curl "https://sports.bzzoiro.com/odds/api/events/?sport=tennis&date=2026-06-08" \
  -H "Authorization: Token <your_token>"

# Response — note mod_id ≠ bsd_id for tennis
{ "mod_id": 1245, "bsd_id": 37240, "home_team": "Paul T.", "away_team": "Mpetshi Perricard G.", ... }

# 2. Get all bookmakers for that match (use mod_id)
curl "https://sports.bzzoiro.com/odds/api/events/1245/?sport=tennis" \
  -H "Authorization: Token <your_token>"

# 3. Enrich with match detail from tennis API (use bsd_id, Sports Addon required)
curl "https://sports.bzzoiro.com/tennis/api/v2/matches/37240/" \
  -H "Authorization: Token <your_token>"

Basketball / NHL / Baseball — odds only

bsd_id is null for these sports. Use mod_id to get the bookmaker detail.

# NBA odds
curl "https://sports.bzzoiro.com/odds/api/events/?sport=basketball" \
  -H "Authorization: Token <your_token>"

# NHL odds
curl "https://sports.bzzoiro.com/odds/api/events/?sport=hockey" \
  -H "Authorization: Token <your_token>"

# MLB odds
curl "https://sports.bzzoiro.com/odds/api/events/?sport=baseball" \
  -H "Authorization: Token <your_token>"

# Response — bsd_id is null, mod_id is the only usable identifier
{ "mod_id": 1630, "bsd_id": null, "sport": "basketball",
  "home_team": "Boston Celtics", "away_team": "LA Lakers", "league": "NBA",
  "odds": [
    { "bookmaker": "pinnacle", "market": "1X2_HOME_FT", "selection": "HOME", "price": 1.55 },
    { "bookmaker": "bet365",  "market": "OU_OVER_FT",  "selection": "OVER", "line": 221.5, "price": 1.91 }
  ] }

Event detail — all bookmakers, grouped

Call /odds/api/events/{mod_id}/ with ?sport= to get every bookmaker's prices for one event.

# Football event detail (sport param is optional, defaults to football)
curl "https://sports.bzzoiro.com/odds/api/events/209476/" \
  -H "Authorization: Token <your_token>"

# Tennis event detail — must pass sport=tennis
curl "https://sports.bzzoiro.com/odds/api/events/1245/?sport=tennis" \
  -H "Authorization: Token <your_token>"

# Response — bookmakers grouped, each with their full market list
{
  "mod_id": 1245, "bsd_id": 37240, "sport": "tennis",
  "home_team": "Paul T.", "away_team": "Mpetshi Perricard G.",
  "bookmakers": [
    {
      "bookmaker": "pinnacle", "bookmaker_name": "Pinnacle",
      "markets": [
        { "market": "MATCH_WINNER_HOME", "selection": "HOME", "price": 1.44 },
        { "market": "MATCH_WINNER_AWAY", "selection": "AWAY", "price": 2.70 }
      ]
    },
    {
      "bookmaker": "bet365", "bookmaker_name": "bet365",
      "markets": [ ... ]
    }
  ]
}

Endpoints

Base: https://sports.bzzoiro.com · Auth: Authorization: Token <your_token>

EndpointDescriptionParams
GET /odds/api/sports/ List all sports with active odds — event count and bookmaker count.
GET /odds/api/events/ Paginated events with per-bookmaker odds. Returns mod_id and bsd_id. sport, date (YYYY-MM-DD), status (live / upcoming / finished), limit (max 50), offset
GET /odds/api/events/{mod_id}/ All bookmakers for one event, grouped. Pass mod_id from the list. sport (default: football)

Your token is at /dashboard/ → API token. The same token works across all BSD APIs.

Ready to build?

$5/month · cancel any time · same token as your dashboard

Subscribe · $5/mo