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.
This endpoint returns snapshotted orderbook data and selects the most recent successful data for the specific interval. For example, requesting the 1h interval will return the newest data for that item for any given hour.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Max range |
|---|---|
1h | 90 days |
1d | Unlimited |
Request
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",
"currency": "USD"
}'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. |
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-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 for every price in the response. Matches the requested currency; defaults to 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.