Real-time CS2 skin prices across 13 marketplaces from a single unified endpoint. Responses are JSON, brotli-compressed, and refreshed roughly every 30 minutes. API keys are available on the Trader plan and above — generate yours from your profile page.
Integrating with an AI coding agent?
Grab a self-contained markdown tutorial to hand your agent — or point it at /api-docs/llms.txt.
www.cspricebase.com
Bearer API key
60 req / min / key
Brotli (br)
Every request must include your API key as a Bearer token in the Authorization header. Requests are rate-limited to 60 per minute per key; each response carries an X-RateLimit-Remaining header.
Authorization: Bearer YOUR_API_KEY/api/pricesRecommendedThe unified pricing endpoint. Select any combination of markets with markets and any extra fields with fields. This single route replaces the older per-market endpoints below.
| Param | Type | Description |
|---|---|---|
| markets | CSV | Comma-separated market ids (see table below). Omit for all markets. |
| fields | CSV | Optional extra fields to include. By default only price (and coins for csgoroll) is returned. |
| min | number | Only items whose cheapest selected-market price is ≥ this many cents. |
| max | number | Only items whose cheapest selected-market price is ≤ this many cents. |
buff163centscsfloatcentsyoupincentsdmarketcentssteamcentsgamerpaycentsmarketcsgocentslisskinscentswaxpeercentsshadowpaycentswhitemarketcentsskinscentscsgorollcoinsPrices are integers in cents (USD); csgoroll returns site coins instead of a price.
| Field | Type | Scope | Description |
|---|---|---|---|
| avg_30 | number | per-market | 30-day average price (cents) |
| avg_7 | number | per-market | 7-day average price (cents) |
| count | number | per-market | Number of listings available |
| is_inflated | boolean | per-market | Price flagged as an outlier / inflated |
| updated_at | string | per-market | ISO timestamp of the market's last update |
| link | string | per-market | Direct link to the item on that market (where available) |
| liquidity | number | item | Item-level liquidity score |
curl --compressed \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.cspricebase.com/api/prices?markets=buff163,csfloat,skins&fields=liquidity,count"{
"updated_at": "2026-06-25T12:30:00.000Z",
"markets": ["buff163", "csfloat", "skins"],
"items": {
"AK-47 | Redline (Field-Tested)": {
"buff163": { "price": 1542, "count": 84 },
"csfloat": { "price": 1610, "count": 23 },
"skins": { "price": 1599, "count": 7 },
"liquidity": 73
},
"★ Karambit | Doppler (Factory New)": {
"buff163": { "price": 89900, "count": 5 },
"csfloat": { "price": 92500, "count": 2 }
}
}
}Each response includes an ETag. Send it back as If-None-Match on the next poll — if nothing changed you get a fast, body-less 304 Not Modified. Since data only refreshes every ~30 min, this is the recommended way to poll.
curl --compressed \
-H "Authorization: Bearer YOUR_API_KEY" \
-H 'If-None-Match: "v1a2b3c4:9zY8xW7v"' \
"https://www.cspricebase.com/api/prices?markets=buff163,csfloat,skins&fields=liquidity,count"| Status | Meaning | When |
|---|---|---|
| 400 | Bad Request | Unknown market or field, or a non-numeric min/max |
| 401 | Unauthorized | Missing, malformed, or invalid Bearer API key |
| 429 | Too Many Requests | Over 60 requests/minute — see Retry-After header |
| 503 | Service Unavailable | Pricing data is momentarily unavailable (retry shortly) |
Error bodies are JSON of the form { "error": "…" }.
These predate the unified endpoint. They remain available, but new integrations should use /api/prices.
/api/csgoroll-pricesDeprecatedCSGORoll coin prices only. Superseded by /api/prices?markets=csgoroll. Accepts optional min / max coin filters.
{
"updated_at": "2026-06-25T12:30:00.000Z",
"items": {
"AK-47 | Redline (Field-Tested)": { "coins": 18.42 }
}
}/api/get-rollhelper-pricesExtensionDedicated to the Rollhelper Chrome extension. It returns a compact, extension-specific shape (Buff / YouPin / CSFloat prices in cents) and is kept stable for that client. It takes no query parameters. New integrations should use /api/prices instead.
{
"AK-47 | Redline (Field-Tested)": {
"price_buff": 1542,
"price_uu": 1488,
"price_csfloat": 1610,
"liquidity": 73,
"is_inflated": false
}
}