API de cuotas de Pinnacle en tiempo real, por WebSocket
PinnFeed es una API de cuotas de Pinnacle pensada para quien programa: un único WebSocket que primero envía un snapshot y después solo lo que ha cambiado. Filtras en el servidor por deporte, liga y mercado, cada línea llega con su cuota justa sin margen y el precio de cierre queda archivado. No necesitas cuenta en Pinnacle.
El plan WebSocket es Builder, 99 €/mes (IVA incluido): push en tiempo real, los 13 deportes, todos los mercados y cuotas de cierre. Todos los planes de pago empiezan con 3 días gratis (tarjeta obligatoria; se cobra al cuarto día salvo que canceles).
Hecho para el bot, no para el navegador#
Todo lo que de otro modo tendrías que escribir tú (reconexión, reglas de fusión, conversión de cuotas, eliminación del margen, detección del inicio del partido) lo hacemos una vez en nuestro lado y te llega como JSON limpio.
- Push, sin polling. Te suscribes una vez y recibes deltas. Un mercado tranquilo no te cuesta nada.
- Filtros en el servidor. Por deporte, liga, evento, tipo de mercado y en vivo o prepartido. Solo recibes lo que pides.
- Cuotas justas y cierre. Cada mercado lleva su margen y una cuota justa decimal por resultado. Al empezar el partido, el último precio prepartido se guarda como cuota de cierre.
- Esquema estable. Eventos y mercados con ids estables, cuotas decimales y americanas, líneas, periodos, apuesta máxima y hora de cierre.
- MCP alojado. Un servidor MCP en
/mcppermite a Claude, Cursor, Copilot y ChatGPT leer cuotas en vivo, caídas y cuotas de cierre con tu clave. - Claves autoservicio. Crea, renombra y revoca claves, mira el uso por clave y cambia de plan desde el panel.
Los 13 deportes: fútbol, tenis, baloncesto, hockey sobre hielo, fútbol americano, béisbol, rugby, MMA, boxeo, voleibol y balonmano, esports, golf y críquet.
Un cliente que funciona#
Te conectas, te suscribes al fútbol en vivo y ves cada movimiento. Es un WebSocket normal con JSON: Python, Node o cualquier otro lenguaje.
# 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"}') # responde al latido o el servidor cierra
elif msg["type"] == "delta":
print(len(msg["changes"]), "changes")
asyncio.run(main())
El cliente completo, con libro de cuotas en memoria y reconexión, está en la guía de Python y Node.
Snapshot y luego solo lo que cambia#
- Snapshot y deltas. Un snapshot por partes al suscribirte y después solo los mercados que cambian, agrupados por actualización.
- Las bajas son explícitas. Los mercados suspendidos o liquidados llegan como
op: "remove", así tu libro nunca muestra precios viejos. - REST refleja el socket. Los mismos objetos salen de
GET /v1/oddspara cron jobs y cargas históricas.
Push frente a polling: la aritmética#
Un cliente que hace polling solo ve un cambio en su siguiente petición: de media llega medio intervalo tarde y, en el peor caso, un intervalo entero, más el viaje de ida y vuelta. Un WebSocket no tiene intervalo. Es aritmética, no un benchmark, así que puedes comprobarlo tú.
| Medida | WebSocket push | REST cada 5 s | REST cada 30 s | REST cada 60 s |
|---|---|---|---|---|
| Cuándo ves un cambio | Llega en cuanto se produce | En el siguiente poll | En el siguiente poll | En el siguiente poll |
| Retraso medio añadido | Ninguno | 2,5 s | 15 s | 30 s |
| Retraso máximo añadido | Ninguno | 5 s | 30 s | 60 s |
| Peticiones por hora, un endpoint | 1 conexión | 720 | 120 | 60 |
El tránsito de red y el procesamiento afectan a ambos y no se muestran. Nuestro REST del plan Free lleva 30 s de retraso a propósito; el REST de Hobby y todos los planes WebSocket son en tiempo real.
Tarifas#
| Plan | Precio (EUR, IVA incl.) | Qué incluye |
|---|---|---|
| Free | 0 € | REST con 30 s de retraso, 2 deportes, 1 req/s, 1.000 peticiones/día, sin tarjeta |
| Hobby | 29 €/mes | REST en tiempo real, 3 deportes, 2 req/s, sin WebSocket |
| Builder | 99 €/mes | El plan WebSocket: 3 conexiones, los 13 deportes, todos los mercados y props, REST 10 req/s, cuotas de cierre |
| Pro | 199 €/mes | 10 conexiones WebSocket, 30 req/s, frames en bruto |
| Enterprise | A medida | Exportaciones del archivo de cierre, SLA y licencia comercial |
Precio del WebSocket con su matiz: a 9 de noviembre de 2026, Builder era el precio mensual publicado más bajo que encontramos para un WebSocket de cuotas de Pinnacle en vivo + prepartido. Las cifras, fuentes y salvedades están en la página del precio. Ver todos los límites.
Preguntas frecuentes#
¿Sigue existiendo una API pública de Pinnacle?#
Pinnacle cerró su API pública a la mayoría de usuarios en julio de 2025. PinnFeed es un servicio independiente que distribuye los precios de Pinnacle a desarrolladores por un WebSocket normalizado y una API REST. No necesitas cuenta en Pinnacle.
¿Por qué un WebSocket y no hacer polling a una API REST?#
Un cliente que hace polling solo ve un cambio en su siguiente petición, así que de media llega medio intervalo tarde. Con el WebSocket, PinnFeed envía cada cambio en cuanto llega a nuestro servidor, filtrado a lo que te suscribiste y con cuotas justas. Builder (99 €/mes) es el plan WebSocket.
¿Qué es una cuota justa (sin margen)?#
Los precios de Pinnacle incluyen un margen. Lo quitamos con el método multiplicativo y devolvemos la probabilidad justa y la cuota decimal justa de cada resultado, para que compares cualquier casa con la línea más afilada sin hacer cuentas.
¿Hay plan gratis?#
Sí. El plan Free da acceso REST a dos deportes con 30 segundos de retraso y 1.000 peticiones al día, sin tarjeta. Hobby (29 €/mes) hace el REST en tiempo real; Builder (99 €/mes) añade el WebSocket en tiempo real.
¿Puedo cancelar cuando quiera?#
Sí. Cada plan de pago empieza con 3 días gratis (tarjeta obligatoria, se cobra el cuarto día salvo que canceles) y es mensual con Stripe; cancelas o cambias de plan desde el panel con un clic. Los planes en cripto se prepagan por 1, 3 o 12 meses y nunca se renuevan solos.
¿Es contenido para mayores de edad?#
Sí. PinnFeed es una herramienta de datos y su contenido es educativo, para mayores de 18 años. Nada aquí es un pronóstico ni una promesa de beneficios. Juega con responsabilidad y solo donde sea legal.