BUFF sale history is now available - POST /v1/archive/buff returns sale prices and daily total supply since September 2024.

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#

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-08-19",
  "end": "2026-08-22",
  "interval": "1h",
  "currency": "USD"
}'

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.
currencystringNoDefault: 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:

FieldTypeRequiredDescription
response_timestring (date-time)YesWhen the response was generated.
currencystringYesCurrency code for every price in the response. Matches the requested currency; defaults to USD.
startstring (date-time)YesEffective start of the queried range, floored to the interval boundary. Inclusive.
endstring (date-time)YesEffective end of the queried range, ceiled to the interval boundary. Exclusive.
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.