Skip to main content
GET/v1/pricing/:marketHashName/historyPRO+

/v1/pricing/:marketHashName/history

Time-bucketed historical price series for an item (avg/median/min/max plus best bid/ask in cents). Filter by from/to (ISO), listingType (SELL_OFFER | BUY_ORDER | SALE_HISTORY), and salesWindow. Granularity is chosen automatically from the range unless you pin it with interval. For one series per market instead of the cross-market aggregate, see history by market.

Returns a series of time buckets, oldest to newest. Each bucket summarizes the prices seen in that window (avg / median / min / max) plus the best bid, best ask, and spread at the time: the shape behind a price chart.

listingType picks what you're charting: SELL_OFFER (asks, the default), BUY_ORDER (bids), or SALE_HISTORY (completed sales, paired with salesWindow). Bucket granularity is chosen automatically from your from/to range unless you pin it with interval.

volume and totalQuantity are null for now, because trade-volume ingest isn't live end-to-end yet, so don't chart them as zero.

Parameters

marketHashNamestringrequired
Path segment. URL-encoded market_hash_name.
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

HistoryResponseTime-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 row per time bucket, oldest → newest.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "canonicalItemId": "cmlofca920lka01yozajhixt3",
  "name": "Glock-18 | Water Elemental (Factory New)",
  "listingType": "SELL_OFFER",
  "salesWindow": null,
  "history": [
    {
      "timestamp": "2026-05-25T00:00:00.000Z",
      "avgPrice": 4923,
      "medianPrice": 4222,
      "minPrice": 3522,
      "maxPrice": 8805,
      "listingCount": 1442,
      "totalQuantity": null,
      "volume": null,
      "bestBidCents": null,
      "bestAskCents": 3522,
      "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" \
  -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.