Skip to main content
GET/v1/schemaDEVELOPER+

/v1/schema

The full item catalog as one versioned, cache-friendly snapshot: every tracked item keyed by market_hash_name, with collections, containers, wear/StatTrak/Souvenir structure, float ranges, Doppler phases, images, and each marketplace's own catalog ids. Items are sparse (fields that don't apply are omitted, never null) and reference shared rarities / collections / containers registries. Gzip; send If-None-Match with your last ETag for a 304.

The mirror pattern: pull /v1/schema once, store the items and the returned schemaVersion, then poll changes for deltas. The snapshot is precomputed and its ETag only rolls when content actually changes, so an If-None-Match probe is nearly free, and newly released items land automatically within hours of a game update.

Records are sparse and normalized. Fields that don't apply are omitted (a sticker has no floatRange), and rarity/collection/container details live once in the top-level registries with items holding references. ids and aliases map every item onto each covered marketplace's own catalog, which is what you need to reconcile listings across venues, and id is the same canonical id the pricing endpoints speak.

Game metadata blends our canonical catalog with the community-maintained CSGO API dataset (MIT licensed); images are served from the upstream CDNs.

Parameters

If-None-Matchstringoptional
Header. The last ETag you hold; returns 304 with no body when the catalog is unchanged.

Response fields

SchemaSnapshotThe full catalog snapshot. Served pre-serialized with an ETag; identical bytes until the catalog actually changes.
schemaVersioninteger
Monotonic version (ms epoch) of the last content change. Store it and pass it to changes?since=.
generatedAtstring (date-time)
When the snapshot was materialized.
itemCountinteger
Items in the snapshot.
All rarity tiers, referenced by item-level rarity keys.
collectionsobject
Map of collection name to SchemaCollection.
containersobject
Map of container name to SchemaContainer.
itemsobject
Map of market_hash_name to SchemaItem.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "schemaVersion": 1783069455007,
  "generatedAt": "2026-07-03T09:04:15.000Z",
  "itemCount": 39571,
  "rarities": [
    { "key": "classified", "name": "Classified", "tier": 5, "color": "#d32ce6" }
  ],
  "collections": {
    "The Phoenix Collection": {
      "name": "The Phoenix Collection",
      "image": "https://raw.githubusercontent.com/.../set_community_2_png.png"
    }
  },
  "containers": {
    "Operation Phoenix Weapon Case": {
      "name": "Operation Phoenix Weapon Case",
      "type": "case",
      "releaseDate": "2014-02-18T23:00:00.000Z",
      "image": "https://community.akamai.steamstatic.com/economy/image/..."
    }
  },
  "items": {
    "AK-47 | Redline (Field-Tested)": {
      "id": "cmlofczf90qj401vsd80dskd1",
      "marketHashName": "AK-47 | Redline (Field-Tested)",
      "slug": "ak-47-redline-field-tested",
      "category": "skin",
      "baseName": "AK-47 | Redline",
      "weapon": "AK-47",
      "finish": "Redline",
      "paintIndex": "282",
      "rarity": "classified",
      "wear": "Field-Tested",
      "wears": ["Minimal Wear", "Field-Tested", "Well-Worn", "Battle-Scarred"],
      "stattrak": false,
      "souvenir": false,
      "hasStattrak": true,
      "hasSouvenir": true,
      "floatRange": { "min": 0.1, "max": 0.7 },
      "collections": ["The Phoenix Collection"],
      "containers": ["Operation Phoenix Weapon Case"],
      "image": "https://community.fastly.steamstatic.com/economy/image/...",
      "ids": { "buff163": "33960", "itrade": "Z2aASr0", "csfloat": "AK-47 | Redline (Field-Tested)" }
    }
  }
}

Errors

503Snapshot not yet materialized (first minutes after a fresh deploy); retry shortly.
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.

Companion endpoints

GET/v1/schema/items/:idOrName

One item's schema record by canonical item id or URL-encoded market_hash_name, plus only the registry entries it references.

Full reference →
GET/v1/schema/changes

Incremental sync: only the items added or changed after your stored schemaVersion, keyset-paginated. Poll this instead of re-downloading the snapshot.

Full reference →
curl "https://pricing.skinpricer.com/v1/schema" \
  -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.