Dane rynkowe

WebSocket

Połącz się ze strumieniem ofert rynkowych w czasie rzeczywistym przez WebSocket, aby otrzymywać listingi przedmiotów z 26 marketplace'ów.

Endpoint

Ten endpoint zapewnia strumień ofert z marketplace'ów w czasie rzeczywistym przez WebSocket. Po połączeniu i subskrypcji otrzymujesz listingi przedmiotów na żywo, wykrywane na obsługiwanych marketplace'ach.

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

Uwierzytelnianie

Dołącz swój klucz API jako parametr zapytania apiKey podczas łączenia.

wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
Twój klucz API musi mieć włączone uprawnienie websocketAccess. Skontaktuj się z pomocą techniczną, jeśli potrzebujesz dodania tego uprawnienia do swojego klucza.

Kompresja

Serwer wymaga rozszerzenia WebSocket permessage-deflate. Większość klientów negocjuje to automatycznie. Jeśli twój tego nie robi, wyślij nagłówek rozszerzenia jawnie podczas łączenia:

Sec-WebSocket-Extensions: permessage-deflate

Bez niego handshake kończy się błędem 400 Bad Request z komunikatem permessage-deflate is required.

Limity

Każdy klucz API jest ograniczony do 2 równoczesnych połączeń. Otwarcie trzeciego połączenia powoduje jego zamknięcie z kodem 1008 (Policy Violation).

Wiadomość subskrypcji

Po połączeniu wyślij wiadomość JSON, aby zasubskrybować wybrane marketplace'y i gry. subscribeTo i games są wymagane; newFloorOnly jest opcjonalne.

subscribeTo
string|string[]
Tablica nazw marketplace'ów lub ich numerycznych identyfikatorów do subskrypcji. Użyj all lub -1, aby zasubskrybować wszystkie marketplace'y. Wielkość liter nie ma znaczenia. Zobacz Referencja po pełną listę.
games
string[]
Tablica nazw gier lub ich Steam App ID do subskrypcji. Użyj all lub -1, aby zasubskrybować wszystkie gry. Wielkość liter nie ma znaczenia. Zobacz Referencja po pełną listę.
newFloorOnly
boolean
Opcjonalne, domyślnie false. Gdy true, wysyłane są tylko oferty, które ustawiają nową najniższą cenę dla swojego przedmiotu na swoim marketplace'ie.

Przykład subskrypcji

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');

Wiadomość potwierdzenia

Po udanej subskrypcji otrzymasz wiadomość potwierdzającą.

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

Komunikaty błędów

Błędy są zwracane jako wiadomości JSON z type: "error".

BłądPrzyczyna
Invalid API keyPodany klucz API nie został znaleziony
WebSocket access not enabledTwój klucz API nie ma uprawnienia websocketAccess
API key disabledTwoje konto zostało wyłączone
subscribeTo field is requiredBrak pola subscribeTo w wiadomości subskrypcji
games field is requiredBrak pola games w wiadomości subskrypcji
Unknown marketplace: XNieprawidłowa nazwa lub ID marketplace'u
Unknown game: XNieprawidłowa nazwa lub ID gry