POST /v1/prices/history
Returns continuously updated OHLC price history. Use this endpoint for short-medium term price history. Data begins on December 24, 2025. Prices update every ~5 minutes - data for this endpoint is the same as prices/latest. Max 100 items per request.
Items with Doppler phases or Case Hardened tiers include a variants response; see Response Format.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Max range |
|---|---|
5m | 14 days |
30m | 90 days |
1h | 365 days |
1d | Unlimited |
Supported sources
| Source | Fields |
|---|---|
buff | ask, bid, ask_volume, bid_volume |
youpin | ask, bid, ask_volume, bid_volume |
csfloat | ask, ask_volume |
skinport | ask, ask_volume |
steam | ask, bid, ask_volume, bid_volume |
c5game | ask, bid, ask_volume |
Default source selection: all sources.
bucket is the UTC interval boundary. open_time and close_time are the actual first and last observations inside the bucket; see Response Format.
Request
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": [
"AK-47 | Redline (Field-Tested)"
],
"start": "2026-01-01",
"end": "2026-01-08",
"sources": [
"buff",
"csfloat"
],
"interval": "1h"
}'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: all sources |
interval | string | No | Default: 5m. Allowed: 5m, 30m, 1h, 1d. Aggregation interval |
Response
{
"response_time": "2026-02-28T18:37:20.5984736Z",
"currency": "USD",
"start": "2026-01-15T00:00:00Z",
"end": "2026-02-14T00:00:00Z",
"interval": "1h",
"items": {
"AWP | Asiimov (Field-Tested)": {
"market_hash_name": "AWP | Asiimov (Field-Tested)",
"count": 720,
"data": [
{
"bucket": "2026-01-15T00:00:00Z",
"buff": {
"open_ask": 121.9,
"high_ask": 121.9,
"low_ask": 121.9,
"close_ask": 121.9,
"ask_volume": 2122,
"open_bid": 119.46,
"high_bid": 119.46,
"low_bid": 119.46,
"close_bid": 119.46,
"bid_volume": 83,
"sample_count": 12,
"open_time": "2026-01-15T00:10:00Z",
"close_time": "2026-01-15T00:50:00Z"
},
"youpin": {
"open_ask": 121.76,
"high_ask": 121.76,
"low_ask": 121.76,
"close_ask": 121.76,
"ask_volume": 2107,
"open_bid": 121.47,
"high_bid": 121.47,
"low_bid": 121.47,
"close_bid": 121.47,
"bid_volume": 47,
"sample_count": 12,
"open_time": "2026-01-15T00:01:04Z",
"close_time": "2026-01-15T00:55:04Z"
},
"csfloat": {
"open_ask": 121.49,
"high_ask": 121.49,
"low_ask": 121.49,
"close_ask": 121.49,
"ask_volume": 509,
"sample_count": 12,
"open_time": "2026-01-15T00:01:49.415Z",
"close_time": "2026-01-15T00:56:50.478Z"
},
"skinport": {
"open_ask": 127.62,
"high_ask": 128.02,
"low_ask": 127.62,
"close_ask": 128.02,
"ask_volume": 158,
"sample_count": 12,
"open_time": "2026-01-15T00:01:52.946Z",
"close_time": "2026-01-15T00:56:52.948Z"
},
"steam": {
"open_ask": 175.13,
"high_ask": 175.13,
"low_ask": 175.13,
"close_ask": 175.13,
"ask_volume": 124,
"open_bid": 170.45,
"high_bid": 170.45,
"low_bid": 170.21,
"close_bid": 170.21,
"bid_volume": 58,
"sample_count": 24,
"open_time": "2026-01-15T00:04:28Z",
"close_time": "2026-01-15T00:04:28Z"
},
"c5game": {
"open_ask": 122.9,
"high_ask": 122.9,
"low_ask": 122.81,
"close_ask": 122.81,
"ask_volume": 582,
"open_bid": null,
"high_bid": null,
"low_bid": null,
"close_bid": null,
"sample_count": 12,
"open_time": "2026-01-15T00:01:45.282Z",
"close_time": "2026-01-15T00:56:44.104Z"
}
}
]
}
}
}Returns a HistoryResponse object. See Objects for the full shape.
Response fields
Each item holds count (buckets with data) and a data[] array of OHLC buckets. bucket is the UTC-aligned interval boundary; each per-source object carries OHLC values plus the real observation window (open_time/close_time) and sample_count. csfloat and skinport are ask-only. Variants nest under variants.
bucketis present on every history bucket.- Per-source objects appear only when that source has data in the bucket.
- 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
| 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. |
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. errors[] is for invalid or unresolved item names, not for valid items with no buckets.