Market Channel

Публичный канал для real-time данных о рынках. Не требует авторизации.

Подписка

{
  "type": "subscribe",
  "channel": "market",
  "assets_ids": ["TOKEN_ID_1", "TOKEN_ID_2"]
}

Типы событий

book

Полный снимок ордербука при каждом изменении. Приходит при добавлении, удалении или изменении любого ордера. Используйте для поддержания актуального состояния книги заявок в реальном времени. Заменяет polling /book.

{
  "event_type": "book",
  "asset_id": "71321...",
  "market": "0xabc...",
  "timestamp": "1705329600",
  "hash": "0x...",
  "bids": [{"price": "0.64", "size": "500"}],
  "asks": [{"price": "0.66", "size": "300"}]
}

price_change

Уведомление об изменении лучшей цены (bid или ask). Приходит реже, чем book — только когда меняется топ книги. Используйте для обновления отображаемой цены без обработки всего ордербука.

{
  "event_type": "price_change",
  "asset_id": "71321...",
  "price": "0.65",
  "timestamp": "1705329600"
}

last_trade_price

Уведомление о совершённой сделке. Содержит цену, направление и объём. Используйте для ленты сделок, расчёта объёмов в реальном времени или триггеров на крупные сделки.

{
  "event_type": "last_trade_price",
  "asset_id": "71321...",
  "price": "0.65",
  "side": "BUY",
  "size": "100"
}

Пример

const ws = new WebSocket("wss://ws-subscriptions-clob.polymarket.com/ws/");

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: "subscribe",
    channel: "market",
    assets_ids: ["71321045679252212594626385532706912750332728571942532289631379312455583992563"]
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.event_type === "book") {
    console.log("Orderbook update:", data.bids, data.asks);
  }
  
  if (data.event_type === "price_change") {
    console.log("New price:", data.price);
  }
};

Отписка

{
  "type": "unsubscribe",
  "channel": "market",
  "assets_ids": ["TOKEN_ID"]
}