How to Build a Liquid CS2 Skin Screener

Updated

API reference: GET /v1/schema · GET /v1/liquidity/items · GET /v1/prices/latest

A liquid CS2 skin screener can join GET /v1/schema, GET /v1/liquidity/items, and GET /v1/prices/latest by exact market_hash_name.

The three datasets answer separate questions. The schema defines what the item is, liquidity estimates how readily it sells at a competitive price, and current prices determine whether it fits an acquisition or exit threshold.

Data requirements for the screen#

Filter Endpoint and fields
Item type Schema category, is_tradable, rarity, wear, StatTrak, Souvenir
Liquidity liquidity and estimated_sale_time
Budget Current per-source ask values in USD
Exit reference Current bid where the source supports it
Special variants Independent variant metadata, liquidity, and prices

Liquidity is recomputed daily from real BUFF, Steam, and CSFloat sale volume and traded value over rolling 30- and 90-day windows. It is an absolute, deterministic bucket from unknown through extremely_liquid, not a percentile rank.

estimated_sale_time is an 80th-percentile estimate for a competitively priced listing. Supported Doppler, Gamma Doppler, and Case Hardened variants are scored separately from their base items.

Screening sequence#

Filter the schema first to the categories and attributes the product permits. Join those names to the daily liquidity snapshot and apply a minimum bucket or maximum estimated sale time. Then read the current all-item price snapshot and require at least one fresh, positive quote inside the chosen price range.

Define whether the price filter uses the lowest cash-market ask, one fixed source, or a current bid. Keep Steam wallet pricing separate from cash-market budget limits, and retain the winning source and collected_at beside each result.

Applicable endpoints#

Endpoint Returns Plans
GET /v1/schema Catalog metadata and exact names All plans
GET /v1/liquidity/items Daily liquidity and estimated sale time Scale, Enterprise
GET /v1/prices/latest Current all-source price snapshot All plans

What can invalidate a result#

  • A sale-time estimate assumes competitive pricing. A listing far above comparable asks can take longer than its bucket suggests.
  • unknown means recent evidence was insufficient. It should not pass a maximum-time filter unless the application defines a separate fallback.
  • Current ask is a floor and can represent one unusual float or sticker craft. The schema and price endpoints do not describe that exact listed asset.
  • The liquidity snapshot updates daily while current prices refresh more often. Store each response timestamp so the screen can be reproduced.

See how to find the most liquid skins for a liquidity-first variant of this screen.