Marktdaten

WebSocket

Verbinde dich mit dem Echtzeit-Marktplatz-Angebotsstrom per WebSocket, um Live-Artikelangebote von 26 Marktplätzen zu empfangen.

Endpunkt

Dieser Endpunkt liefert einen Echtzeit-Strom von Marktplatzangeboten per WebSocket. Nach dem Verbinden und Abonnieren erhältst du Live-Artikelangebote, sobald sie auf unterstützten Marktplätzen erkannt werden.

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

Authentifizierung

Gib deinen API-Schlüssel als apiKey-Queryparameter beim Verbinden an.

wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
Dein API-Schlüssel muss websocketAccess aktiviert haben. Kontaktiere den Support, wenn du diese Berechtigung zu deinem Schlüssel hinzufügen musst.

Komprimierung

Der Server erfordert die WebSocket-Erweiterung permessage-deflate. Die meisten Clients verhandeln dies automatisch. Falls deiner das nicht tut, sende den Erweiterungs-Header beim Verbinden explizit:

Sec-WebSocket-Extensions: permessage-deflate

Ohne diesen schlägt der Handshake mit 400 Bad Request und der Meldung permessage-deflate is required fehl.

Limits

Jeder API-Schlüssel ist auf 2 gleichzeitige Verbindungen begrenzt. Eine dritte Verbindung wird mit Code 1008 (Policy Violation) geschlossen.

Abonnement-Nachricht

Nach dem Verbinden sende eine JSON-Nachricht, um bestimmte Marktplätze und Spiele zu abonnieren. subscribeTo und games sind erforderlich; newFloorOnly ist optional.

subscribeTo
string|string[]
Array von Marktplatznamen oder numerischen IDs zum Abonnieren. Verwende all oder -1, um alle Marktplätze zu abonnieren. Groß-/Kleinschreibung wird nicht unterschieden. Siehe Referenz für die vollständige Liste.
games
string[]
Array von Spielnamen oder Steam App IDs zum Abonnieren. Verwende all oder -1, um alle Spiele zu abonnieren. Groß-/Kleinschreibung wird nicht unterschieden. Siehe Referenz für die vollständige Liste.
newFloorOnly
boolean
Optional, Standardwert false. Wenn true, werden nur Angebote gepusht, die einen neuen Tiefstpreis für ihren Artikel auf ihrem Marktplatz setzen.

Abonnement-Beispiel

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

Bestätigungsnachricht

Bei erfolgreichem Abonnement erhältst du eine Bestätigungsnachricht.

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

Fehlermeldungen

Fehler werden als JSON-Nachrichten mit type: "error" zurückgegeben.

FehlerUrsache
Invalid API keyDer angegebene API-Schlüssel wurde nicht gefunden
WebSocket access not enabledDein API-Schlüssel hat keine websocketAccess-Berechtigung
API key disabledDein Konto wurde deaktiviert
subscribeTo field is requiredDas Feld subscribeTo fehlt in deiner Abonnement-Nachricht
games field is requiredDas Feld games fehlt in deiner Abonnement-Nachricht
Unknown marketplace: XUngültiger Marktplatzname oder ID
Unknown game: XUngültiger Spielname oder ID