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/schema to resolve every valid wear row for a finish, then attach current asks from GET /v1/prices/latest in 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_volume is total listings in the bucket, not quantity at the lowest ask.

Use schema float ranges to define the x-axis before applying prices.