How to Compare Steam and CSFloat Sales History
Updated
API reference: POST /v1/archive/steam · POST /v1/archive/csfloat
cs2.sh provides native Steam median sale history and CSFloat completed-sale averages as separate USD series that can be aligned by exact item and UTC date.
The two price fields are different statistics. Steam returns a median sale price in wallet value; CSFloat returns the arithmetic average of completed sales on a cash marketplace.
Coverage and field comparison
| Source | Price field | Volume field | History |
|---|---|---|---|
| Steam | Median sale price | Number of purchases | 1d since April 26, 2013; 1h since May 9, 2026 |
| CSFloat | Daily arithmetic average completed-sale price | Number of completed sales | 1d since 2022 |
Steam archive data refreshes every eight hours for liquid items and daily for the rest. CSFloat archive data updates once or twice per day. Both endpoints accept up to 100 items per request and require Scale or Enterprise.
How to align the histories
Request 1d data for the same regular market_hash_name, start date, and exclusive end date. Join Steam bucket dates to CSFloat date values in UTC. Keep the price columns explicitly labeled by source and statistic, and keep the two volume columns separate.
Retain one-sided dates with nulls when coverage analysis matters. Restricting the comparison to matched dates is appropriate for a ratio, but it should be stated because it removes days where only one marketplace recorded a returned aggregate.
Applicable endpoints
| Endpoint | Returns | Plans |
|---|---|---|
POST /v1/archive/steam |
Native median sale price and purchase count | Scale, Enterprise |
POST /v1/archive/csfloat |
Average completed-sale price and sale count | Scale, Enterprise |
Comparison limits
- Adding the two volume fields does not create a deduplicated market-wide sale count. They measure separate marketplaces.
- Steam archive history supports regular items only. CSFloat can return supported variants, so phase-level comparisons do not have a Steam counterpart here.
- The gap between wallet and cash prices is not a fee-free arbitrage spread.
- Different sold floats, stickers, or paint seeds can change each daily statistic.
Keep both completed-sale archives separate from current listing and bid quotes.