Liquidity & Time-to-Sell
Liquidity and expected time-to-sell for an item, from cross-market order-book depth and sales velocity. Returns a liquidity badge, median/p90 time-to-sell, the best market to list on, and a per-market breakdown. Prices are integer USD cents; times are in hours.
Answers how fast an item will sell and where. liquidityBadge (a 7-value scale from EXTREMELY_LIQUID to UNTRADED) plus medianTimeToSellHours / p90TimeToSellHours come from cross-market order-book depth and sales velocity; bestMarketToList is where it clears fastest. Pass askPrice to estimate against a hypothetical list price.
The marketWide* fields are a whole-market saturation view (time for ALL supply to clear at the aggregate sale rate), not the per-listing time-to-sell. metrics[] breaks every covered market down; notes[] flags stale inputs. For a slim badge-only payload use the summary companion; score many items at once with the batch companion.
Parameters
skinport | marketcsgo | dmarket | csdeals | csfloat.Response fields
EXTREMELY_LIQUID … UNTRADED (7-value scale).HIGH | MEDIUM | LOW | CRITICAL.full | partial | none market coverage.sales_data_stale:marketcsgo.Nested and shared shapes link to the API Objects reference.
Response 200
{
"canonicalItemId": "cmlofca920lka01yozajhixt3",
"marketHashName": "Glock-18 | Water Elemental (Factory New)",
"liquidityBadge": "VERY_ILLIQUID",
"confidence": "LOW",
"coverage": "full",
"medianTimeToSellHours": 244.92,
"p90TimeToSellHours": 273.19,
"bestMarketToList": "csfloat",
"salesPerDay": 13,
"activeListings": 132,
"referenceAskUsdCents": 6500,
"marketWideSalesPerDay": 20,
"marketWideListings": 233,
"marketsWithSales": 3,
"marketsWithDepth": 3,
"marketWideMedianTimeToSellHours": 280.4,
"marketWideP90TimeToSellHours": 304.57,
"metrics": [
{
"market": "skinport",
"salesPerDay": 3,
"activeListings": 40,
"bestAskUsdCents": 6516,
"medianTimeToSellHours": 325.34,
"p90TimeToSellHours": 395.1,
"salesDataAgeMinutes": 7,
"listingsDataAgeMinutes": 15
}
],
"notes": [
"no_sales_data:csdeals",
"no_sales_data:dmarket",
"sales_data_stale:csfloat",
"sales_data_stale:marketcsgo",
"thin_sales:marketcsgo",
"thin_sales:skinport"
],
"calculatedAt": "2026-06-23T22:07:16.813Z"
}Errors
Companion endpoints
A slim badge-only view of the same model: liquidityBadge, a lowercase liquidity label, a human estimatedSaleTime, confidence, and a 0–100 score. Built for quick lookups.
Score up to 100 items in one call. POST a marketHashNames[] body; returns results[] (the full liquidity shape) plus a notFound[] of untracked names. Returns 200.
Enterprise: the whole-catalog liquidity map (market_hash_name to badge, label, score, best market), rematerialized every 10 minutes. Send If-None-Match with the last version for a 304; 503 until the first snapshot is built.
Enterprise: a cheap change-probe for the bulk map, returning just { version, calculatedAt, cadence, markets, itemCount }. Compare version against your cached copy before refetching the full map.
curl "https://pricing.skinpricer.com/v1/liquidity/:marketHashName" \
-H "Authorization: ApiKey sk_live_•••••••••••"Authenticated endpoint — call it with your API key from your own client (see the code sample).