Verificando status…

Odds em tempo real, direto no seu robô.

Feed B2B das casas de aposta que operam no Brasil sob a Lei 14.790/2023. Você assina um WebSocket, escolhe jogos e mercados, e recebe um stream contínuo de deltas normalizados — sem precisar conhecer a API de cada casa.

~19 ms
latência p99
eventos ao vivo
mercados ativos

Latência é o produto

Uma diferença lucrativa entre odds pode durar menos de um segundo. Cada decisão da nossa arquitetura — linguagem, formato de payload, ausência de broker no hot path — usa latência como critério de desempate.

~19 ms

latência interna p99

da captura no extrator ao despacho no WebSocket

0

brokers no hot path

pipeline direto worker → Redis → WebSocket, sem filas intermediárias

1.000+/s

deltas por segundo

throughput atual; pico validado em carga de 30 min

21+ dias

de uptime contínuo

sem um único restart, no nosso ambiente de produção

Números medidos no nosso ambiente de produção e monitorados continuamente via Prometheus + Grafana. Latência interna (captura → despacho); a latência fim-a-fim no cliente depende também da rede entre você e a gente.

Como funciona

Três estágios, cada um isolado do outro: se um conector de casa quebra, o resto do pipeline continua entregando.

1. Extração

Conectores dedicados por casa de aposta, rodando em infraestrutura no Brasil (casas BR exigem IP nacional). Cada casa é um módulo independente — falha contida, sem efeito dominó.

2. Normalização

Cada atualização vira um delta tipado, validado e com identificadores canônicos de mercado. A odd da Sportingbet e a da Betano chegam no mesmo formato — quem traduz cada casa somos nós.

3. Distribuição

Snapshot via REST para reconciliar o estado, WebSocket para os updates dali em diante. Catálogo unificado de competições, casas e mercados em GET /v1/catalog.

Para quem é

Construído para quem perde dinheiro com informação atrasada — não para o apostador final.

Mesas de arbitragem

Equipes operando vários robôs em paralelo. Ingerem o WebSocket direto no robô interno e executam em segundos, com contrato técnico estável e versionado.

Robôs solo

Você já tem o bot — falta um feed simples e rápido. Um WebSocket, uma API key, primeiro delta na tela em menos de uma hora.

Casas secundárias

Consuma as odds das principais casas do mercado para referenciar e ajustar suas próprias linhas em tempo real.

Do zero ao primeiro delta em menos de 1 hora

Qualquer linguagem com HTTP e WebSocket serve. O fluxo é sempre o mesmo:

  • 1GET /v1/catalog — competições, casas e mercados disponíveis no seu tier.
  • 2GET /v1/matches — liste os jogos (eventos aparecem com dias de antecedência; assine cedo).
  • 3Abra o WebSocket, mande subscribe com os match_ids e mercados que interessam.
  • 4Reconectou? GET /v1/matches/{id} devolve o snapshot completo para reconciliar.

Cliente exemplo em Python, quickstart completo e referência da API entregues no onboarding.

client.py Python 3.12+
import asyncio, json
import websockets

async def stream():
    url = "wss://api.oddsstream.example/v1/stream?api_key=ok_..."
    async with websockets.connect(url) as ws:
        welcome = json.loads(await ws.recv())
        print("connected:", welcome["client_id"])

        await ws.send(json.dumps({
            "cmd": "subscribe",
            "request_id": "r1",
            "filter": {
                "match_ids": ["sportingbet:18229384"],
                "market_kinds": ["match_winner", "total_goals"],
            },
        }))
        async for raw in ws:
            print(json.loads(raw))  # seu robô decide a partir daqui

asyncio.run(stream())
GET /v1/matches/{id} 200 OK · application/json
{
  "id": "sportingbet:18229384",
  "bookmaker_id": "sportingbet",
  "competition_id": "sportingbet:brasileirao_serie_a",
  "status": "live",
  "participants": [
    { "name": "Flamengo", "role": "home" },
    { "name": "Palmeiras", "role": "away" }
  ],
  "markets": [
    {
      "kind": "match_winner",
      "is_active": true,
      "selections": [
        { "selection_id": "home", "value": "2.10", "sequence_number": 412 },
        { "selection_id": "draw", "value": "3.25", "sequence_number": 410 },
        { "selection_id": "away", "value": "3.45", "sequence_number": 412 }
      ]
    },
    {
      "kind": "total_goals",
      "parameters": { "line": 2.5 },
      "is_active": true,
      "selections": [
        { "selection_id": "over", "value": "1.83", "sequence_number": 377 },
        { "selection_id": "under", "value": "2.00", "sequence_number": 377 }
      ]
    }
  ]
}

Perguntas frequentes

Hoje, Sportingbet com catálogo aberto de mercados. Betano é a próxima do roadmap, e a expansão seguinte é guiada pela demanda dos clientes. Cada casa expõe seus próprios identificadores de match — entregamos os feeds em paralelo, sem misturar dados entre casas.

Seu robô merece dados melhores

Fase piloto com vagas limitadas. Conte o que você opera e montamos o acesso — primeiro delta na tela em menos de uma hora.

Solicitar acesso piloto