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

POST /v1/prices/history

This is our main history endpoint! Returns high-frequency OHLC (open, high, low, close) price history aggregated from the same snapshots as latest prices. Historical coverage begins December 24, 2025. Each request accepts up to 100 items.

Doppler, Gamma Doppler, and Case Hardened items are supported and include a variants object within the response.

Access#

Requires a Scale or Enterprise API key.

Supported intervals#

IntervalMax range
5m14 days
30m90 days
1h365 days
1dUnlimited

Supported sources#

SourceFields
buffask, bid, ask_volume, bid_volume
youpinask, bid, ask_volume, bid_volume
csfloatask, bid, ask_volume
skinportask, ask_volume
steamask, bid, ask_volume, bid_volume
c5gameask, bid, ask_volume

By default, all sources are returned.

bucket is the UTC interval boundary. open_time and close_time are the actual first and last observations inside the bucket; see Using the API.

Request#

POSTapi.cs2.sh/v1/prices/history
curl -X POST https://api.cs2.sh/v1/prices/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",
  "sources": [
    "buff",
    "csfloat"
  ],
  "interval": "1h",
  "currency": "USD"
}'

Parameters#

FieldTypeRequiredDescription
itemsstring[]YesList of market_hash_name values (max 100).
startstringYesStart date/time as YYYY-MM-DD or RFC3339, inclusive.
endstringNoEnd date/time as YYYY-MM-DD or RFC3339, exclusive. Defaults to now.
sourcesstring[]NoFilter to specific sources. Defaults to all sources.
intervalstringNoDefault: 5m. Allowed: 5m, 30m, 1h, 1d. Bucket interval. 5m is limited to 14 days, 30m to 90 days, 1h to 365 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:06.628202571Z",
  "currency": "USD",
  "start": "2026-08-19T00:00:00Z",
  "end": "2026-08-22T00:00:00Z",
  "interval": "1h",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "count": 72,
      "data": [
        {
          "bucket": "2026-08-19T00:00:00Z",
          "buff": {
            "open_ask": 96.4,
            "high_ask": 96.4,
            "low_ask": 96.4,
            "close_ask": 96.4,
            "ask_volume": 491,
            "open_bid": 93.44,
            "high_bid": 93.44,
            "low_bid": 93.44,
            "close_bid": 93.44,
            "bid_volume": 37,
            "sample_count": 75,
            "open_time": "2026-08-19T00:00:56Z",
            "close_time": "2026-08-19T00:58:50Z"
          },
          "youpin": {
            "open_ask": 96.17,
            "high_ask": 96.17,
            "low_ask": 96.1,
            "close_ask": 96.1,
            "ask_volume": 539,
            "open_bid": 94.46,
            "high_bid": 94.61,
            "low_bid": 94.46,
            "close_bid": 94.61,
            "bid_volume": 65,
            "sample_count": 8,
            "open_time": "2026-08-19T00:06:21.125Z",
            "close_time": "2026-08-19T00:58:45.114Z"
          },
          "csfloat": {
            "open_ask": 95.76,
            "high_ask": 95.76,
            "low_ask": 95.76,
            "close_ask": 95.76,
            "ask_volume": 243,
            "open_bid": 92.1,
            "high_bid": 92.1,
            "low_bid": 92.1,
            "close_bid": 92.1,
            "sample_count": 60,
            "open_time": "2026-08-19T00:00:06.014Z",
            "close_time": "2026-08-19T00:54:39.374Z"
          },
          "skinport": {
            "open_ask": 105.49,
            "high_ask": 105.49,
            "low_ask": 105.49,
            "close_ask": 105.49,
            "ask_volume": 64,
            "sample_count": 60,
            "open_time": "2026-08-19T00:00:10.488Z",
            "close_time": "2026-08-19T00:59:10.489Z"
          },
          "steam": {
            "open_ask": 148.88,
            "high_ask": 148.88,
            "low_ask": 142.71,
            "close_ask": 148.88,
            "ask_volume": 70,
            "open_bid": 146.02,
            "high_bid": 146.02,
            "low_bid": 146.02,
            "close_bid": 146.02,
            "bid_volume": 2649,
            "sample_count": 20,
            "open_time": "2026-08-19T00:02:12.821Z",
            "close_time": "2026-08-19T00:59:51.255Z"
          },
          "c5game": {
            "open_ask": 99.42,
            "high_ask": 99.42,
            "low_ask": 98.63,
            "close_ask": 98.63,
            "ask_volume": 232,
            "open_bid": 172.34,
            "high_bid": 172.34,
            "low_bid": 172.34,
            "close_bid": 172.34,
            "sample_count": 12,
            "open_time": "2026-08-19T00:04:14.685Z",
            "close_time": "2026-08-19T00:08:44.192Z"
          }
        }
      ]
    }
  }
}

Response fields#

HistoryResponse 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: 5m, 30m, 1h, 1d. Requested bucket interval.
itemsRecord<string, HistoryItem>YesMap of market_hash_name to OHLC time-series.
errorsItemError[]NoPer-item failures alongside successful results (partial success).

Buckets#

FieldDescription
items.<name>.countNumber of buckets with data.
items.<name>.data[]OHLC buckets.
data[].bucketUTC-aligned interval boundary.
data[].<source>OHLC values, plus the real observation window (open_time/close_time) and sample_count.
items.<name>.variantsThe same bucketed shape per variant.
  • bucket is present on every history bucket.
  • Per-source objects appear only when that source has data in the bucket.
  • csfloat carries ask and bid OHLC without bid_volume; skinport is ask-only.
  • Valid requested items with no buckets in the requested range are omitted from items.

Full schemas: HistoryItem, HistoryBucket, and the per-source types under OHLC Source Data.

Errors#

When only some item names fail, the endpoint returns 200 with the successful series and errors[]. Valid items with no buckets in the requested range are omitted without an item error. See Partial success and Request errors.