POST /v1/market/buff/history

Returns OHLC history for BUFF float ranges and fade ranges. Data begins on May 19, 2026.

Each range from GET /v1/market/buff/latest has its own time series, including ranges for Doppler, Gamma Doppler, and Case Hardened variants. OHLC is computed for ask, avg_ask, and bid; ask_volume and bid_volume are the last values observed in the interval. Data updates every 10 minutes. Max 100 items per request.

Access#

Requires a Scale or Enterprise API key.

Supported intervals#

IntervalMax range
30m90 days
1h365 days
1dUnlimited

bucket is the UTC interval start. open_time and close_time are the actual first and last observations inside it. updated_at is BUFF's last update time represented by the bucket; collected_at is the cs2.sh collection time represented by it.

Request#

POSTapi.cs2.sh/v1/market/buff/history
curl -X POST https://api.cs2.sh/v1/market/buff/history \
  -H "Authorization: Bearer <<YOUR_API_KEY>>" \
  -H "Accept-Encoding: gzip" --compressed \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    "★ Bayonet | Fade (Factory New)",
    "AK-47 | Case Hardened (Field-Tested)"
  ],
  "start": "2026-07-20",
  "end": "2026-07-23",
  "interval": "1h"
}'

Parameters#

FieldTypeRequiredDescription
itemsstring[]YesList of market_hash_name values (max 100)
startstringYesStart date/time as YYYY-MM-DD or RFC3339
endstringNoEnd date/time as YYYY-MM-DD or RFC3339. Defaults to now.
intervalstringNoDefault: 30m. Allowed: 30m, 1h, 1d.

Response#

{
  "response_time": "2026-07-26T18:54:21.429446677Z",
  "currency": "USD",
  "start": "2026-07-20T00:00:00Z",
  "end": "2026-07-23T00:00:00Z",
  "interval": "1h",
  "items": {
    "★ Bayonet | Fade (Factory New)": {
      "market_hash_name": "★ Bayonet | Fade (Factory New)",
      "buckets": [
        {
          "bucket_id": "base",
          "bucket_type": "base",
          "data": [
            {
              "bucket": "2026-07-20T00:00:00Z",
              "updated_at": "2026-07-20T00:46:24Z",
              "collected_at": "2026-07-20T00:50:57.483Z",
              "open_ask": 371.36,
              "high_ask": 371.57,
              "low_ask": 371.36,
              "close_ask": 371.57,
              "open_avg_ask": 379.74,
              "high_avg_ask": 379.96,
              "low_avg_ask": 379.74,
              "close_avg_ask": 379.96,
              "open_bid": 359.57,
              "high_bid": 359.78,
              "low_bid": 359.57,
              "close_bid": 359.78,
              "ask_volume": 177,
              "bid_volume": 23,
              "open_time": "2026-07-20T00:00:53.231Z",
              "close_time": "2026-07-20T00:50:57.483Z"
            }
          ]
        }
      ]
    }
  }
}

Response fields#

BUFFMarketFloatHistoryResponse fields:

FieldTypeRequiredDescription
response_timestring (date-time)YesWhen the response was generated.
currencystringYesCurrency code (always USD).
startstring (date-time)YesEffective start of the queried range, floored to the interval boundary.
endstring (date-time)YesEffective end of the queried range, ceiled to the interval boundary. Exclusive.
intervalstringYesAllowed: 30m, 1h, 1d. OHLC bucket size.
itemsRecord<string, BUFFMarketFloatHistoryItem>YesMap of market_hash_name to per-item BUFF history.
errorsItemError[]NoPer-item failures alongside successful results (partial success).

Range history#

FieldDescription
items.<name>.buckets[]The item's price ranges, with identity (bucket_id, bucket_type, float/fade) matching GET /v1/market/buff/latest.
buckets[].data[]OHLC points for the range.
data[].bucketUTC interval boundary.
data[].open_time, close_timeThe real first and last observation timestamps inside the bucket.
data[].ask, avg_ask, bidOHLC values.
data[].ask_volume, bid_volumeLast-observed volumes in the bucket.
items.<name>.variantsThe same range history nested by variant display name.
  • float appears on float and float_fade ranges; fade on fade and float_fade ranges.

Full schemas: BUFFMarketFloatHistoryItem, BUFFMarketFloatHistoryBucket, BUFFMarketFloatHistoryPoint.

Errors#

404 not_found means none of the requested valid items have BUFF range history. Partial results return 200 with errors[]; possible item codes are unknown_item, invalid_format, and not_in_cache. See Partial success and Request errors.