POST /v1/market/csfloat/orderbook/history
Returns CSFloat buy order snapshots over time (daily or hourly intervals). This endpoint is the same shape as GET /v1/market/csfloat/orderbook/latest.
Data begins on August 10, 2026. Max 100 items per request.
Each interval contains the newest data observed inside that interval. For example, requesting the 1h interval would return the newest data for that hour.
Access
Requires a Scale or Enterprise API key.
Supported intervals
| Interval | Max range |
|---|---|
1h | 365 days |
1d | Unlimited |
Request
curl -X POST https://api.cs2.sh/v1/market/csfloat/orderbook/history \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": [
"★ Karambit | Doppler (Factory New)"
],
"start": "2026-08-10",
"end": "2026-08-23",
"interval": "1h"
}'Parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | string[] | Yes | List of base or Doppler/Gamma Doppler phase market_hash_name values (max 100). |
start | string | No | Start date/time as YYYY-MM-DD or RFC3339, inclusive. Data begins 2026-08-10. |
end | string | No | End date/time as YYYY-MM-DD or RFC3339, exclusive. Defaults to now. |
interval | string | No | Default: 1h. Allowed: 1h, 1d. Bucket interval. 1h is limited to 365 days; 1d is unlimited. |
Response
{
"response_time": "2026-08-23T22:00:11.929760469Z",
"currency": "USD",
"start": "2026-08-20T00:00:00Z",
"end": "2026-08-22T00:00:00Z",
"interval": "1h",
"items": {
"★ Karambit | Doppler (Factory New)": {
"market_hash_name": "★ Karambit | Doppler (Factory New)",
"count": 48,
"data": [
{
"bucket": "2026-08-20T00:00:00Z",
"updated_at": "2026-08-20T00:55:11.258Z",
"collected_at": "2026-08-20T00:56:10.301Z",
"top_generic_bid": null,
"orders": [
{
"price": 6550,
"quantity": 1,
"kind": "paint_index",
"conditions": {
"paint_index": 417
}
},
{
"price": 4290,
"quantity": 1,
"kind": "paint_index",
"conditions": {
"paint_index": 416
}
}
]
}
],
"variants": {
"Phase 2": {
"market_hash_name": "★ Karambit | Doppler (Factory New)",
"name": "★ Karambit | Doppler (Factory New) | Phase 2",
"display_name": "Phase 2",
"version": "p2",
"count": 46,
"data": [
{
"bucket": "2026-08-20T00:00:00Z",
"updated_at": "2026-08-20T00:57:14.824Z",
"collected_at": "2026-08-20T00:58:10.396Z",
"top_generic_bid": 1230,
"orders": [
{
"price": 1630,
"quantity": 1,
"kind": "paint_index",
"conditions": {
"paint_index": 419
}
},
{
"price": 1620,
"quantity": 1,
"kind": "paint_index",
"conditions": {
"paint_index": 419
}
}
]
}
]
}
}
}
}
}Response fields
CSFloatBuyOrdersHistoryResponse 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. Inclusive. |
end | string (date-time) | Yes | Effective end of the queried range, ceiled to the interval boundary. Exclusive. |
interval | string | Yes | Allowed: 1h, 1d. Requested bucket interval. |
items | Record<string, CSFloatBuyOrdersHistoryItem> | Yes | Map of market_hash_name to returned buy-order book history. |
errors | ItemError[] | No | Per-item failures alongside successful results (partial success). |
Sampled buckets
| Field | Description |
|---|---|
items.<name>.count | Number of buckets with data. |
items.<name>.data[] | Buy-order books: the newest observation inside each bucket. |
items.<name>.variants | Doppler and Gamma Doppler phase series, keyed by display name. |
data[].orders | The buy-order ladder, price descending, same shape as GET /v1/market/csfloat/orderbook/latest. |
data[].top_generic_bid | Highest order price with no conditions; null when only conditional orders stand. |
data[].updated_at, collected_at | CSFloat's update time and cs2.sh's fetch time. |
- A request naming only a phase (e.g.
★ Karambit | Doppler (Factory New) | Phase 2) returns that phase nested under its base entry.
Buy-order conditions
kind | Meaning |
|---|---|
generic | No conditions. conditions is {}. |
paint_index | The listing's paint index must match. |
float | The listing's float value must be within the supplied bounds. |
sticker | The listing must have the specified sticker requirements. |
keychain_pattern | The applied charm's pattern value must be within the supplied bounds. |
paint_seeds | The listing's paint seed must be one of the supplied values. |
keychain | The listing must have the specified charm. |
mixed | The listing must satisfy all supplied condition families. |
conditions key | Type | Meaning |
|---|---|---|
paint_index | integer | The listing's paint index must equal this value. |
min_float | number | The listing's float value must be at least this value. |
max_float | number | The listing's float value must be at most this value. |
stickers | CSFloatStickerCondition[] | The listing must satisfy every sticker requirement. Repeating an sId requires multiple copies. |
min_keychain_pattern | integer | The applied charm's pattern value must be at least this value. |
max_keychain_pattern | integer | The applied charm's pattern value must be at most this value. |
paint_seeds | integer[] | The listing's paint seed must equal one of these values. |
keychains | CSFloatKeychainCondition[] | The listing must have every charm identified in this array. |
If multiple condition fields are present, the listing must satisfy all of them. mixed orders can also include additional CSFloat condition keys verbatim.
Sticker requirement:
| Field | Type | Required | Meaning |
|---|---|---|---|
sId | integer | Yes | Numeric CSFloat ID of the sticker the listing must have. |
s | integer | No | Zero-based slot that must contain this sticker. If omitted, the sticker may be in any slot. |
Charm requirement:
| Field | Type | Required | Meaning |
|---|---|---|---|
sId | integer | Yes | Numeric CSFloat ID of the charm the listing must have. |
Full schemas: CSFloatBuyOrdersHistoryItem, CSFloatBuyOrdersHistoryVariant, CSFloatBuyOrdersHistoryPoint, CSFloatBuyOrder, CSFloatBuyOrderConditions, CSFloatStickerCondition, CSFloatKeychainCondition.
Errors
When only some item names fail, the endpoint returns 200 with the successful series and errors[]. Variants without a CSFloat paint index (Marble Fade, Case Hardened, and other pattern-priced families) use unsupported_variant. See Partial success and Request errors.