GET /v1/market/steam/latest
Returns the latest full-depth Steam bid/ask orderbook for every tracked regular item.
The response is about 100 MB uncompressed, so Accept-Encoding: gzip is required. Full ladders are columnar: ask prices are sorted ascending, bid prices descending, and each value in volumes corresponds to the price at the same array index.
Orderbooks update about every ~5 minutes.
Access
Available on all plans.
Request
GETapi.cs2.sh/v1/market/steam/latest
curl https://api.cs2.sh/v1/market/steam/latest \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressedResponse
{
"response_time": "2026-08-23T21:59:42.578056003Z",
"currency": "USD",
"items": {
"USP-S | Printstream (Factory New)": {
"updated_at": "2026-08-23T21:56:50.48Z",
"collected_at": "2026-08-23T21:58:05.789Z",
"top": {
"ask": 144.99,
"ask_volume": 75,
"bid": 143.09,
"bid_volume": 2537
},
"depth": {
"ask_levels": 2,
"bid_levels": 2,
"asks": {
"prices": [
144.99,
145.38
],
"volumes": [
1,
1
]
},
"bids": {
"prices": [
143.09,
142.85
],
"volumes": [
1,
1
]
}
}
}
}
}Response fields
SteamOrderbookLatestResponse fields:
| Field | Type | Required | Description |
|---|---|---|---|
response_time | string (date-time) | Yes | When this snapshot response was generated. |
currency | string | Yes | Currency code (always USD). |
items | Record<string, SteamOrderbookItem> | Yes | Regular items with current orderbook data, keyed by market_hash_name. |
Orderbook data
| Field | Description |
|---|---|
items.<name>.top | Best ask/bid prices and total Steam ask/bid order counts. |
items.<name>.depth | Full columnar ladders: asks.prices/asks.volumes and bids.prices/bids.volumes. |
items.<name>.updated_at, collected_at | Steam's update time and cs2.sh's fetch time. |
- Variant items are not included.
Full schemas: SteamOrderbookItem, SteamOrderbookTop, SteamOrderbookDepth, SteamOrderbookDepthSide.
Errors
503 service_unavailable means the latest orderbook snapshot is missing, stale, or empty. See Request errors for shared errors.