How to Get CSFloat Doppler Prices by Phase
Updated
API reference: GET /v1/prices/latest
GET /v1/prices/latestreturns current CSFloat Doppler asks and highest bids separately for Phase 1-4, Ruby, Sapphire, and Black Pearl under the base item'svariantsobject.
Doppler phases have materially different markets. The parent Doppler quote is not a safe fallback for a missing phase because it discards the phase premium.
Current CSFloat phase coverage
Each variant contains a human label in display_name and a stable version code. Doppler uses p1 through p4 plus ruby, sapphire, and blackpearl. The CSFloat object can carry:
| Field | Meaning |
|---|---|
ask |
Cheapest active listing for that phase |
bid |
Highest active buy order for that phase |
ask_volume |
Active listing count |
updated_at, collected_at |
Listing update and collection times |
CSFloat does not expose bid_volume. Phase bids are available for most covered items and refresh every ~10-30 minutes based on liquidity. Variant listing prices generally refresh every ~10-15 minutes.
Read phase prices from the snapshot
Fetch GET /v1/prices/latest, select the base market_hash_name in the items map, and open variants. Select the desired variant by version, then read its csfloat object. The response is a full-market snapshot and is available on all plans.
Use the stable version value for joins and sorting. The display name remains useful for UI labels. If CSFloat does not appear on a phase, preserve that missing source rather than taking item.csfloat from the parent.
For trends, CSFloat Doppler listing history exposes per-phase OHLC. For actual sales, CSFloat Doppler sales history uses the daily completed-sale archive.
Applicable endpoints
| Endpoint | Returns | Plans |
|---|---|---|
GET /v1/prices/latest |
Current per-phase CSFloat ask, bid, and listing count | All plans |
POST /v1/prices/history |
Per-phase quote OHLC | Scale, Enterprise |
POST /v1/archive/csfloat |
Per-phase completed-sale data where available | Scale, Enterprise |
Limits to preserve
- A phase
askis a listing floor. It does not price a specific float, seed, or sticker configuration. - A bid can be missing even when an ask is present. Without
bid_volume, the quote cannot describe buy-order depth. - A crossed phase pair, where bid exceeds ask, can result from separate collection passes. Refresh it before calculating a spread.
- Variant source objects are sparse. Missing coverage must remain missing instead of inheriting the parent quote.
See the variant response fields for the complete object shape.