Skip to main content

GET /api/bookmakers

Returns all bookmakers that have odds scraped within the last 10 minutes. Use the name field as the bookmaker filter on /api/odds, /api/events, and /api/value-bets.

Query Parameters

ParameterTypeDefaultDescription
is_livebooleantrue to filter to bookmakers with live (in-play) odds only

Response

{
  "data": [
    {
      "name": "Betsson",
      "odds_count": 12548,
      "has_live": false,
      "last_scraped_at": "2026-04-20T14:09:16Z"
    },
    {
      "name": "Winamax",
      "odds_count": 3581,
      "has_live": false,
      "last_scraped_at": "2026-04-20T14:07:11Z"
    },
    {
      "name": "Betclic",
      "odds_count": 4508,
      "has_live": true,
      "last_scraped_at": "2026-04-20T14:09:00Z"
    },
    {
      "name": "Unibet.fr",
      "odds_count": 3846,
      "has_live": false,
      "last_scraped_at": "2026-04-20T14:09:11Z"
    }
  ],
  "meta": {
    "count": 4,
    "rate_limit_remaining": 298
  }
}

Response Fields

FieldTypeDescription
namestringBookmaker display name — use this value exactly as the bookmaker filter
odds_countintegerNumber of distinct odds rows scraped in the last 10 minutes
has_livebooleantrue if this bookmaker has in-play odds available right now
last_scraped_atISO-8601 stringTimestamp of the most recent scrape for this bookmaker

Active Bookmakers

BookmakerCountryNotes
BetssonFRHigh market depth, all sports
WinamaxFRStrong French football coverage
BetclicFRLive odds available
Unibet.frFRWide player prop coverage
1xbetBroad international coverage
Bet365UKAll major sports
DaznBetFRFrench leagues, Swarm data
VbetFRFrench leagues, Swarm data
StakeCrypto bookmaker
CloudbetCrypto bookmaker
PolymarketPrediction market prices

Notes

  • Only bookmakers with scrapes in the last 10 minutes appear. Use GET /api/health (internal) to see all scrapers’ staleness.
  • odds_count reflects the number of individual odds lines (one row per selection), not the number of events.
  • Cache TTL: 60 seconds.

Code Examples

# All active bookmakers
curl "https://api.oddsstream.io/api/bookmakers" \
  -H "X-Api-Key: os_live_YOUR_KEY"

# Only bookmakers with live odds
curl "https://api.oddsstream.io/api/bookmakers?is_live=true" \
  -H "X-Api-Key: os_live_YOUR_KEY"
import requests

resp = requests.get(
    "https://api.oddsstream.io/api/bookmakers",
    headers={"X-Api-Key": "os_live_YOUR_KEY"}
)
bookmakers = [b["name"] for b in resp.json()["data"]]
print("Active bookmakers:", bookmakers)
# → ['Betsson', 'Winamax', 'Betclic', ...]
const resp = await fetch("https://api.oddsstream.io/api/bookmakers", {
  headers: { "X-Api-Key": "os_live_YOUR_KEY" }
});
const { data } = await resp.json();
const liveBookmakers = data.filter(b => b.has_live).map(b => b.name);