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

/v1/recommendations/:marketHashName

A suggested list/sell price for an item with the strategy, confidence, liquidity score, and the supporting NBBO context. Response is snake_case. Prices are integer USD cents.

Given an item, this returns a single suggested_price to list or sell at, plus the reasoning behind it: the strategy used, a confidence and a liquidity_score (both 0–1), and the NBBO context it was derived from.

Watch unstable_reasons: when it's non-empty the inputs were thin or volatile and the suggestion is lower-confidence, so surface that to your users rather than treating every number as equally solid. Note this response is snake_case (most pricing endpoints are camelCase).

Parameters

marketHashNamestringrequired
Path segment. URL-encoded market_hash_name.
marketsstringoptional
Query. CSV (repeatable) market filter, e.g. csfloat,buff163.

Response fields

RecommendationResponseSuggested list/sell price with supporting context. snake_case.
canonical_item_idstring
Canonical item id.
market_hash_namestring
Market hash name.
suggested_priceinteger
Recommended price in USD cents.
strategystring
How it was derived, e.g. midpoint.
confidencenumber
0–1 confidence in the suggestion.
liquidity_scorenumber
0–1 liquidity score for the item.
unstable_reasonsstring[]
Flags when inputs were thin/volatile (empty when stable).
best_askQuoteSnakenullable
Cross-market best ask.
best_bidQuoteSnakenullable
Cross-market best bid.
spread_bpsintegernullable
Spread in basis points.
market_countinteger
Markets contributing.
fresh_market_countinteger
Of those, still fresh.
listing_countinteger
Listings behind the read.
buy_order_countinteger
Distinct buy-order levels.
total_bid_quantityinteger
Summed buy-order quantity.
calculated_atstring (date-time)
When it was computed.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "canonical_item_id": "cmlofca920lka01yozajhixt3",
  "market_hash_name": "Glock-18 | Water Elemental (Factory New)",
  "suggested_price": 6470,
  "strategy": "midpoint",
  "confidence": 0.96,
  "liquidity_score": 0.98,
  "unstable_reasons": [],
  "best_ask": {
    "market": "csfloat",
    "price": 6500,
    "updated_at": "2026-06-23T21:52:27.427Z",
    "is_stale": false
  },
  "best_bid": {
    "market": "buff163",
    "price": 6440,
    "updated_at": "2026-06-23T21:59:48.717Z",
    "is_stale": false
  },
  "spread_bps": 93,
  "market_count": 10,
  "fresh_market_count": 9,
  "listing_count": 710,
  "buy_order_count": 88,
  "total_bid_quantity": 128,
  "calculated_at": "2026-06-23T22:07:15.477Z"
}

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/recommendations/:marketHashName" \
  -H "Authorization: ApiKey sk_live_•••••••••••"

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

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.