# How to Compare CSFloat Listings With Completed Sales

> cs2.sh provides both CSFloat listing-price OHLC and daily completed-sale history, so the closing listing floor can be compared with the realized daily average without conflating their fields.

A listing ask is an active seller's requested price. A completed-sale price records items that actually cleared. The two can differ because sales occur throughout the day and because sold items can carry float, seed, or sticker premiums.

## The two CSFloat series

| Series | Fields | Coverage |
| --- | --- | --- |
| Listing and bid OHLC | `open_ask` through `close_ask`, bid OHLC, `ask_volume`, `sample_count` | Since December 24, 2025; bids since July 18, 2026 |
| Completed sales | Daily average `price` and sale `volume` | Since 2022 |

Listing OHLC updates continuously. The completed-sale archive updates once or twice per day. Both use USD, but the listing `ask_volume` counts active listings while archive `volume` counts sales.

## Align listings with sales

Request `csfloat` at `1d` on `POST /v1/prices/history` and request the same exact `market_hash_name` and UTC date range on `POST /v1/archive/csfloat`. Match the history `bucket` date with the archive `date`.

Use `close_ask` as the final observed listing floor for the day and keep `ask_volume` beside it. Compare that with archive `price` and `volume`. Label both values explicitly; a sale average above the floor does not imply an error because the sale set can contain premium items.

For per-phase comparisons, join the matching `version` inside each endpoint's `variants` object. Do not align a variant sale row with the parent listing series.

## Applicable endpoints

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `POST /v1/prices/history` | Daily CSFloat listing and bid OHLC | Scale, Enterprise |
| `POST /v1/archive/csfloat` | Daily completed-sale average and count | Scale, Enterprise |
| `GET /v1/prices/latest` | Current CSFloat listing and bid | All plans |

## Comparison limits

- The history `bucket` is a UTC boundary, while `open_time` and `close_time` show actual listing observations.
- A daily sale `price` averages all represented transactions. It cannot be reduced to an ordinary-float price from this aggregate.
- Missing days in either series should remain unpaired, not become zero or a carried-forward value.
- Bid history starts later than ask history. A comparison before July 18, 2026 can still use asks and sales without bids.

Read [CSFloat sales history](/resources/how-to-get-csfloat-sales-history) for archive semantics and [listing history](/resources/how-to-get-csfloat-price-history) for OHLC semantics.
