Skip to main content
GET/v1/pricing/:marketHashNameDEVELOPER+

/v1/pricing/:marketHashName

Full cross-market pricing snapshot for a single CS2 item: per-market quotes, an aggregate (min/max/avg/median/stdDev), best bid/ask, and the NBBO spread. The path segment is the URL-encoded market_hash_name. All prices are integer USD cents.

This is the widest single-item read. You get every market's representative ask in markets[], every standing buy order in buyOrders[], an aggregate (min / max / avg / median / stdDev) over the asks, and the same bestAsk / bestBid / spreadBps NBBO you'd get from /v1/nbbo.

Each MarketQuote carries both fetchedAt (when the market reported it) and ingestedAt (when we collected it) plus isStale. Use those to discount old quotes rather than dropping them outright. quoteSize is how many listings back the quote.

Buy orders are sparse: only some venues expose a bid side, so buyOrders[] can be short or empty even when markets[] is long. Narrow the response to specific venues with the markets CSV.

Parameters

marketHashNamestringrequired
Path segment. URL-encoded market_hash_name, e.g. AK-47%20%7C%20Redline%20(Field-Tested).
marketsstringoptional
Query. CSV of market ids to restrict the response, e.g. csfloat,buff163.

Response fields

PricingResponseFull cross-market snapshot: per-market quotes + an aggregate.
canonicalItemIdstring
SkinPricer's canonical item id.
namestring
The item's market hash name.
aggregateAggregate
Summary statistics across all contributing markets.
One entry per market with a live ask.
buyOrdersBuyOrder[]
Standing buy orders, by market.
bestAskQuotenullable
Cross-market best ask.
bestBidQuotenullable
Cross-market best bid.
spreadBpsintegernullable
Best-ask − best-bid in basis points.
marketCountinteger
Markets contributing a quote.
freshMarketCountinteger
Of those, still fresh.
calculatedAtstring (date-time)
When the snapshot was computed.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "canonicalItemId": "cmlofca920lka01yozajhixt3",
  "name": "Glock-18 | Water Elemental (Factory New)",
  "aggregate": {
    "minPrice": 6500,
    "maxPrice": 8012,
    "avgPrice": 7102,
    "medianPrice": 7119,
    "stdDev": 439.12,
    "marketCount": 10,
    "freshMarketCount": 9,
    "listingCount": 710,
    "updatedAt": "2026-06-23T21:59:48.717Z"
  },
  "markets": [
    {
      "market": "csfloat",
      "price": 6500,
      "currency": "USD",
      "fetchedAt": "2026-06-23T21:52:27.427Z",
      "ingestedAt": "2026-06-23T21:55:56.923Z",
      "quoteSize": 132,
      "ingestLatencyMs": 209496,
      "isStale": false
    }
  ],
  "buyOrders": [
    {
      "market": "buff163",
      "price": 6440,
      "totalQuantity": 47
    }
  ],
  "bestAsk": {
    "market": "csfloat",
    "price": 6500,
    "updatedAt": "2026-06-23T21:52:27.427Z",
    "isStale": false
  },
  "bestBid": {
    "market": "buff163",
    "price": 6440,
    "updatedAt": "2026-06-23T21:59:48.717Z",
    "isStale": false
  },
  "spreadBps": 93,
  "marketCount": 10,
  "freshMarketCount": 9,
  "calculatedAt": "2026-06-23T22:07:13.752Z"
}

Errors

404Item not found.
401 / 403Missing, invalid, or insufficient-plan API key.
429Rate limit exceeded; see Retry-After + X-RateLimit-* headers.
5xxUpstream snapshot unavailable or a server-side issue. Retry with backoff.
curl "https://pricing.skinpricer.com/v1/pricing/:marketHashName" \
  -H "Authorization: ApiKey sk_live_•••••••••••"
Response headers
X-RateLimit-Limit: <per-minute, set by your plan>
X-RateLimit-Remaining: <remaining this minute>
X-RateLimit-Reset: <seconds to reset>
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.