LançamentoSetup R$ 1.200 + R$ 500/mês. Este valor é exclusivo do lançamento e será reajustado depois.Ver plano

API B2B de odds, eventos e resultados

Odds ao vivo e liquidação de bilhetes. Uma única API.

Eventos ao vivo e pré-jogo, odds normalizadas da bet365 e de outras casas, e resultados com o status de cada seleção (ganhou, perdeu, devolvida) para fechar bilhetes. REST + WebSocket, autenticação OAuth2.

28esportes no catálogo
bet365+ ~45 casas
REST + WSsnapshot e streaming
R$ 500por mês no lançamento
GET/api/v1/events/{id}/odds?market=match_winnerformato real
{
  "data": [
    {
      "event_id": "01a14699-c3d7-7203-b132-134a73ed510b",
      "bookmaker": {
        "id": 1, "slug": "bet365", "name": "Bet365"
      },
      "market": "match_winner",
      "selection_key": "home",
      "line": null,
      "price": "1.6000",
      "suspended": false,
      "source_updated_at": "2026-10-16T21:32:07Z"
    },
    // … "draw" → "5.2500", "away" → "3.3000"
  ],
  "meta": {
    "served_at": "2026-10-16T21:32:09Z",
    "stale": false,
    "request_id": "51e80cc5-4d7f-449a-…",
    "sequence": 1842
  }
}

Cobertura

28 esportes no catálogo, todos com o mesmo formato

Os 28 esportes da fonte já estão mapeados na API. Futebol, basquete e tênis estão ligados hoje; os demais são ligados por configuração. Filtre por sport usando o slug.

ligado disponível hojesob ativação mapeado, liga por configuração

Esportes tradicionais

23 esportes
  • Futebolsoccer
    ligado
  • Basquetebasketball
    ligado
  • Tênistennis
    ligado
  • Hóquei no geloice-hockey
  • Vôleivolleyball
  • Handebolhandball
  • Rugby Unionrugby-union
  • Floorballfloorball
  • Futsalfutsal
  • Beisebolbaseball
  • Polo aquáticowater-polo
  • Críquetecricket
  • Tênis de mesatable-tennis
  • Rugby Leaguerugby-league
  • Badmintonbadminton
  • Sinuca (snooker)snooker
  • Esportes gaélicosgaelic-sports
  • Dardosdarts
  • Futebol australianoaustralian-rules
  • Squashsquash
  • Vôlei de praiabeach-volleyball
  • Futebol americanoamerican-football
  • Bowlsbowls

Corridas

2 esportes
  • Turfe (cavalos)horse-racing
  • Galgosgreyhounds

Esportes de combate

2 esportes
  • MMA / UFCmma
  • Boxeboxing

E-sports

1 esporte
  • E-sportsesports

Casas de aposta

ativa hoje

bet365

Catálogo completo: pré-jogo e ao vivo, todos os mercados publicados pela casa. Preços ao vivo publicados em fração são convertidos para decimal.

disponíveis para ativação

~45 casas, mercados principais

Ativadas por configuração. Entregam vencedor (1X2 / moneyline), handicap asiático e total (over/under); algumas publicam só o vencedor. A presença varia por liga e região.

PinnacleBetfair1XBet10Bet888SportBwinUnibetWilliam HillLadbrokesCoralDraftKingsFanDuelBetway+ outras

Mercados

Códigos padronizados e o catálogo completo da bet365

Cada odd traz market, selection_key e line. Os mercados mais usados têm código fixo, igual em todas as casas, no pré-jogo e no ao vivo. Os demais da bet365 chegam como bet365_ + nome do mercado.

EsportemarketDescriçãoselection_key
Futebolmatch_winnerResultado final (1X2)home draw away
double_chance · half_time_double_chanceDupla chance (jogo / intervalo)home_or_draw home_or_away draw_or_away
draw_no_betEmpate anulahome away
both_teams_to_scoreAmbos marcamyes no
half_time_result · half_time_full_timeIntervalo · intervalo/finalhome … away-away
correct_score · half_time_correct_scorePlacar exato (jogo / intervalo)2-1
asian_handicap · first_half_asian_handicapHandicap asiático (com line)home away
over_under · first_half_over_under · total_goalsTotal de gols (goal line e linhas europeias)over under
asian_corners · first_half_asian_corners · total_cornersEscanteiosover under
Basquetemoneyline · first_half_moneylineVencedor (com prorrogação) / 1º tempohome away
spread · first_half_spreadHandicap de pontoshome away
over_under · first_half_over_underTotal de pontosover under
Demaismatch_winnerVencedorhome (draw) away
asian_handicapHandicap (games, sets, pontos, gols, corridas)home away
over_underTotalover under

Catálogo bet365: mercados por esporte (jogo de amostra)

No futebol: escanteios, cartões, ambos marcam por tempo, total por time, mercados de jogador (bet365_goalscorers, bet365_shots_on_target, bet365_goalkeeper_saves…), janelas de minutos ao vivo e mais. Lista completa no guia de cobertura.

Mercado listado nem sempre tem odds. Ligas grandes recebem dezenas ou centenas de mercados; ligas menores costumam ter só vencedor, handicap e total. Mercados abrem e fecham conforme o momento do jogo, e ao vivo a casa suspende em lances perigosos: a seleção chega com suspended: true. Preços sempre em decimal com 4 casas, como string ("1.8696").

Resultados e liquidação

Feche bilhetes sem calcular nada

Além do placar, cada resultado traz o bloco markets com o status de cada seleção dos mercados liquidados, um item por linha que teve odds no jogo. Chega por REST e em tempo real no WebSocket (result.updated).

GET/api/v1/results?date=2026-10-16markets[]
[
  {"market": "match_winner", "line": null,
   "selections": {"home": "won", "draw": "lost", "away": "lost"},
   "others": null},
  {"market": "asian_handicap", "line": "-0.750",
   "selections": {"home": "half_won", "away": "half_lost"},
   "others": null},
  {"market": "correct_score", "line": null,
   "selections": {"2-1": "won"},
   "others": "lost"}
]
  • wonGanhou
  • lostPerdeu
  • voidDevolvida (linha inteira empatada, empate anula com empate, evento cancelado)
  • half_wonMetade ganha, metade devolvida (linhas de quarto)
  • half_lostMetade perdida, metade devolvida
Futebol · 17 mercadosmatch_winner, double_chance, draw_no_bet, both_teams_to_score, intervalo, intervalo/final, placar exato, handicap asiático, totais de gols e escanteios (jogo e 1º tempo).
Basquete · 6 mercadosmoneyline, spread, over_under (com prorrogação) e as versões do 1º tempo.
Vencedor em 8 esportesTênis, vôlei, vôlei de praia, tênis de mesa, badminton, squash, sinuca e dardos.

Resultados ficam disponíveis por 5 dias após o fim do jogo (purge_after). Mercados genéricos bet365_* não são liquidados.

Recursos

O que a API entrega

REST com envelope fixo

Sempre {"data", "meta"}. Paginação por cursor, datas em UTC ISO 8601 e IDs internos (UUID) estáveis.

WebSocket por esporte

Snapshot na assinatura e deltas odds.updated com sequence para reconciliar. Canal ao vivo por esporte com placar, tempo e resultados.

OAuth2 Client Credentials

Token Bearer com scopes por recurso. Várias credenciais por conta (produção e homologação), revogáveis uma a uma no portal.

Coleta centralizada

Sua requisição nunca aciona o fornecedor. Alvos de coleta: eventos ao vivo 3–5 s, odds ao vivo 2–5 s, pré-jogo 15–60 s.

Frescor explícito

Toda resposta traz source_updated_at e stale. Se a origem atrasar, você recebe o último snapshot e decide se ainda serve.

Limites transparentes

Cotas por minuto, hora, dia e mês, cabeçalhos X-RateLimit-* e GET /usage para acompanhar o consumo.

Documentação

Veja tudo antes de contratar

Guia de integração, endpoints, WebSocket, erros e limites. A referência completa (OpenAPI 3.1) é pública.

Do zero às odds em tempo real

API REST
https://api.bestoddsapi.com/api/v1
Token OAuth2
https://api.bestoddsapi.com/oauth/token
WebSocket
wss://ws.bestoddsapi.com (endereço exato vem no ticket)
Portal
https://api.bestoddsapi.com/portal

1Credenciais

OAuth2 Client Credentials (máquina a máquina): client_id público e client_secret sigiloso, exibido só na criação ou rotação. Emitidas no portal do cliente após a contratação.

2Access token

curl -s -X POST "https://api.bestoddsapi.com/oauth/token" \
  -d grant_type=client_credentials \
  -d client_id="$BESTSODDSAPI_CLIENT_ID" \
  -d client_secret="$BESTSODDSAPI_CLIENT_SECRET" \
  -d scope="events:read odds:read results:read usage:read ws:connect"

# { "token_type": "Bearer", "expires_in": 3600, "access_token": "eyJ..." }

Envie Authorization: Bearer <access_token> em todas as chamadas e reutilize o token até perto de expires_in.

3Eventos ao vivo

curl -s "https://api.bestoddsapi.com/api/v1/events/live?sport=soccer&per_page=20" \
  -H "Authorization: Bearer $TOKEN" -H "Accept: application/json"

Use sempre o id interno (UUID). IDs do fornecedor de origem não são expostos.

4Odds de um evento

curl -s "https://api.bestoddsapi.com/api/v1/events/$EVENT_ID/odds?market=match_winner,over_under&bookmaker=bet365" \
  -H "Authorization: Bearer $TOKEN" -H "Accept: application/json"

price e line são strings decimais: use tipo decimal (bcmath, decimal.js, BigDecimal), nunca float. meta.sequence serve para reconciliar com o WebSocket.

5Streaming

Peça um ticket em POST /ws/authorize e conecte (protocolo Pusher 7). Detalhes na aba WebSocket. Exemplos executáveis em cURL, PHP e Node.js na documentação oficial.

Plano

Um plano, preço de lançamento

Válido apenas no lançamento

Assinatura bestoddsapi

Setup (único)
R$1.200,00
Mensalidade
R$500,00 /mês
  • Futebol, basquete e tênis ligados; demais esportes do catálogo ativáveis por configuração
  • Odds da bet365 com catálogo completo, pré-jogo e ao vivo
  • Eventos, placares e resultados com liquidação de mercados
  • REST + WebSocket, credenciais OAuth2 e portal do cliente
  • Suporte na integração e mensalidade de lançamento mantida
Contratar pelo WhatsApp

Preço de lançamento. Setup de R$ 1.200,00 e mensalidade de R$ 500,00 valem somente para contratações feitas durante o período de lançamento. Após esse período, os valores serão reajustados para novas assinaturas.

Como funciona a contratação

Você entra no nosso grupo do WhatsApp, tira as dúvidas e fecha a assinatura. O setup libera suas credenciais OAuth2 e o acesso ao portal, e acompanhamos a integração até as primeiras odds chegarem.

A mensalidade cobre o acesso contínuo, sem cobrança por esporte ou por mercado. Limites de requisição e de conexões WebSocket são definidos no plano e visíveis em GET /usage.

Quer validar antes? Leia a documentação e a referência da API: tudo é público.