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#

IntervalMax range
1h90 days
1dUnlimited

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#

FieldTypeRequiredDescription
itemsstring[]YesList of regular market_hash_name values (max 100). Variants are not supported.
startstringYesStart date/time as YYYY-MM-DD or RFC3339, inclusive.
endstringNoEnd date/time as YYYY-MM-DD or RFC3339, exclusive. Defaults to now.
intervalstringYesAllowed: 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:

FieldTypeRequiredDescription
response_timestring (date-time)YesWhen the response was generated.
currencystringYesCurrency code (always USD).
startstring (date-time)YesNormalized UTC inclusive start.
endstring (date-time)YesNormalized UTC exclusive end.
intervalstringYesAllowed: 1h, 1d. Requested bucket interval.
itemsRecord<string, SteamOrderbookHistoryItem>YesMap of market_hash_name to returned orderbook history.
errorsItemError[]NoPer-item failures alongside successful results (partial success).

Sampled buckets#

FieldDescription
items.<name>.countNumber of buckets with data.
items.<name>.data[]Orderbook snapshots: the latest full-depth observation inside each bucket.
data[].bucketUTC interval boundary.
data[].topBest ask/bid prices and total Steam ask/bid order counts.
data[].depthFull columnar ask and bid ladders, same shape as GET /v1/market/steam/latest.
data[].updated_at, collected_atSteam'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.