Skip to main content

Sale Feed (Live)

The live sale feed pushes real-time updates about items that are listed and sold on the marketplace. It is a Socket.IO connection, not a REST endpoint.

URLwss://skinport.com
TransportWebSocket only
Parsersocket.io-msgpack-parser
AuthorizationNot required

Event types​

eventTypeSupportedDescription
listedYesA new item has been listed.
soldYesAn item has been sold.
price_changedNoThe sale price of an item was changed.
canceledNoThe sale of an item was canceled.
warning

The feed uses a custom parser based on msgpack. Make sure to use socket.io-msgpack-parser in your client, the default Socket.IO parser is not compatible.

Example usage​

npm install socket.io-client socket.io-msgpack-parser
sale-feed.mjs
import { io } from 'socket.io-client';
import parser from 'socket.io-msgpack-parser';

const socket = io('wss://skinport.com', {
transports: ['websocket'],
parser,
});

// Listen to the sale feed
socket.on('saleFeed', (result) => {
console.log(result);
});

// Join the sale feed with your parameters.
// Re-join after reconnects, the server forgets your subscription when the connection drops.
socket.on('connect', () => {
socket.emit('saleFeedJoin', { currency: 'EUR', locale: 'en', appid: 730 });
});

Arguments​

ParameterTypeRequiredDescription
appidnumberRequiredThe appid for the inventory's game.
currencystringRequiredThe currency for pricing. Supported: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HRK, NOK, PLN, RUB, SEK, TRY, USD.
localestringRequiredLocale of the result. Supported: en, de, ru, fr, zh, nl, fi, es, tr.
info

Unlike the REST API, the feed uses camelCase fields and prices in cents (e.g. "salePrice": 7903 is 79.03 EUR).

Example Response​

console.log(result)
{
"eventType": "listed",
"sales": [
{
"id": 0,
"saleId": null,
"productId": 5544725,
"assetId": 55034907,
"itemId": 61019,
"appid": 730,
"steamid": "76561198837215063",
"url": "driver-gloves-rezan-the-red-well-worn",
"family": "Rezan the Red",
"family_localized": "Rezan the Red",
"name": "Rezan the Red",
"title": "Driver Gloves",
"text": "Well-Worn ★ Extraordinary Gloves",
"marketName": "★ Driver Gloves | Rezan the Red (Well-Worn)",
"marketHashName": "★ Driver Gloves | Rezan the Red (Well-Worn)",
"color": "#8650AC",
"bgColor": null,
"image": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DAX1R3LjtQurWzLhRfwP_BcjZ9_tmslY60mvLwOq7cqWdQ-sJ0xLCTpt6l0AawrkNvajz7LdXDJFJtMguBqwfokrvn0cC0upTAmCdru3Q8pSGKBwn68BM",
"classid": "4142171394",
"assetid": "24958657824",
"lock": "2022-02-27T08:00:00.000Z",
"version": "default",
"versionType": "default",
"stackAble": false,
"suggestedPrice": 10004,
"salePrice": 7903,
"currency": "EUR",
"saleStatus": "listed",
"saleType": "public",
"category": "Gloves",
"category_localized": "Gloves",
"subCategory": "Driver Gloves",
"subCategory_localized": "Driver Gloves",
"pattern": 990,
"finish": 10069,
"customName": null,
"wear": 0.3809339106082916,
"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198837215063A24958657824D11533664215916898619",
"type": "★ Extraordinary Gloves",
"exterior": "Well-Worn",
"quality": "★",
"rarity": "Extraordinary",
"rarity_localized": "Extraordinary",
"rarityColor": "#eb4b4b",
"collection": null,
"collection_localized": null,
"stickers": [],
"canHaveScreenshots": true,
"screenshots": [],
"souvenir": false,
"stattrak": false,
"tags": [
{
"name": "Well-Worn",
"name_localized": "Well-Worn"
},
{
"name": "★",
"name_localized": "★"
},
{
"name": "Gloves",
"name_localized": "Gloves"
},
{
"name": "Extraordinary",
"name_localized": "Extraordinary"
}
],
"ownItem": false
}
]
}