WebSocket
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.
Authentifizierung
Gib deinen API-Schlüssel als apiKey-Queryparameter beim Verbinden an.
wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
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.
all oder -1, um alle Marktplätze zu abonnieren. Groß-/Kleinschreibung wird nicht unterschieden. Siehe Referenz für die vollständige Liste.all oder -1, um alle Spiele zu abonnieren. Groß-/Kleinschreibung wird nicht unterschieden. Siehe Referenz für die vollständige Liste.false. Wenn true, werden nur Angebote gepusht, die einen neuen Tiefstpreis für ihren Artikel auf ihrem Marktplatz setzen.Abonnement-Beispiel
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.
{
"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.
| Fehler | Ursache |
|---|---|
Invalid API key | Der angegebene API-Schlüssel wurde nicht gefunden |
WebSocket access not enabled | Dein API-Schlüssel hat keine websocketAccess-Berechtigung |
API key disabled | Dein Konto wurde deaktiviert |
subscribeTo field is required | Das Feld subscribeTo fehlt in deiner Abonnement-Nachricht |
games field is required | Das Feld games fehlt in deiner Abonnement-Nachricht |
Unknown marketplace: X | Ungültiger Marktplatzname oder ID |
Unknown game: X | Ungültiger Spielname oder ID |