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
What is the CS2 skin price API base URL?
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.
How many marketplaces does the Skinstrack CS2 skin price API cover?
34 marketplaces are normalized into one response, including Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay and CSGOEmpire. The free tier returns Steam prices only. Paid tiers return all 34.
How fresh is the price data?
Every offer carries an updated_at timestamp from the marketplace it was scraped from. Most providers refresh within a few minutes. If your use case needs a specific freshness budget, filter prices by updated_at on your side before acting on them.
Do I need to handle rate limits?
Yes. A 429 response means you hit your monthly quota or burst limit. Back off with exponential delays and pick a higher tier if your workload consistently exceeds your plan. The error body always includes a human-readable reason.
Can I look up items by slug instead of market hash name?
Yes. Both /paid/item/{name} and the market_hash_names query parameter on /paid/items accept either the official market hash name or the URL-friendly slug. Slugs are easier to use in URLs and database keys.
How do I cross-reference items between marketplaces?
Call /paid/marketplace-ids to receive a mapping of slugs to per-marketplace internal IDs (steam_id, buff_id, uuyp_id and so on). Use it when you need to deep-link directly into a marketplace listing.
Keep reading