Pazar Verileri

WebSocket

26 pazar yerinden gerçek zamanlı ürün listelemelerini almak için WebSocket üzerinden pazar teklif akışına bağlanın.

Endpoint

Bu endpoint, WebSocket üzerinden gerçek zamanlı pazar yeri teklifleri akışı sağlar. Bağlanıp abone olduktan sonra, desteklenen pazar yerlerinde tespit edilen canlı ürün listelemelerini alırsınız.

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

Kimlik Doğrulama

Bağlanırken API anahtarınızı apiKey sorgu parametresi olarak ekleyin.

wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
API anahtarınızda websocketAccess etkinleştirilmiş olmalıdır. Bu iznin anahtarınıza eklenmesi gerekiyorsa destek ekibiyle iletişime geçin.

Sıkıştırma

Sunucu, permessage-deflate WebSocket uzantısını gerektirir. Çoğu istemci bunu otomatik olarak müzakere eder. Sizinki etmiyorsa, bağlanırken uzantı başlığını açıkça gönderin:

Sec-WebSocket-Extensions: permessage-deflate

Bu olmadan el sıkışma 400 Bad Request hatası ve permessage-deflate is required mesajıyla başarısız olur.

Limitler

Her API anahtarı 2 eşzamanlı bağlantı ile sınırlıdır. Üçüncü bir bağlantı açılması, 1008 (Policy Violation) kodu ile kapatılır.

Abonelik mesajı

Bağlandıktan sonra, belirli pazar yerlerine ve oyunlara abone olmak için bir JSON mesajı gönderin. subscribeTo ve games zorunludur; newFloorOnly isteğe bağlıdır.

subscribeTo
string|string[]
Abone olunacak pazar yeri adları veya sayısal kimliklerinden oluşan dizi. Tüm pazar yerlerine abone olmak için all veya -1 kullanın. Büyük/küçük harf duyarsızdır. Tam liste için Referans sayfasına bakın.
games
string[]
Abone olunacak oyun adları veya Steam App ID'lerinden oluşan dizi. Tüm oyunlara abone olmak için all veya -1 kullanın. Büyük/küçük harf duyarsızdır. Tam liste için Referans sayfasına bakın.
newFloorOnly
boolean
İsteğe bağlı, varsayılan false. true olduğunda, yalnızca kendi pazar yerinde kendi ürünü için yeni en düşük fiyatı belirleyen teklifler gönderilir.

Abonelik örneği

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

Onay mesajı

Başarılı bir abonelikte bir onay mesajı alırsınız.

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

Hata mesajları

Hatalar, type: "error" içeren JSON mesajları olarak döndürülür.

HataNeden
Invalid API keySağlanan API anahtarı bulunamadı
WebSocket access not enabledAPI anahtarınızda websocketAccess izni yok
API key disabledHesabınız devre dışı bırakılmış
subscribeTo field is requiredAbonelik mesajınızda subscribeTo alanı eksik
games field is requiredAbonelik mesajınızda games alanı eksik
Unknown marketplace: XGeçersiz pazar yeri adı veya kimliği
Unknown game: XGeçersiz oyun adı veya kimliği