POST /v1/archive/steam
Returns Steam Community Market median sale price and volume history.
- Daily (
1d) buckets from April 26, 2013 - Hourly (
1h) buckets from May 9, 2026
This is the same data that Steam exposes through their price graphs on any community market item page. Max 100 items per request.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Max range |
|---|---|
1h | Unlimited |
1d | Unlimited |
Supported sources
| Source | Fields |
|---|---|
steam | price (median sale price), volume (number of purchases) |
Request
POSTapi.cs2.sh/v1/archive/steam
curl -X POST https://api.cs2.sh/v1/archive/steam \
-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": "2025-02-01",
"interval": "1d"
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | string[] | Yes | List of regular market_hash_name values (max 100). Variants are not supported. |
start | string | Yes | Start date/time as YYYY-MM-DD or RFC3339, inclusive. |
end | string | No | End date/time as YYYY-MM-DD or RFC3339, exclusive. Defaults to now. |
interval | string | Yes | Allowed: 1h, 1d. Native Steam bucket interval. No public max date range. |
Response
json
{
"response_time": "2026-06-14T12:00:00Z",
"currency": "USD",
"start": "2025-01-01T00:00:00Z",
"end": "2025-02-01T00:00:00Z",
"interval": "1d",
"items": {
"AK-47 | Redline (Field-Tested)": {
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"count": 1,
"data": [
{
"bucket": "2025-01-01T00:00:00Z",
"price": 39.12,
"volume": 54
}
]
}
}
}Returns a ArchiveSteamResponse object. See Objects for the full shape.
Response fields
Each item holds count and a data[] array of buckets. Each bucket carries its bucket boundary, price (Steam's median sale price), and volume (number of purchases).
bucketis present on every bucket.- Variant items are not supported.
- Valid requested items with no Steam history return
not_in_archive; if every valid item has none, the endpoint returns404 not_found.
Full schemas: ArchiveSteamItem, ArchiveSteamBucket.
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). |
401 / 403 | Missing key, invalid key, or plan access. |
404 not_found | Every valid regular item has no Steam archive rows. |
429 | Rate-limited. |
5xx | Server-side issue. |
When some items resolve and others do not, the request still returns 200 with the resolved items plus an errors[] array. Variant requests use unsupported_variant.