Лайв — потоком
Подписка по WebSocket на конкретный матч или на всю лайв-ленту вида спорта. Сообщение приходит в момент движения линии, а не по вашему таймеру.
01 Прематч и лайв в реальном времени
Лайв — потоком по WebSocket: котировки приходят в момент изменения, а не по вашему таймеру. Прематч — обычным REST поверх кеша. Полная роспись, счёт и статистика, семь видов спорта. Без парсеров, прокси, капч и банов.
Оплата криптой · без KYC · активация за 1–3 минуты
// сообщение update из /v1/stream
{
"event_id": 1633054685,
"sport": "football",
"league": "Аргентина — Примера",
"home": "Барракас Сентраль",
"away": "Альдосиви",
"live": true,
"running_state": "2H - 26'",
"elapsed": 26,
"score": { "home": 1, "away": 0 },
"stats": {
"corners": { "home": 1, "away": 8 },
"red_cards": { "home": 0, "away": 0 },
"yellow_cards": { "home": 1, "away": 0 }
},
"live_connected": true,
"markets": [
{ "key": "moneyline", "period_name": "match",
"is_main": true, "outcomes": [
{ "label": "1", "price": "1.246" },
{ "label": "X", "price": "4.780" },
{ "label": "2", "price": "24.750" }
] }
]
}
// подключение
wss://api.pinnacle-odds-api.com/v1/stream?api_key=pk_live_…
// → подписка на конкретный матч
{ "op": "subscribe", "channel": "event",
"event_id": 1633054685 }
// → вся лайв-лента вида спорта
{ "op": "subscribe", "channel": "live",
"sport": "football" }
// прематч — обычным REST, без сокета:
// GET /v1/football/leagues/brazil-serie-a/events
// GET /v1/events/1633043364
// ← сразу после подписки: текущее состояние
{ "type": "snapshot", "seq": 1, "data": { … } }
// ← дальше только когда линия реально двинулась
{ "type": "update", "seq": 2, "data": { … } }
import asyncio, json, websockets
URL = ("wss://api.pinnacle-odds-api.com/v1/stream"
"?api_key=pk_live_a1b2c3d4e5f6")
async def main():
async with websockets.connect(URL) as ws:
await ws.send(json.dumps({
"op": "subscribe",
"channel": "live",
"sport": "football",
}))
async for raw in ws:
msg = json.loads(raw)
if msg["type"] not in ("snapshot", "update"):
continue
for ev in msg["data"]["events"]:
print(ev["home"], ev["score_text"],
ev["away"], ev["running_state"])
asyncio.run(main())
02 Возможности
API писался под реальные задачи: сканеры вилок и валуйных ставок, торговые боты, аналитические дашборды и модели ценообразования.
Подписка по WebSocket на конкретный матч или на всю лайв-ленту вида спорта. Сообщение приходит в момент движения линии, а не по вашему таймеру.
Сколько бы клиентов ни слушали один матч, к источнику идёт ровно одно соединение. Линия не отстаёт под нагрузкой, а новый подписчик получает состояние мгновенно.
Исход, гандикап, тотал и индивидуальные тоталы по всем периодам — матч, таймы, сеты, право на участие — с основными и альтернативными линиями.
Вместе с котировками: счёт, счёт по периодам и сетам, игровое время, угловые, жёлтые и красные карточки, статус паузы и приостановки рынка.
Футбол, теннис, баскетбол, хоккей, американский футбол, бейсбол и киберспорт. Каталог лиг со стабильными slug-кодами и фильтрами.
Единый формат ответа: постоянные ключи рынков, десятичные коэффициенты, UTC-таймстемпы, сквозной seq по каждой подписке. Источник меняет структуру — вы этого не замечаете.
Приостановленный исход приходит с ценой "0", а не исчезает из ответа. Ваш интерфейс покажет замок вместо того, чтобы решить, что рынка нет.
Пул зеркал с автопереключением, прокси, ротация сессий, обход ограничений, мониторинг источника 24/7. Ни своего аккаунта, ни своего парсера.
Лиги, календарь и роспись до старта отдаются обычными запросами поверх кеша. Держать ради медленно меняющейся линии сокет незачем — и вам, и нам.
03 Как устроен поток
Разница между «опрашивать источник» и «слушать поток» — это разница между сотней запросов в минуту на каждый матч и одним соединением на всех ваших пользователей. Поток — про лайв; прематч едет обычным REST, потому что до старта линия почти не двигается.
Открываете один WebSocket и подписываетесь на нужные матчи и лайв-ленты — до 200 подписок на соединение.
Сразу приходит snapshot с текущим состоянием из нашей памяти. Ждать следующего обновления источника не нужно.
Дальше — update тогда и только тогда, когда котировки, счёт или игровое состояние действительно поменялись.
| Данные | Канал | Обновление |
|---|---|---|
| Роспись идущего матча, счёт, статистика | WS · event |
реальное время |
| Все идущие матчи вида спорта | WS · live |
каждые 6 сек |
| Лиги и календарь | REST · /v1/{sport}/leagues |
по запросу |
| Прематч-роспись матча | REST · /v1/events/{id} |
по запросу |
04 Эндпоинты
Базовый URL: https://api.pinnacle-odds-api.com ·
Аутентификация: заголовок X-API-Key
(для WebSocket — параметр api_key) ·
Формат: JSON.
| Метод | Назначение | Параметры |
|---|---|---|
WS/v1/stream |
Поток лайв-котировок: каналы live и event |
api_key |
GET/v1/sports |
Доступные виды спорта | — |
GET/v1/{sport}/leagues |
Лиги и турниры вида спорта | locale, no_cache |
GET/v1/{sport}/leagues/{code}/events |
События внутри лиги, прематч и лайв | is_live, locale |
GET/v1/{sport}/live |
Все идущие сейчас матчи вида спорта | locale |
GET/v1/events/{id} |
Полная роспись конкретного матча | only_main, period, locale |
GET/v1/raw/events/{id} |
Сырой ответ источника по матчу | locale |
GET/v1/me |
Тариф и остаток лимитов по ключу | — |
05 Тарифы
Без скрытых комиссий и автосписаний. Оплата вручную за нужный период — при оплате за 3 месяца скидка 10 %, за 6 месяцев — 20 %.
Для знакомства с API и небольших личных проектов.
$49/ мес
Для сканеров вилок, валуйных ботов и активной торговли.
$149/ мес
/v1/raw/Для сервисов с пользователями и высокой нагрузкой.
$399/ мес
Выделенные мощности и нестандартные требования.
Обсуждаемо
| Параметр | Starter | Pro | Business | Enterprise |
|---|---|---|---|---|
| Запросов в месяц | 50 K | 500 K | 3 M | ∞ |
| Запросов в секунду | 5 | 20 | 60 | 200 |
| Прематч по REST | да | да | да | да |
| Лайв по WebSocket | — | да | да | да |
| WebSocket-соединений | — | 3 | 10 | ∞ |
| Счёт и статистика | — | да | да | да |
| Raw JSON | — | да | да | да |
| API-ключей | 1 | 2 | 5 | 20 |
06 Вопросы и ответы
Вы не опрашиваете нас в цикле, а получаете сообщение в момент изменения линии. При подписке сразу приходит snapshot с текущим состоянием, дальше — только update, когда котировки или счёт действительно поменялись. Расход лимита перестаёт зависеть от частоты опроса, а задержка — от его периода.
До старта линия двигается редко, и поток гнал бы почти пустой трафик, занимая соединение с обеих сторон. Прематч отдаётся обычными REST-запросами поверх кеша — это дешевле и проще в интеграции. Поток включается там, где он действительно нужен: в лайве, где цена живёт секунды.
Сколько бы клиентов ни слушали один и тот же матч, наш сервер держит к источнику ровно одно соединение и раздаёт данные всем подписчикам из памяти. Поэтому линия не отстаёт под нагрузкой, а новый подписчик получает текущее состояние мгновенно, не дожидаясь следующего обновления.
Семь: футбол, теннис, баскетбол, хоккей, американский футбол, бейсбол и киберспорт. По каждому — каталог лиг, события и полная роспись со всеми периодами и альтернативными линиями.
Исход, гандикап, тотал и индивидуальные тоталы — по всем периодам матча (матч, таймы, сеты, право на участие), с основными и альтернативными линиями. У каждого рынка стабильный ключ, номер периода, флаг основной линии и line_id.
true — данные идут с WebSocket источника, то есть в реальном времени. false — работает резервный канал и цены могут отставать на несколько секунд. Мы не прячем это за красивым фасадом: для торговых стратегий разница принципиальна, и вы должны её видеть.
Только криптовалютой: USDT (TRC-20 и ERC-20), BTC, ETH, TON, LTC. Вы получаете адрес и сумму, после подтверждения транзакции в сети подписка активируется автоматически — обычно за 1–3 минуты. Автосписаний нет.
Полная спецификация OpenAPI, схемы всех ответов и примеры сообщений WebSocket открыты в документации — без ключа и без регистрации. Если нужен разбор конкретного матча или рынка под вашу задачу, напишите нам: пришлём реальный ответ API по этому событию.
Нет. Вся инфраструктура сбора данных на нашей стороне: пул зеркал с автопереключением, прокси, ротация сессий, мониторинг. Вы работаете только с нашим эндпоинтом и API-ключом.
Нет. Сервис отдаёт только данные о коэффициентах и не принимает ставки — приём ставок не реализован и не планируется. Что делать с данными, решаете вы на своей стороне.
REST вернёт HTTP 429 с заголовком Retry-After, WebSocket при попытке открыть лишнее соединение закроется с кодом 4429. Ключ не блокируется — доступ восстанавливается автоматически, а лимит можно поднять в любой момент, доплатив разницу за остаток периода.
На тарифах Starter и Pro — только для собственных продуктов. Перепродажа и предоставление доступа третьим лицам возможны на Business и Enterprise, условия фиксируются отдельно.
Если сервис не работал по нашей вине дольше заявленного SLA, мы продлеваем подписку на компенсирующий срок. Возврат криптовалютой возможен в течение 48 часов после оплаты, если вы не сделали более 500 запросов.
Напишите нам — подберём тариф под вашу нагрузку, пришлём адрес для оплаты и выпустим ключ сразу после подтверждения транзакции. Обычно это занимает несколько минут.