How to Get CSFloat Doppler Sales History
Updated
API reference: POST /v1/archive/csfloat
cs2.sh serves daily CSFloat completed-sale average price and volume by Doppler phase from 2022 onward through
POST /v1/archive/csfloat.
This series measures completed sales. It is distinct from the current listing floor and bid OHLC, which describe active orders.
Per-phase sale archive
Doppler sale history is nested under the requested base item's variants object. Phase 1-4 use p1 through p4; the gem codes are ruby, sapphire, and blackpearl. Each observed UTC day contains:
date, the day of the aggregate.price, the arithmetic average of completed-sale prices that day in USD.volume, the number of completed sales behind that average.
The archive starts in 2022 and refreshes once or twice per day. Rare gems can have fewer returned days and much lower volume than numbered phases.
Query Doppler completed sales
Send the base Doppler market_hash_name and date range to POST /v1/archive/csfloat. Read variants and match the phase by its stable version. Keep volume with every price so a one-sale day is not interpreted like a high-volume day.
A sale-count-weighted summary of multiple daily averages uses each day's volume as its weight. That can approximate a mean across the represented sales, but it remains derived from daily aggregates. The archive does not return individual transactions.
For quoted market movement, use CSFloat Doppler price history, which returns ask and bid OHLC rather than sale aggregates.
Applicable endpoints
| Endpoint | Returns | Plans |
|---|---|---|
POST /v1/archive/csfloat |
Daily completed-sale average and count by phase | Scale, Enterprise |
POST /v1/prices/history |
Phase listing and bid OHLC | Scale, Enterprise |
GET /v1/prices/latest |
Current phase asks and bids | All plans |
What the archive cannot answer
priceis a daily arithmetic average, not a median or an individual sale record.- Float, seed, and stickers are not broken out within the daily phase aggregate. Sparse gem days can move because of item-specific premiums.
- Missing dates mean no returned daily aggregate. Filling them with the prior price creates sale evidence that is not present.
- Steam's native sale archive does not accept variant names. It cannot replace CSFloat's phase-level sale series.
The CSFloat archive contract details the UTC and exclusive-end semantics.