API guide
CS2 Skin Price API: Complete Guide to 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 27 marketplaces, with code in curl, JavaScript and Python.
Why a Unified Price API Beats Scraping
Scraping 27 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 21 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 27 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
27 Marketplaces
Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay, CSGOEmpire, BitSkins and 18 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
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 27 marketplaces.
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.
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.
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"When avg=true and median=true are worth it
Skip them for live dashboards where you only care about the current best price. Turn them on when you are calculating fair value, generating buy/sell signals, or showing a historical anchor next to the live offer.
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.
Frequently Asked 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?
27 marketplaces are normalized into one response, including Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay, CSGOEmpire and BitSkins. The free tier returns Steam prices only. Paid tiers return all 27.
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.
Related Guides
Build a CS2 Arbitrage Bot
Turn the price API into a profit finder. Math, architecture, working JS and Python.
CS2 Market Data API
Volume, liquidity scores and time-window averages for analytics and modeling.
Full API Reference
Every endpoint, every parameter, every response field in one place.
