Skip to main content
GET/v1/pricing/:marketHashName/history/marketsPRO+

Per-Market Price History

Per-market historical price series for an item: the same time buckets as /v1/pricing/:marketHashName/history, but split into one series per marketplace instead of a single cross-market aggregate. Filter to specific venues with markets. Prices are integer USD cents.

The per-market companion to item price history: instead of one blended series, you get series[] with one entry per marketplace, each carrying its own history[] of buckets (avgPrice, bestBidCents / bestAskCents, spreadBps, and so on). Use it to compare how a single item trades across venues.

Pass a markets CSV (e.g. buff163,csfloat) to limit which venues come back; omit it for every covered market. from / to / interval / listingType / salesWindow behave exactly like the aggregate history endpoint.

Parameters

marketHashNamestringrequired
Path segment. URL-encoded market_hash_name.
marketsstringoptional
Query. CSV of market ids to return, e.g. buff163,csfloat. Omit for every covered market.
fromstringoptional
Query. ISO 8601 start. Default: now − 30d.
tostringoptional
Query. ISO 8601 end. Default: now.
listingTypestringoptional
Query. SELL_OFFER | BUY_ORDER | SALE_HISTORY. Default: SELL_OFFER.
salesWindowstringoptional
Query. 24h | 7d | 30d | 90d. Only when listingType=SALE_HISTORY.
intervalstringoptional
Query. Pin the bucket granularity: MINUTE_5 | MINUTE_15 | HOUR_1 | HOUR_6 | DAY_1. Overrides the granularity otherwise derived from from/to. An unknown value returns 400.

Response fields

PriceHistoryByMarketResponsePer-market time-bucketed price series for an item.
canonicalItemIdstring
Canonical item id.
namestring
Market hash name.
listingTypestring
SELL_OFFER | BUY_ORDER | SALE_HISTORY.
salesWindowstringnullable
Only set when listingType=SALE_HISTORY.
One entry per market.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "canonicalItemId": "cmlofczf90qj401vsd80dskd1",
  "name": "AK-47 | Redline (Field-Tested)",
  "listingType": "SELL_OFFER",
  "salesWindow": null,
  "series": [
    {
      "market": "buff163",
      "history": [
        {
          "timestamp": "2026-06-22T00:00:00.000Z",
          "avgPrice": 3820,
          "medianPrice": 3531,
          "minPrice": 3028,
          "maxPrice": 6185,
          "listingCount": 9374,
          "totalQuantity": null,
          "volume": null,
          "bestBidCents": 5978,
          "bestAskCents": 3028,
          "spreadBps": -6551
        },
        {
          "timestamp": "2026-06-23T00:00:00.000Z",
          "avgPrice": 3884,
          "medianPrice": 3542,
          "minPrice": 3063,
          "maxPrice": 6249,
          "listingCount": 9138,
          "totalQuantity": null,
          "volume": null,
          "bestBidCents": 6022,
          "bestAskCents": 3063,
          "spreadBps": -6514
        }
      ]
    },
    {
      "market": "csfloat",
      "history": [
        {
          "timestamp": "2026-06-22T00:00:00.000Z",
          "avgPrice": 2973,
          "medianPrice": 2972,
          "minPrice": 2906,
          "maxPrice": 3000,
          "listingCount": 3425,
          "totalQuantity": null,
          "volume": null,
          "bestBidCents": 2940,
          "bestAskCents": 2906,
          "spreadBps": -116
        },
        {
          "timestamp": "2026-06-23T00:00:00.000Z",
          "avgPrice": 2976,
          "medianPrice": 2964,
          "minPrice": 2964,
          "maxPrice": 3000,
          "listingCount": 3421,
          "totalQuantity": null,
          "volume": null,
          "bestBidCents": null,
          "bestAskCents": 2964,
          "spreadBps": null
        }
      ]
    }
  ]
}

Errors

400Unknown interval / listingType, or an invalid date range.
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/history/markets" \
  -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.