API Skins

Blog

CS2 skin price API: getting prices from every marketplace into your code

If you run a trading bot, a Discord bot, a skin shop or a spreadsheet, sooner or later you need prices from more than one marketplace. Scraping each one is slow, breaks often and gets you blocked. A price API gives you all of them in one answer.

One request, every marketplace

The API Skins price API returns the lowest listing of an item on each of 20 marketplaces, checked every hour. Get a key on the API docs page after signing in with Steam, then send it in the X-API-KEY header:

curl -H "X-API-KEY: ask_..." \
  "https://api.apiskins.com/v1/prices/AK-47%20%7C%20Redline%20(Field-Tested)"

The answer lists every marketplace that sells the item, with its price in USD and when that price last changed:

{
  "market_hash_name": "AK-47 | Redline (Field-Tested)",
  "prices": [
    { "provider": "buff_163", "price": 31.42, "changed_at": "...", "checked_at": "..." },
    { "provider": "cs_float", "price": 33.1, "changed_at": "...", "checked_at": "..." }
  ]
}

Batches and the whole market

Name up to 100 items by repeating market_hash_name, or leave it out to get every listed item at once. Add providers=cs_float,buff_163 to get only the marketplaces you care about. Each request counts once toward your monthly limit, however many items it returns, so one full download an hour is the cheapest way to keep a local copy of the market.

const response = await fetch("https://api.apiskins.com/v1/prices?providers=cs_float,buff_163", {
    headers: { "X-API-KEY": process.env.API_SKINS_KEY! },
});

const items: { market_hash_name: string; prices: { provider: string; price: number }[] }[] = await response.json();

Limits

The free plan includes 100 price requests a month, enough to try it out. Paid subscriptions go up to 100,000 a month. Every request also counts toward a per-minute rate limit; over it, the API answers 429 with a Retry-After header. A machine-readable description of every route is at /openapi.json.