Skip to main content
POST/v1/liquidity/batchPRO+

Batch Liquidity

Score up to 100 items in one call. POST a marketHashNames[] body; returns results[] (each the full liquidity shape) plus a notFound[] of untracked names. Returns 200.

Score up to 100 items in one POST. The body is { marketHashNames: [...] }; results[] holds the full liquidity shape per tracked item and notFound[] lists names that aren't tracked. Returns 200 (not 201).

Parameters

marketHashNamesstring[]required
Body. Market hash names to score, max 100. Required.
marketstringoptional
Body. Restrict every estimate to one market: skinport | marketcsgo | dmarket | csfloat | steamcommunity.

Response fields

LiquidityBatchResponseLiquidity scored for many items in one call.
One full liquidity result per tracked item.
notFoundstring[]
Requested names that are not tracked.
requestedinteger
Number of items requested.
calculatedAtstring (date-time)
When the batch was computed.

Errors

400No marketHashNames supplied, or more than 100.
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 -X POST "https://pricing.skinpricer.com/v1/liquidity/batch" \
  -H "Authorization: ApiKey $SKINPRICER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"marketHashNames":["AK-47 | Redline (Field-Tested)","AWP | Asiimov (Field-Tested)"]}'
// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";

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

const { results, notFound } = await client.liquidity.batch({
  marketHashNames: ["AK-47 | Redline (Field-Tested)", "AWP | Asiimov (Field-Tested)"],
});
console.log(results.length, "scored,", notFound.length, "not found");
import os
import requests

res = requests.post(
    "https://pricing.skinpricer.com/v1/liquidity/batch",
    json={"marketHashNames":["AK-47 | Redline (Field-Tested)","AWP | Asiimov (Field-Tested)"]},
    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
{
  "results": [
    {
      "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:dmarket",
        "sales_data_stale:csfloat",
        "sales_data_stale:marketcsgo",
        "thin_sales:marketcsgo",
        "thin_sales:skinport"
      ],
      "calculatedAt": "2026-06-23T22:07:17.768Z"
    }
  ],
  "notFound": [],
  "requested": 2,
  "calculatedAt": "2026-06-23T22:07:17.768Z"
}
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.