GET /v1/prices/latest
This is our main latest price endpoint! Returns the latest prices for all items across supported marketplaces (BUFF, Youpin, CSFloat, Skinport, Steam, and C5Game).
Doppler, Gamma Doppler, and Case Hardened variants are supported on all marketplaces. Almost all prices update about every 5 minutes (or less), depending on the marketplace. Every source object includes its own updated_at and collected_at timestamps.
Access
Available on all plans.
Supported sources
| Source | Fields |
|---|---|
buff | ask, bid, ask_volume, bid_volume |
youpin | ask, bid, ask_volume, bid_volume |
csfloat | ask, bid, ask_volume |
skinport | ask, ask_volume, max_ask, mean_ask, median_ask, 24h_history, 7d_history, 30d_history, 90d_history |
steam | ask, bid, ask_volume, bid_volume |
c5game | ask, bid, ask_volume |
Items with Doppler, Gamma Doppler, or Case Hardened prices can include variants; see Variants.
Query parameters
| Parameter | Description |
|---|---|
sources | Comma-separated sources to return, e.g. ?sources=buff,youpin. Defaults to all sources. |
currency | Currency for every price, e.g. ?currency=CNY. Defaults to USD; see Currency. |
Request
curl https://api.cs2.sh/v1/prices/latest \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressedResponse
{
"response_time": "2026-08-23T21:59:56.831728619Z",
"currency": "USD",
"items": {
"USP-S | Printstream (Factory New)": {
"market_hash_name": "USP-S | Printstream (Factory New)",
"buff": {
"updated_at": "2026-08-23T21:56:49Z",
"collected_at": "2026-08-23T21:59:10.862Z",
"ask": 101.95,
"ask_volume": 491,
"bid": 97.46,
"bid_volume": 50
},
"youpin": {
"updated_at": "2026-08-23T21:58:45.755Z",
"collected_at": "2026-08-23T21:59:14.764Z",
"ask": 98.5,
"ask_volume": 510,
"bid": 97.01,
"bid_volume": 67
},
"csfloat": {
"updated_at": "2026-08-23T21:59:27.65Z",
"collected_at": "2026-08-23T21:59:27.697Z",
"ask": 95,
"ask_volume": 241,
"bid": 92.6
},
"skinport": {
"updated_at": "2026-08-23T21:59:10.493Z",
"collected_at": "2026-08-23T21:59:18.889Z",
"ask": 105.55,
"ask_volume": 61,
"max_ask": 590.65,
"mean_ask": 166.33,
"median_ask": 142.99,
"24h_history": {
"price": 105.06,
"max_price": 127.24,
"mean_price": 116.15,
"median_price": 116.15,
"volume": 2
},
"7d_history": {
"price": 100.34,
"max_price": 317.2,
"mean_price": 127.22,
"median_price": 105.84,
"volume": 11
},
"30d_history": {
"price": 100.34,
"max_price": 317.2,
"mean_price": 121.88,
"median_price": 111.06,
"volume": 36
},
"90d_history": {
"price": 99.22,
"max_price": 317.2,
"mean_price": 121.33,
"median_price": 117.56,
"volume": 144
}
},
"steam": {
"updated_at": "2026-08-23T21:56:50.48Z",
"collected_at": "2026-08-23T21:57:48.359Z",
"ask": 144.99,
"ask_volume": 75,
"bid": 143.09,
"bid_volume": 2537
},
"c5game": {
"updated_at": "2026-08-23T21:59:19.245Z",
"collected_at": "2026-08-23T21:59:20.273Z",
"ask": 102.41,
"ask_volume": 213,
"bid": 173.93
}
}
}
}Response fields
LatestPricesGetResponse fields:
| Field | Type | Required | Description |
|---|---|---|---|
response_time | string (date-time) | Yes | When the response was generated. |
currency | string | Yes | Currency code for every price in the response. Matches the requested currency; defaults to USD. |
items | Record<string, Item> | Yes | Map of market_hash_name to item price data. |
Item data
| Field | Description |
|---|---|
items.<name>.<source> | Latest ask/bid prices and volumes on that marketplace, with updated_at and collected_at. |
items.<name>.variants | The same per-source shape for Doppler and Case Hardened variants. |
- Base item source objects are dense:
buff,youpin,csfloat,skinport,steam, andc5gameare present once any source has data for the item. - Unavailable source fields are
null. - Variant source objects are sparse and appear only when that source has variant data.
- With
sources, only the selected sources are returned, and items with no data in them are omitted.
Full schemas: Item, Variant, SkinportPriceWindow, and the per-source types under Latest Price Source Data.
Errors
400 validation_error means an unknown or repeated query parameter, an invalid source, or an unsupported currency. 503 service_unavailable means the latest snapshot is not ready. See Request errors for errors shared by all endpoints.
POST /v1/prices/latest
Returns the same latest-price data as GET /v1/prices/latest, filtered to up to 100 requested items. sources and currency work the same as on GET, sent in the JSON body.
Most prices update about every 5 minutes, depending on the marketplace. Items with Doppler, Gamma Doppler, or Case Hardened prices can include variants.
Request
curl -X POST https://api.cs2.sh/v1/prices/latest \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": [
"USP-S | Printstream (Factory New)",
"★ Karambit | Doppler (Factory New)"
],
"sources": [
"buff",
"youpin",
"csfloat"
],
"currency": "USD"
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | string[] | Yes | List of market_hash_name values (max 100). |
sources | string[] | No | Return only these sources. Defaults to all sources. |
currency | string | No | Default: USD. Allowed: AUD, CAD, CHF, CNY, EUR, GBP, JPY, NZD, SGD, USD. Currency for every price in the response. |
Response
{
"response_time": "2026-09-22T23:22:27.021330934Z",
"currency": "USD",
"items": {
"USP-S | Printstream (Factory New)": {
"market_hash_name": "USP-S | Printstream (Factory New)",
"buff": {
"updated_at": "2026-09-22T23:18:50Z",
"collected_at": "2026-09-22T23:21:09.233Z",
"ask": 90.71,
"ask_volume": 387,
"bid": 90.12,
"bid_volume": 43
},
"youpin": {
"updated_at": "2026-09-22T23:19:34.492Z",
"collected_at": "2026-09-22T23:19:59.576Z",
"ask": 93.84,
"ask_volume": 479,
"bid": 92.2,
"bid_volume": 46
},
"csfloat": {
"updated_at": "2026-09-22T23:21:18.723Z",
"collected_at": "2026-09-22T23:21:18.77Z",
"ask": 93.1,
"ask_volume": 239,
"bid": 89
}
},
"★ Karambit | Doppler (Factory New)": {
"market_hash_name": "★ Karambit | Doppler (Factory New)",
"buff": {
"updated_at": "2026-09-22T23:18:28Z",
"collected_at": "2026-09-22T23:21:09.233Z",
"ask": 1226.38,
"ask_volume": 1487,
"bid": 1191.63,
"bid_volume": 66
},
"youpin": {
"updated_at": "2026-09-22T23:20:33.469Z",
"collected_at": "2026-09-22T23:20:49.558Z",
"ask": 1210.32,
"ask_volume": 1725,
"bid": 1188.65,
"bid_volume": 25
},
"csfloat": {
"updated_at": "2026-09-22T23:21:18.723Z",
"collected_at": "2026-09-22T23:21:18.77Z",
"ask": 1213.55,
"ask_volume": 1059,
"bid": 1160
},
"variants": {
"Phase 2": {
"market_hash_name": "★ Karambit | Doppler (Factory New)",
"name": "★ Karambit | Doppler (Factory New) | Phase 2",
"display_name": "Phase 2",
"version": "p2",
"buff": {
"updated_at": "2026-09-22T23:18:28Z",
"collected_at": "2026-09-22T23:21:09.233Z",
"ask": 1765.03,
"ask_volume": null,
"bid": 1689.13,
"bid_volume": null
},
"youpin": {
"updated_at": "2026-09-22T23:20:10.56Z",
"collected_at": "2026-09-22T23:20:30.874Z",
"ask": 1759.08,
"ask_volume": null,
"bid": 1717.43,
"bid_volume": 39
},
"csfloat": {
"updated_at": "2026-09-22T23:19:09.13Z",
"collected_at": "2026-09-22T23:19:26.276Z",
"ask": 1750,
"ask_volume": null,
"bid": 1700
}
},
"Ruby": {
"market_hash_name": "★ Karambit | Doppler (Factory New)",
"name": "★ Karambit | Doppler (Factory New) | Ruby",
"display_name": "Ruby",
"version": "ruby",
"buff": {
"updated_at": "2026-09-22T23:18:28Z",
"collected_at": "2026-09-22T23:21:09.233Z",
"ask": 7497.5,
"ask_volume": null,
"bid": 5660.24,
"bid_volume": null
},
"youpin": {
"updated_at": "2026-09-22T23:21:04.858Z",
"collected_at": "2026-09-22T23:21:30.542Z",
"ask": 7409.35,
"ask_volume": null,
"bid": 7152.75,
"bid_volume": 50
},
"csfloat": {
"updated_at": "2026-09-22T23:21:08.307Z",
"collected_at": "2026-09-22T23:21:30.912Z",
"ask": 7222.22,
"ask_volume": null,
"bid": 7030
}
}
}
}
}
}Response fields
LatestPricesPostResponse fields:
| Field | Type | Required | Description |
|---|---|---|---|
response_time | string (date-time) | Yes | When the response was generated. |
currency | string | Yes | Currency code for every price in the response. Matches the requested currency; defaults to USD. |
items | Record<string, Item> | Yes | Map of market_hash_name to item price data, filtered to the requested items. |
errors | ItemError[] | No | Per-item failures alongside successful results (partial success). |
Errors
404 not_found means none of the requested valid items are present in the latest snapshot. 503 service_unavailable means the snapshot is not ready.
When only some items fail, the endpoint returns 200 with the successful items and an errors[] entry for each failure. Possible item codes are unknown_item, invalid_format, and not_in_cache. See Partial success and Request errors.