CS2 skin price API guide: real-time market data integration
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
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
Normalized schema
Production-ready from day one
Cheaper than building it yourself
What the Skinstrack API returns
34 marketplaces
Liquidity score built in
Time-window averages
Getting started in four steps
- 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.
- 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.
- 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.
- 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
prices[].count
prices[].volume
prices[].updated_at
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
Use alerts when
Rate limits and tier choice
Free
Standard
Growth
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.
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