POST /v1/archive/history
Returns comprehensive archive price data from BUFF, Youpin, and C5Game from 2023 onwards. Use this endpoint for long-term price history.
The aggregate source additionally includes both hourly_volume - the approximate number of sales within that hour - and total_supply - the approximate cumulative supply of that item. Archive history updates once or twice per day. Max 100 items per request.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Bucket |
|---|---|
1h | Hourly archive buckets |
1d | Daily archive buckets |
Supported sources
| Source | Fields |
|---|---|
aggregate | ask, bid, ask_volume, bid_volume, hourly_volume, total_supply |
buff | ask, bid, ask_volume, bid_volume |
youpin | ask, bid, ask_volume, bid_volume |
c5game | ask, bid, ask_volume, bid_volume |
Default source selection: aggregate.
Request
curl -X POST https://api.cs2.sh/v1/archive/history \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": [
"AK-47 | Redline (Field-Tested)"
],
"start": "2025-01-01",
"end": "2026-01-08",
"sources": [
"aggregate",
"buff"
],
"interval": "1d"
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | string[] | Yes | List of market_hash_name values (max 100) |
start | string | Yes | Start date (YYYY-MM-DD or RFC3339) |
end | string | No | End date (YYYY-MM-DD or RFC3339). Default now. |
sources | string[] | No | Filter to specific sources. Default: aggregate only. |
interval | string | No | Default: 1d. Allowed: 1h, 1d. Aggregation interval |
Response
{
"response_time": "2026-02-28T18:37:17.686139854Z",
"currency": "USD",
"start": "2025-11-16T00:00:00Z",
"end": "2026-02-14T00:00:00Z",
"interval": "1d",
"items": {
"AWP | Asiimov (Field-Tested)": {
"market_hash_name": "AWP | Asiimov (Field-Tested)",
"count": 90,
"data": [
{
"bucket": "2025-11-16T00:00:00Z",
"aggregate": {
"time": "2025-11-16T23:59:04Z",
"ask": 113.78,
"ask_volume": 5470,
"bid": 112.26,
"bid_volume": 243,
"hourly_volume": 5,
"total_supply": 100799,
"sample_count": 24
},
"buff": {
"time": "2025-11-16T23:59:04Z",
"ask": 114.09,
"ask_volume": 2104,
"bid": 111.13,
"bid_volume": 109,
"sample_count": 24
},
"youpin": {
"time": "2025-11-16T23:59:04Z",
"ask": 113.95,
"ask_volume": 2189,
"bid": 112.26,
"bid_volume": 72,
"sample_count": 24
},
"c5game": {
"time": "2025-11-16T23:59:03Z",
"ask": 113.78,
"ask_volume": 535,
"bid": 198.6,
"bid_volume": 62,
"sample_count": 24
}
}
]
}
}
}Returns a ArchiveHistoryResponse object. See Objects for the full shape.
Response fields
Each item holds count and a data[] array of buckets. Each bucket has a bucket boundary plus per-platform objects (aggregate, buff, youpin, c5game) carrying last-observed ask/bid, ask_volume/bid_volume, time, and sample_count. hourly_volume and total_supply populate only on the aggregate platform.
bucketis present on every archive bucket.- Per-platform objects appear only when that platform has data in the bucket.
- Valid requested items with no archive data return
not_in_archive.
Full schemas: ArchiveHistoryItem, ArchiveHistoryBucket, ArchiveHistoryPlatformData.
Errors
| Status | When |
|---|---|
400 validation_error | The request body or query failed validation (e.g. bad JSON, missing items/start, over 100 items, or a bad interval or date range). |
404 not_found | No requested valid item has archive data. |
401 / 403 | Missing key, invalid key, or plan access. |
429 | Rate-limited. |
5xx | Server-side issue. |
When some items resolve and others don't, the request still returns 200 with the resolved items plus an errors[] array – each entry is an ItemError with a code of unknown_item, invalid_format, or not_in_archive.