POST /v1/market/steam/history
Returns full-depth Steam orderbook snapshots over time, the same shape as GET /v1/market/steam/latest. Data begins on June 9, 2026. Max 100 items per request.
Each bucket contains the last complete orderbook collected inside that interval. This is sampled history, not OHLC.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Max range |
|---|---|
1h | 90 days |
1d | Unlimited |
Request
POSTapi.cs2.sh/v1/market/steam/history
curl -X POST https://api.cs2.sh/v1/market/steam/history \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": [
"USP-S | Printstream (Factory New)"
],
"start": "2026-07-20",
"end": "2026-07-23",
"interval": "1h"
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | string[] | Yes | List of regular market_hash_name values (max 100). Variants are not supported. |
start | string | Yes | Start date/time as YYYY-MM-DD or RFC3339, inclusive. |
end | string | No | End date/time as YYYY-MM-DD or RFC3339, exclusive. Defaults to now. |
interval | string | Yes | Allowed: 1h, 1d. Bucket interval. 1h is limited to 90 days; 1d is unlimited. |
Response
{
"response_time": "2026-07-26T18:54:23.061441059Z",
"currency": "USD",
"start": "2026-07-20T00:00:00Z",
"end": "2026-07-23T00:00:00Z",
"interval": "1h",
"items": {
"USP-S | Printstream (Factory New)": {
"count": 72,
"data": [
{
"bucket": "2026-07-20T00:00:00Z",
"updated_at": "2026-07-20T00:54:22.006Z",
"collected_at": "2026-07-20T00:55:13.298Z",
"top": {
"ask": 161.62,
"ask_volume": 69,
"bid": 155.43,
"bid_volume": 2940
},
"depth": {
"ask_levels": 1,
"bid_levels": 1,
"asks": {
"prices": [
161.62
],
"volumes": [
1
]
},
"bids": {
"prices": [
155.43
],
"volumes": [
1
]
}
}
}
]
}
}
}Response fields
SteamOrderbookHistoryResponse fields:
| Field | Type | Required | Description |
|---|---|---|---|
response_time | string (date-time) | Yes | When the response was generated. |
currency | string | Yes | Currency code (always USD). |
start | string (date-time) | Yes | Normalized UTC inclusive start. |
end | string (date-time) | Yes | Normalized UTC exclusive end. |
interval | string | Yes | Allowed: 1h, 1d. Requested bucket interval. |
items | Record<string, SteamOrderbookHistoryItem> | Yes | Map of market_hash_name to returned orderbook history. |
errors | ItemError[] | No | Per-item failures alongside successful results (partial success). |
Sampled buckets
| Field | Description |
|---|---|
items.<name>.count | Number of buckets with data. |
items.<name>.data[] | Orderbook snapshots: the latest full-depth observation inside each bucket. |
data[].bucket | UTC interval boundary. |
data[].top | Best ask/bid prices and total Steam ask/bid order counts. |
data[].depth | Full columnar ask and bid ladders, same shape as GET /v1/market/steam/latest. |
data[].updated_at, collected_at | Steam's update time and cs2.sh's fetch time. |
- Variant items are not included.
- Valid requested items with no buckets in the range are omitted from
items.
Full schemas: SteamOrderbookHistoryItem, SteamOrderbookHistoryPoint, SteamOrderbookTop, SteamOrderbookDepth, SteamOrderbookDepthSide.
Errors
When only some item names fail, the endpoint returns 200 with the successful series and errors[]. Variant requests use unsupported_variant; valid regular items with no buckets are omitted from items. See Partial success and Request errors.