Skinstrack
Back to guides

CS2 skin price API guide: real-time market data integration

API guideFor developersUpdated
9 min read

Every CS2 price tool you have ever used was stitched together from scrapers. This guide shows how to replace that pipeline with one API call that returns normalized prices from 34 marketplaces, with code in curl, JavaScript and Python.

On this page
  1. Why not scrape
  2. What it returns
  3. Getting started
  4. Your first call
  5. Reading the response
  6. Bulk fetch
  7. Polling vs alerts
  8. Rate limits
  9. Errors and retries
  10. Questions

Why a unified price API beats scraping

Scraping 34 marketplaces sounds like a fun weekend project until the third Buff163 layout change in a month breaks production. A unified API removes that whole class of work.

One response, every market

A single request returns prices from Buff163, CSFloat, Skinport, DMarket, WaxPeer, Steam and 28 more marketplaces. No scrapers to maintain, no per-provider rate limit juggling.

Normalized schema

Every marketplace returns the same shape: provider, price, count, volume, updated_at. You write integration logic once and it works against all of them.

Production-ready from day one

No HTML parsing, no flaky session cookies, no IP bans. Authentication is a single header. The same endpoint that powers Skinstrack itself is what your code calls.

Cheaper than building it yourself

Building and maintaining 34 scrapers costs more than any API tier on /api-pricing. You stop paying engineering time and start paying for data.

What the Skinstrack API returns

34 marketplaces

Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay, CSGOEmpire and more, all reachable through one endpoint.

Liquidity score built in

Every item ships with a 0-100 liquidity score. Useful for filtering out items that will be hard to sell, especially when building bots or alerts.

Time-window averages

Pass avg=true and median=true to receive 7d, 14d, 30d, 60d and 90d average and median price stats inline with the live offers.

Getting started in four steps

  1. 01

    Pick a tier and grab your key

    The Free tier gives you 50 Steam-only requests per month, which is enough to evaluate the response shape. The Standard and Growth tiers unlock the full /paid endpoints across all 34 marketplaces.

  2. 02

    Make your first call

    Pass your key as X-API-KEY. The base URL is https://api.skinstrack.com/v1. Endpoints accept either the official market hash name or the URL-friendly slug.

  3. 03

    Iterate on the response

    Every offer in prices is one marketplace listing. Sort by price for the cheapest offer, sort by volume for liquidity, or filter by provider when you only care about a subset.

  4. 04

    Move from polling to alerts

    Once your prototype works, replace polling with price alerts. You set a target price per item once and Skinstrack pushes when a marketplace crosses it. No missed windows.

Grab your key on the API pricing page and continue with the first call below.

Your first call: single item lookup

The simplest endpoint is GET /paid/item/{itemName}. Pass the market hash name URL-encoded, and you get back the item plus every active marketplace offer.

curl -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/item/AK-47%20%7C%20Redline%20(Field-Tested)"

Full request and response details live in the API docs.

Reading the response

Every response is one object per item with a prices array. Each element is a single marketplace offer.

{
  "market_hash_name": "AK-47 | Redline (Field-Tested)",
  "slug": "ak-47-redline-field-tested",
  "wear_name": "Field-Tested",
  "rarity_name": "Classified",
  "liquidity": 85,
  "quantity": 15000,
  "prices": [
    { "provider": "csfloat",  "price": 12.50, "count": 150, "volume": 500, "updated_at": "..." },
    { "provider": "buff",     "price": 11.92, "count": 482, "volume": 920, "updated_at": "..." },
    { "provider": "skinport", "price": 13.10, "count":  44, "volume": 110, "updated_at": "..." }
  ]
}

liquidity

A 0-100 score describing how easily the item trades. Filter on this before showing opportunities to users or buying inventory.

prices[].count

Number of listings available at the lowest price on that marketplace. A high count means the price is stable; a low count means it can disappear in seconds.

prices[].volume

Recent trading volume for that marketplace. Use it to weight which markets to trust when prices disagree.

prices[].updated_at

Per-offer ISO timestamp. Always check it before acting on a price, especially for low-liquidity items where stale data is more common.

Bulk fetch with filters

When you need many items at once, use GET /paid/items. Filter by provider, by market hash names, and opt into 7d/14d/30d/60d/90d average and median stats.

curl -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/items?providers=csfloat,buff,skinport&avg=true"

Polling vs price alerts

Polling works for prototypes and dashboards. For production trading or notification flows, alerts are cheaper and faster: you set a target price per item once, and Skinstrack pushes when a marketplace crosses it.

Poll when

You are building a dashboard, doing one-off analysis, or your watchlist changes every few seconds. Cache aggressively and respect rate limits.

Use alerts when

You have a fixed watchlist and want to react the instant the price hits a target. No polling, no missed windows, no wasted quota.

Rate limits and tier choice

Free

50 requests / month, Steam prices only. Use it to evaluate the response shape.

Standard

5,000 requests / month, full marketplace coverage, 50 price alerts.

Growth

15,000 requests / month, full coverage, 200 price alerts, priority support.

Full feature comparison and current prices are on the API pricing page.

Error handling and retries

The API uses standard HTTP status codes. The two you will see most often are 401 (missing or invalid key) and 429 (quota or burst limit). Always back off on 429 instead of hammering the endpoint.

curl -i -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/item/Karambit%20%7C%20Doppler"
# HTTP/1.1 429 Too Many Requests
# {"error":"API call limit reached for your plan."}

Start building with the CS2 skin price API

Pick a tier, copy your X-API-KEY, and ship a working integration today.

View API pricing

Questions

The production base URL is https://api.skinstrack.com/v1. Authenticate every request by passing your API key in the X-API-KEY header. The same key works across all paid endpoints.

Keep reading