How to Chart a CS2 Skin Wear Price Curve
Updated
API reference: GET /v1/schema · GET /v1/prices/latest · GET /v1/market/buff/latest
Use
GET /v1/schemato resolve every valid wear row for a finish, then attach current asks fromGET /v1/prices/latestin a fixed exterior order.
A wear curve compares distinct market_hash_name rows. It should not manufacture an exterior that the finish does not have or mix normal, StatTrak, Souvenir, and variant identities.
Resolve the wear series
Schema skin records include base_name, finish, wears, current wear, native float_range, StatTrak and Souvenir flags, and exact names. Group records by the intended finish and attribute state, then order the existing rows as Factory New, Minimal Wear, Field-Tested, Well-Worn, and Battle-Scarred.
Missing exteriors should remain gaps. The schema's wears and per-row float_range describe the finish's actual availability; string sorting or name construction is unnecessary.
Attach prices to each exterior
Read the current all-item snapshot and choose a consistent price rule. A lowest cash-market ask curve can select a different marketplace at each exterior, while a fixed-source curve gives a cleaner within-market comparison. Store the chosen source and collected_at with every point.
For narrower float-aware curves, GET /v1/market/buff/latest splits an exterior into inclusive-minimum, exclusive-maximum float buckets. Each range has its own ask, avg_ask, bid, and active-order volumes. Plotting these bucket prices reveals premiums hidden by one exterior-wide floor.
Applicable endpoints
| Endpoint | Returns | Plans |
|---|---|---|
GET /v1/schema |
Valid wear rows and native float bounds | All plans |
GET /v1/prices/latest |
Current per-source asks and bids | All plans |
GET /v1/market/buff/latest |
Current BUFF prices by float range | All plans |
Curve caveats
- An exterior point is a listing floor for a float interval, not a price for every float in that wear.
- The lowest ask can represent a special float, sticker craft, or other individual asset attribute that these endpoints do not describe.
- A cross-market minimum changes both wear and source between points. Label the source or use one marketplace throughout.
- BUFF range
ask_volumeis total listings in the bucket, not quantity at the lowest ask.
Use schema float ranges to define the x-axis before applying prices.