Рыночные данные

WebSocket

Подключитесь к потоку предложений маркетплейсов в реальном времени через WebSocket для получения листингов предметов с 26 торговых площадок.

Эндпоинт

Этот эндпоинт предоставляет поток предложений маркетплейсов в реальном времени через WebSocket. После подключения и подписки вы получаете листинги предметов по мере их обнаружения на поддерживаемых торговых площадках.

WSS   wss://marketplaceapi.steamapis.com/ws/v2/offers

Аутентификация

Укажите ваш API-ключ в качестве параметра запроса apiKey при подключении.

wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
Ваш API-ключ должен иметь включённое разрешение websocketAccess. Свяжитесь со службой поддержки, если вам необходимо добавить это разрешение к вашему ключу.

Сжатие

Сервер требует расширение WebSocket permessage-deflate. Большинство клиентов согласовывают это автоматически. Если ваш клиент этого не делает, отправьте заголовок расширения явно при подключении:

Sec-WebSocket-Extensions: permessage-deflate

Без него рукопожатие завершается ошибкой 400 Bad Request с сообщением permessage-deflate is required.

Лимиты

Каждый API-ключ ограничен 2 одновременными подключениями. Открытие третьего подключения приводит к его закрытию с кодом 1008 (Policy Violation).

Сообщение подписки

После подключения отправьте JSON-сообщение для подписки на определённые торговые площадки и игры. subscribeTo и games обязательны; newFloorOnly необязательно.

subscribeTo
string|string[]
Массив названий торговых площадок или числовых ID для подписки. Используйте all или -1 для подписки на все торговые площадки. Регистр не учитывается. Полный список см. в Справочнике.
games
string[]
Массив названий игр или Steam App ID для подписки. Используйте all или -1 для подписки на все игры. Регистр не учитывается. Полный список см. в Справочнике.
newFloorOnly
boolean
Необязательно, по умолчанию false. Когда true, отправляются только предложения, устанавливающие новый минимальный ценовой порог для своего предмета на своей торговой площадке.

Пример подписки

index.js
const ws = new WebSocket('wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YOUR_API_KEY');

ws.onopen = () => {
  ws.send(JSON.stringify({
    subscribeTo: ['Buff163', 'CSFloat', 'SkinPort'],
    games: ['CS2', 'Dota2'],
    newFloorOnly: true
  }));
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);

  if (message.type === 'subscribed') {
    console.log('Subscribed to:', message.marketplaces, message.games);
  } else if (message.type === 'offer') {
    console.log('New offer:', message.data.name, '$' + message.data.priceUSD);
  } else if (message.type === 'error') {
    console.error('Error:', message.error);
  }
};

ws.onerror = (error) => console.error('WebSocket error:', error);
ws.onclose = () => console.log('Disconnected');

Сообщение подтверждения

При успешной подписке вы получаете сообщение с подтверждением.

message.json
{
  "type": "subscribed",
  "marketplaces": ["Buff163", "CSFloat", "SkinPort"],
  "games": ["CS2", "Dota2"],
  "message": "Successfully subscribed to offer stream"
}

Сообщения об ошибках

Ошибки возвращаются в виде JSON-сообщений с type: "error".

ОшибкаПричина
Invalid API keyУказанный API-ключ не найден
WebSocket access not enabledВаш API-ключ не имеет разрешения websocketAccess
API key disabledВаш аккаунт был отключён
subscribeTo field is requiredОтсутствует поле subscribeTo в сообщении подписки
games field is requiredОтсутствует поле games в сообщении подписки
Unknown marketplace: XНедопустимое название или ID торговой площадки
Unknown game: XНедопустимое название или ID игры