Skip to main content
GET/v1/attribute-prices/historyPRO+

Attribute Price History

Time series of per-attribute bucket prices: the same float/fade/pattern/seed/variant bands as /v1/attribute-prices/latest, but each bucket carries a points[] series instead of a single ask/bid. Scope by marketHashName, canonicalItemId, OR by bucketId / bucketIds alone (any one is a valid scope). Window with from / to (default last 7d) and pin spacing with granularity. Prices are integer USD cents.

The history companion to attribute prices: same float/fade/pattern/seed/variant bands, but each bucket carries a points[] series instead of a single ask/bid. Every point is an OHLC-style summary of one granularity window (openAskCents, highAskCents, lowAskCents, closeAskCents, plus avgAskCents and closeBidCents).

Scope tightly: pass bucketId (or a bucketIds CSV) to pull just the bands you track rather than every band on the item. points[] is oldest-first; bid prices and bidOrderCount are null on markets that expose no buy side.

Parameters

marketHashNamestringoptional
Query. Exact market_hash_name to scope buckets. One of marketHashName / canonicalItemId / bucketId / bucketIds is required.
canonicalItemIdstringoptional
Query. Canonical item id to scope buckets. One of marketHashName / canonicalItemId / bucketId / bucketIds is required.
bucketIdstringoptional
Query. Restrict to a single bucket by its stable bucketId. Valid as a standalone scope (no item id needed).
bucketIdsstringoptional
Query. CSV of bucketIds. Valid as a standalone scope (no item id needed).
fromstringoptional
Query. ISO 8601 start. Default: now − 7d.
tostringoptional
Query. ISO 8601 end. Default: now.
granularitystringoptional
Query. Point spacing: 10m | 1h | 1d. Defaults from the date range. The window is capped at 10,000 buckets (400 if exceeded).
limitintegeroptional
Query. Max history points returned across all buckets, 1 to 10000. Default 5000.
marketsstringoptional
Query. CSV of market ids to restrict the response; unsupported requested markets are reported in sourceGaps.

Response fields

AttributeHistoryResponseTime series of per-attribute bucket prices.
bucketSchemaVersioninteger
Schema version for the bucket shape.
marketsstring[]
Markets covered in this response.
currencystring
Always USD.
granularitystring
Point spacing, e.g. 10m.
One entry per item × market.
sourceGapsstring[]
Requested markets with no coverage.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "bucketSchemaVersion": 1,
  "markets": ["buff163", "steamcommunity", "marketcsgo", "csfloat", "dmarket"],
  "currency": "USD",
  "granularity": "10m",
  "items": [
    {
      "canonicalItemId": "cmlofa7dh08ww01yo9lrpej3e",
      "marketHashName": "★ Karambit | Doppler (Factory New) - Phase 2",
      "market": "buff163",
      "buckets": [
        {
          "bucketId": "buff163:cmlofa7dh08ww01yo9lrpej3e:tag:446954:float:0-0.01",
          "bucketKey": "tag:446954:float:0-0.01",
          "bucketType": "attribute",
          "attributeType": "tag",
          "attributeTypes": ["tag", "float"],
          "dimensions": {
            "variant": "Phase2",
            "float": { "min": 0, "max": 0.01, "minInclusive": true, "maxInclusive": false },
            "fade": null,
            "pattern": null,
            "paintSeed": null
          },
          "points": [
            {
              "bucketStart": "2026-06-16T14:40:00.000Z",
              "openAskCents": 192390,
              "highAskCents": 192390,
              "lowAskCents": 192390,
              "closeAskCents": 192390,
              "avgAskCents": 192390,
              "closeBidCents": 179367,
              "askListingCount": 87,
              "bidOrderCount": null,
              "firstObservedAt": "2026-06-16T14:41:02.190Z",
              "lastObservedAt": "2026-06-16T14:41:04.342Z"
            },
            {
              "bucketStart": "2026-06-16T14:50:00.000Z",
              "openAskCents": 192390,
              "highAskCents": 192390,
              "lowAskCents": 192390,
              "closeAskCents": 192390,
              "avgAskCents": 192390,
              "closeBidCents": 179367,
              "askListingCount": 87,
              "bidOrderCount": null,
              "firstObservedAt": "2026-06-16T14:51:03.475Z",
              "lastObservedAt": "2026-06-16T14:51:12.491Z"
            },
            {
              "bucketStart": "2026-06-16T15:00:00.000Z",
              "openAskCents": 192410,
              "highAskCents": 192410,
              "lowAskCents": 192410,
              "closeAskCents": 192410,
              "avgAskCents": 192410,
              "closeBidCents": 179385,
              "askListingCount": 87,
              "bidOrderCount": null,
              "firstObservedAt": "2026-06-16T15:00:49.830Z",
              "lastObservedAt": "2026-06-16T15:00:49.830Z"
            }
          ]
        }
      ]
    }
  ],
  "sourceGaps": []
}

Errors

400No scope at all: none of marketHashName, canonicalItemId, bucketId, or bucketIds supplied. (Any one. Including bucketId / bucketIds alone. Is a valid scope.) Also returned for an invalid granularity, limit, or a window exceeding the 10,000-bucket cap.
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.
curl "https://pricing.skinpricer.com/v1/attribute-prices/history" \
  -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.