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-08-19",
"end": "2026-08-22",
"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-08-23T22:00:13.545963483Z",
"currency": "USD",
"start": "2026-08-19T00:00:00Z",
"end": "2026-08-22T00:00:00Z",
"interval": "1h",
"items": {
"USP-S | Printstream (Factory New)": {
"count": 72,
"data": [
{
"bucket": "2026-08-19T00:00:00Z",
"updated_at": "2026-08-19T00:59:51.255Z",
"collected_at": "2026-08-19T00:59:56.08Z",
"top": {
"ask": 148.88,
"ask_volume": 70,
"bid": 146.02,
"bid_volume": 2649
},
"depth": {
"ask_levels": 1,
"bid_levels": 1,
"asks": {
"prices": [
148.88
],
"volumes": [
1
]
},
"bids": {
"prices": [
146.02
],
"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 | Effective start of the queried range, floored to the interval boundary. Inclusive. |
end | string (date-time) | Yes | Effective end of the queried range, ceiled to the interval boundary. Exclusive. |
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.