API de odds da Pinnacle em tempo real, via WebSocket
A PinnFeed é uma API de odds da Pinnacle feita para quem programa: um único WebSocket que envia um snapshot e depois só o que mudou. Você filtra no servidor por esporte, liga e mercado, cada linha chega com a odd justa sem margem e o preço de fechamento fica arquivado. Não precisa de conta na Pinnacle.
O plano WebSocket é o Builder, €99/mês (IVA incluso): push em tempo real, os 13 esportes, todos os mercados e odds de fechamento. Todo plano pago começa com 3 dias grátis (cartão obrigatório; a cobrança acontece no quarto dia, a menos que você cancele).
Feito para o bot, não para o navegador#
Tudo o que você teria de escrever sozinho (reconexão, regras de merge, conversão de odds, remoção da margem, detecção do início da partida) a gente faz uma vez do nosso lado e entrega como JSON limpo.
- Push, sem polling. Assine uma vez e receba deltas. Mercado parado não custa nada.
- Filtros no servidor. Por esporte, liga, evento, tipo de mercado e ao vivo ou pré-jogo. Você só recebe o que pediu.
- Odds justas e fechamento. Cada mercado traz sua margem e uma odd justa decimal por resultado. No início da partida, o último preço pré-jogo é arquivado como odd de fechamento.
- Schema estável. Eventos e mercados com ids estáveis, odds decimais e americanas, linhas, períodos, limite máximo e horário de corte.
- MCP hospedado. Um servidor MCP em
/mcpdeixa Claude, Cursor, Copilot e ChatGPT lerem odds ao vivo, quedas e odds de fechamento com a sua chave. - Chaves self-service. Crie, renomeie e revogue chaves, veja o uso por chave e troque de plano pelo painel.
Os 13 esportes: futebol, tênis, basquete, hóquei no gelo, futebol americano, beisebol, rúgbi, MMA, boxe, vôlei e handebol, esports, golfe e críquete.
Um cliente que funciona#
Conecte, assine o futebol ao vivo e veja cada movimento. É um WebSocket comum com JSON: Python, Node ou qualquer outra linguagem.
# pip install websockets
import asyncio, json, os, websockets
async def main():
async with websockets.connect("wss://pinnfeed.io/v1/stream",
additional_headers={"x-api-key": os.environ["PINNFEED_KEY"]}) as ws:
await ws.send(json.dumps({"type": "subscribe", "sports": ["soccer"], "live": True, "markets": ["moneyline"], "main": True}))
async for raw in ws:
msg = json.loads(raw)
if msg["type"] == "ping":
await ws.send('{"type":"pong"}') # responda ao heartbeat ou o servidor fecha a conexão
elif msg["type"] == "delta":
print(len(msg["changes"]), "changes")
asyncio.run(main())
O cliente completo, com book em memória e reconexão, está no guia de Python e Node.
Snapshot e depois só o que mudou#
- Snapshot e deltas. Um snapshot em partes ao assinar e depois só os mercados que mudaram, agrupados por atualização.
- Remoções são explícitas. Mercados suspensos ou liquidados chegam como
op: "remove", então seu book nunca mostra preço velho. - O REST espelha o socket. Os mesmos objetos saem de
GET /v1/oddspara cron jobs e cargas históricas.
Push contra polling: a conta#
Um cliente que faz polling só vê uma mudança na próxima requisição: em média chega meio intervalo atrasado e, no pior caso, um intervalo inteiro, mais a ida e volta. Um WebSocket não tem intervalo. É aritmética, não benchmark, então você pode conferir.
| Medida | WebSocket push | REST a cada 5 s | REST a cada 30 s | REST a cada 60 s |
|---|---|---|---|---|
| Quando você vê a mudança | Chega assim que acontece | No próximo poll | No próximo poll | No próximo poll |
| Atraso médio extra | Nenhum | 2,5 s | 15 s | 30 s |
| Atraso máximo extra | Nenhum | 5 s | 30 s | 60 s |
| Requisições por hora, um endpoint | 1 conexão | 720 | 120 | 60 |
Trânsito de rede e processamento valem para os dois e não aparecem aqui. O REST do nosso plano Free tem 30 s de atraso de propósito; o REST do Hobby e todos os planos WebSocket são em tempo real.
Tabela de preços#
| Plano | Preço (EUR, IVA incluso) | O que inclui |
|---|---|---|
| Free | €0 | REST com 30 s de atraso, 2 esportes, 1 req/s, 1.000 requisições/dia, sem cartão |
| Hobby | €29/mês | REST em tempo real, 3 esportes, 2 req/s, sem WebSocket |
| Builder | €99/mês | O plano WebSocket: 3 conexões, os 13 esportes, todos os mercados e props, REST 10 req/s, odds de fechamento |
| Pro | €199/mês | 10 conexões WebSocket, 30 req/s, frames brutos |
| Enterprise | Sob consulta | Exportação do arquivo de fechamento, SLA e licença comercial |
Preço do WebSocket com a ressalva certa: em 9 de novembro de 2026, o Builder era o menor preço mensal publicado que encontramos para um WebSocket de odds da Pinnacle ao vivo + pré-jogo. Números, fontes e ressalvas na página do preço. Os preços são cobrados em euros. Ver todos os limites.
Perguntas frequentes#
Ainda existe uma API pública da Pinnacle?#
A Pinnacle fechou sua API pública para a maioria dos usuários em julho de 2025. A PinnFeed é um serviço independente que entrega os preços da Pinnacle a desenvolvedores por um WebSocket normalizado e uma API REST. Você não precisa de conta na Pinnacle.
Por que um WebSocket e não polling em uma API REST?#
Um cliente que faz polling só vê a mudança na próxima requisição, então em média chega meio intervalo atrasado. Com o WebSocket, a PinnFeed envia cada mudança assim que ela chega ao nosso servidor, filtrada pelo que você assinou e com odds justas. O Builder (€99/mês) é o plano WebSocket.
O que é uma odd justa (sem margem)?#
Os preços da Pinnacle incluem uma margem. Nós a removemos pelo método multiplicativo e devolvemos a probabilidade justa e a odd decimal justa de cada resultado, para você comparar qualquer casa com a linha mais afiada sem fazer contas.
Tem plano grátis?#
Sim. O plano Free dá acesso REST a dois esportes com 30 segundos de atraso e 1.000 requisições por dia, sem cartão. O Hobby (€29/mês) deixa o REST em tempo real; o Builder (€99/mês) adiciona o WebSocket em tempo real.
Posso cancelar quando quiser?#
Sim. Todo plano pago começa com 3 dias grátis (cartão obrigatório, cobrado no quarto dia a menos que você cancele) e é mensal pela Stripe; cancele ou troque de plano pelo painel com um clique. Planos em cripto são pré-pagos por 1, 3 ou 12 meses e nunca renovam sozinhos.
O conteúdo é para maiores de idade?#
Sim. A PinnFeed é uma ferramenta de dados e o conteúdo é educativo, para maiores de 18 anos. Nada aqui é palpite garantido nem promessa de lucro. Jogue com responsabilidade e apenas onde for legal.