How to Get Float Ranges for Every CS2 Item
Updated
API reference: GET /v1/schema · GET /v1/market/buff/latest
GET /v1/schemareturnsfloat_range.minandfloat_range.maxfor every wear-carrying CS2 item row. These are item-specific physical bounds, not generic exterior limits or marketplace price buckets.
Two Field-Tested skins can have different possible float ranges because the finish itself can cap the wear. Reconstructing bounds from the exterior suffix can therefore accept values the item cannot have.
Float fields in the item catalog
Each wear-carrying schema record can include:
| Field | Meaning |
|---|---|
float_range.min, float_range.max |
Physical float bounds for the item |
wears |
Exterior names in which the finish exists |
wear |
The exterior of this exact market row |
market_hash_name |
Exact identifier shared with price endpoints |
variants |
Supported Doppler, Gamma Doppler, or Case Hardened children |
Fields that do not apply are omitted. Stickers, most containers, and other
non-wear items have no float_range.
Variant rows can share physical bounds with their base item while carrying a
different market_hash_name, image, paint index, and market price.
Read physical bounds or market ranges
For physical bounds, fetch the schema and select the item by exact
market_hash_name. Use the returned float_range directly. Do not derive it
from wear, base_name, or a generic exterior table.
For float-aware pricing, use GET /v1/market/buff/latest. BUFF can divide the
physical range into several float buckets, each with separate ask, average
ask, bid, and active volumes. These commercial ranges vary by item, exterior,
float cap, and variant.
Match an exact float to a BUFF bucket with an inclusive min and exclusive
max. The BUFF float-range history guide
explains why the exterior-wide floor can misprice a low-float input.
Applicable endpoints
| Endpoint | Returns | Plans |
|---|---|---|
GET /v1/schema |
Physical float bounds and available wears | All plans |
GET /v1/market/buff/latest |
Current BUFF float-range price buckets | All plans |
Keep the two range types separate
float_rangesays which floats are physically possible. It does not say which subranges receive a market premium.- BUFF bucket bounds are lower-inclusive and upper-exclusive. The schema's physical maximum should not be used as a substitute for returned BUFF bucket logic.
- An absent
float_rangeusually means the field does not apply to that item record. It should not be replaced with a default0to1range. - Use the schema generation ID or ETag when caching these bounds so newly published items and changed catalog records are picked up together.