Skip to main content
GET/v1/liquidity/itemsENTERPRISE

Bulk Liquidity Map

Enterprise: the whole-catalog liquidity map, market_hash_name to badge, lowercase label, estimated sale time, score, and best market, rematerialized every 10 minutes. Send If-None-Match with the last version for a 304; 503 until the first snapshot is built. Each item is a LiquidityBulkItem.

Enterprise: the whole-catalog liquidity map, rebuilt every 10 minutes. items is keyed by market_hash_name; each value is a LiquidityBulkItem. Send If-None-Match: "<version>" to get a 304 when nothing changed, and expect a 503 (with Retry-After) until the first snapshot materializes. Poll the cheap manifest first to decide whether to refetch.

Parameters

If-None-Matchstringoptional
Header. The last version (ETag) you hold; returns 304 when the snapshot is unchanged.

Response fields

LiquidityBulkResponseWhole-catalog liquidity map. Enterprise.
versionstring
Opaque snapshot version of the form <ms>-<pid> (materialize-time millis + worker pid). Compare for equality only. Also the ETag; don't parse it.
calculatedAtstring (date-time)
When the snapshot was materialized.
cadencestring
Recompute cadence (ISO-8601 duration), e.g. PT10M.
marketsstring[]
Markets covered.
itemCountinteger
Items in the snapshot.
itemsobject
Map of market_hash_name to LiquidityBulkItem.

Nested and shared shapes link to the API Objects reference.

Errors

503Snapshot not yet materialized; retry after Retry-After.
401Missing Authorization header, unsupported scheme, or a key that is unknown, inactive, expired, or revoked.
403Valid key, but the subscription is inactive/expired or the plan does not include this endpoint.
429Rate limit exceeded; see Retry-After + X-RateLimit-* headers. Pooled per account across all keys.
5xxUpstream snapshot unavailable or a server-side issue. Retry with backoff.

Guides using this endpoint

export SKINPRICER_API_KEY="sp_live_•••"

curl "https://pricing.skinpricer.com/v1/liquidity/items" \
  -H "Authorization: ApiKey $SKINPRICER_API_KEY"
// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";

const client = new SkinpricerClient({
  apiKey: process.env.SKINPRICER_API_KEY!,
  authScheme: "ApiKey",
});

const snapshot = await client.liquidity.bulk();
console.log(Object.keys(snapshot.items).length, "items, version", snapshot.version);
import os
import requests

res = requests.get(
    "https://pricing.skinpricer.com/v1/liquidity/items",
    headers={"Authorization": f"ApiKey {os.environ['SKINPRICER_API_KEY']}"},
    timeout=10,
)
res.raise_for_status()
print(res.json())

Authenticated endpoint: call it with your API key from your own client (see the code sample).

Response 200
{
  "version": "1782294002802-1",
  "calculatedAt": "2026-06-24T09:40:02.802Z",
  "cadence": "PT10M",
  "markets": [
    "skinport",
    "marketcsgo",
    "dmarket",
    "csfloat",
    "steamcommunity"
  ],
  "itemCount": 35349,
  "items": {
    "Glock-18 | Water Elemental (Factory New)": {
      "market_hash_name": "Glock-18 | Water Elemental (Factory New)",
      "liquidity": "illiquid",
      "estimated_sale_time": "4 - 5 days",
      "liquidityBadge": "ILLIQUID",
      "confidence": "HIGH",
      "score": 33,
      "bestMarketToList": "skinport",
      "variants": {}
    }
  }
}
Response headers
X-RateLimit-Limit: <per-minute, set by your plan>
X-RateLimit-Remaining: <remaining this minute>
X-RateLimit-Reset: <seconds to reset>
X-RateLimit-Remaining-Month: <left this month, capped plans>
X-Request-ID: req_xxxxxxxxxxxxxxxx

Usage & licensing

Access to the API and its data is governed by our Terms of Service. You may not resell or redistribute the data, use it to build a competing service, or exceed your plan’s rate limits, and you must attribute SkinPricer as the source wherever the Terms permit you to display it. Abuse may be throttled or suspended.