Skip to main content
GET/v1/itemsDEVELOPER+

Item Search

List and search the tracked catalog with live pricing. Each result is the same cross-market snapshot as /v1/pricing/:marketHashName, paginated. Filter by search and markets. Prices are integer USD cents.

Discovery + pricing in one call: page through the tracked catalog, optionally filtered by search (a name substring) and markets. Each data entry is the same cross-market snapshot as /v1/pricing/:marketHashName, so you can render a list without a second request per item.

Walk pages with pagination (currentPage / lastPage / nextPage). For a one-shot dump of the whole catalog, the /v1/items/all companion returns every item as a bare array (heavier).

Parameters

searchstringoptional
Query. Case-insensitive substring match on the item name, e.g. Redline.
marketsstringoptional
Query. CSV of market ids to restrict the per-item pricing.
pageintegeroptional
Query. 1-based page number. Default 1.
perPageintegeroptional
Query. Items per page, 1–100. Default 10.

Response fields

ItemSearchResponsePaginated catalog search with per-item pricing.
One cross-market snapshot per item (same shape as the pricing endpoint).
paginationPaginationMeta
Page metadata.

Nested and shared shapes link to the API Objects reference.

Response 200

{
  "data": [
    {
      "canonicalItemId": "cmlofca920lka01yozajhixt3",
      "name": "Glock-18 | Water Elemental (Factory New)",
      "aggregate": {
        "minPrice": 6500,
        "maxPrice": 8012,
        "avgPrice": 7102,
        "medianPrice": 7119,
        "stdDev": 439.12,
        "marketCount": 10,
        "freshMarketCount": 9,
        "listingCount": 710,
        "updatedAt": "2026-06-23T21:59:48.717Z"
      },
      "markets": [
        {
          "market": "csfloat",
          "price": 6500,
          "currency": "USD",
          "fetchedAt": "2026-06-23T21:52:27.427Z",
          "ingestedAt": "2026-06-23T21:55:56.000Z",
          "quoteSize": 132,
          "ingestLatencyMs": 208573,
          "isStale": false
        }
      ],
      "buyOrders": [
        {
          "market": "buff163",
          "price": 6543,
          "totalQuantity": 45
        }
      ],
      "bestAsk": {
        "market": "csfloat",
        "price": 6500,
        "updatedAt": "2026-06-23T21:52:27.427Z",
        "isStale": false
      },
      "bestBid": {
        "market": "buff163",
        "price": 6543,
        "updatedAt": "2026-06-23T21:59:48.717Z",
        "isStale": false
      },
      "spreadBps": -66,
      "marketCount": 10,
      "freshMarketCount": 9,
      "calculatedAt": "2026-06-23T22:07:15.808Z"
    }
  ],
  "pagination": {
    "perPage": 1,
    "currentPage": 1,
    "from": 1,
    "to": 1,
    "total": 15,
    "lastPage": 15,
    "prevPage": null,
    "nextPage": 2
  }
}

Errors

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.

Companion endpoints

GET/v1/items/all

The full catalog in one unpaginated call: a bare JSON array of every tracked item with its latest per-market prices and aggregates (capped at 50,000). Heavy; prefer the paginated endpoint for interactive use.

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