POST /v1/archive/history
Returns long-term listing-price history from BUFF, Youpin, C5Game, and an aggregate series. Data begins in 2023 and updates ~1-2x per day. Max 100 items per request.
Within each bucket, prices, listing volumes, and total_supply are the last observed values. hourly_volume is an approximate sale count: the hourly estimate in 1h responses, and the sum of those hourly estimates in each 1d bucket.
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 |
By default, only aggregate is returned.
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": [
"USP-S | Printstream (Factory New)"
],
"start": "2024-01-01",
"end": "2026-07-26",
"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-07-26T18:54:19.138233339Z",
"currency": "USD",
"start": "2026-04-27T00:00:00Z",
"end": "2026-07-25T00:00:00Z",
"interval": "1d",
"items": {
"USP-S | Printstream (Factory New)": {
"market_hash_name": "USP-S | Printstream (Factory New)",
"count": 89,
"data": [
{
"bucket": "2026-04-27T00:00:00Z",
"aggregate": {
"time": "2026-04-27T23:59:07Z",
"ask": 130.05,
"ask_volume": 1225,
"bid": 130.19,
"bid_volume": 133,
"hourly_volume": 27,
"total_supply": 31291,
"sample_count": 24
},
"buff": {
"time": "2026-04-27T23:53:24Z",
"ask": 133.12,
"ask_volume": 405,
"bid": 130.19,
"bid_volume": 45,
"sample_count": 24
},
"youpin": {
"time": "2026-04-27T23:59:07Z",
"ask": 130.05,
"ask_volume": 510,
"bid": 128.59,
"bid_volume": 63,
"sample_count": 24
},
"c5game": {
"time": "2026-04-27T23:57:07Z",
"ask": 132.21,
"ask_volume": 139,
"bid": 213.58,
"bid_volume": 24,
"sample_count": 24
}
}
]
}
}
}Response fields
ArchiveHistoryResponse fields:
| Field | Type | Required | Description |
|---|---|---|---|
response_time | string (date-time) | Yes | When the response was generated. |
currency | string | Yes | Currency code (always USD). |
start | string (date-time) | Yes | Effective start of the queried range, floored to the interval boundary. |
end | string (date-time) | Yes | Effective end of the queried range, ceiled to the interval boundary. Exclusive. |
interval | string | Yes | Allowed: 1h, 1d. Archive bucket size. |
items | Record<string, ArchiveHistoryItem> | Yes | Map of market_hash_name to archive time-series. |
errors | ItemError[] | No | Per-item failures alongside successful results (partial success). |
Buckets
| Field | Description |
|---|---|
items.<name>.count | Number of buckets with data. |
items.<name>.data[] | Archive buckets. |
data[].bucket | Bucket boundary. |
data[].<platform> | Last-observed ask/bid and ask_volume/bid_volume, with time and sample_count. Platforms: aggregate, buff, youpin, c5game. |
data[].aggregate.hourly_volume | Approximate sales for the bucket. Hourly for 1h; summed across the day for 1d. |
data[].aggregate.total_supply | Approximate cumulative supply of the item. aggregate only. |
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
404 not_found means none of the requested valid items have archive data. Partial results return 200 with errors[]; possible item codes are unknown_item, invalid_format, and not_in_archive. See Partial success and Request errors.