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

/v1/pricing/:marketHashName/listings

Individual live listings for an item (price, float value, paint seed, stickers, StatTrak) with float-coverage metadata. Up to 2000 rows via limit, optionally filtered to specific markets via market. Source for the float-vs-price scatter.

Where the other endpoints aggregate, this returns the individual listings, each with its price, floatValue, paintSeed, stickers, and StatTrak flag. It's the source for float-vs-price analysis and condition-specific pricing.

Float isn't universal. Only markets that publish per-listing wear expose floatValue / paintSeed; others return null. floatCoverage tells you exactly which markets did and didn't (marketsWithFloat / marketsWithoutFloat), and floatSummary places the observed float against the item's possible wear range.

The sample covers listings fetched in the last 24 hours (48 hours for aggregate fallback rows, whose listingId is null) and is ordered float-first: listings with a known float come first, lowest float first, then by price, so the head of the list is the lowest-wear stock rather than the cheapest. floatCoverage (including marketsWithFloat) and floatSummary describe this returned sample only, so a smaller limit can change them. For the cheapest ask, use pricing or the NBBO.

Each listing carries isStale (fetched more than 30 minutes ago), and so does floatSummary.observedSource. totalListings counts only listings within their market's max age (1 hour; 6 hours for steamcommunity), the cutoff after which pricing and the NBBO drop a quote, so it can be lower than sampledListings, even 0, while the sample still holds older rows. Filter on isStale when you only want current listings. See Freshness.

Use limit (1 to 2000, default 500) to control sample size and the market CSV to scope to specific venues.

Game-scoped variant: GET /v2/pricing/:marketHashName/listings serves both games with a required game=cs2|rust parameter. Rust listings carry no wear data - floatValue, paintSeed, paintIndex, and stickers are always null/empty there. See Games: CS2 & Rust.

Parameters

marketHashNamestringrequired
Path segment. URL-encoded market_hash_name.
limitintegeroptional
Query. Max samples, 1 to 2000. Default: 500.
marketstringoptional
Query. CSV market filter (markets is an accepted alias).

Response fields

ListingsResponseIndividual live listings with float-coverage metadata.
marketHashNamestring
Market hash name.
canonicalItemIdstring
Canonical item id.
totalListingsinteger
Listings across markets fetched within their market's max age (1 hour; 6 hours for steamcommunity). Can be lower than sampledListings, even 0, while stale rows are still returned.
sampledListingsinteger
Listings returned (≤ limit).
floatCoverageFloatCoverage
Which markets expose float on this item.
floatSummaryFloatSummarynullable
Observed-float summary; null when no float seen.
listingsListing[]
The sampled listings.
calculatedAtstring (date-time)
When sampled.

Nested and shared shapes link to the API Objects reference.

Errors

404Item not found.
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.

Guides using this endpoint

export SKINPRICER_API_KEY="sp_live_•••"

curl -G "https://pricing.skinpricer.com/v1/pricing/AK-47%20%7C%20Redline%20(Field-Tested)/listings" \
  --data-urlencode "limit=20" \
  -H "Authorization: ApiKey $SKINPRICER_API_KEY"
// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";

const client = new SkinpricerClient({
  apiKey: process.env.SKINPRICER_API_KEY!,
  authScheme: "ApiKey",
});

const { listings } = await client.pricing.listings("AK-47 | Redline (Field-Tested)", { limit: 20 });
console.log(listings.length, "listing samples");
import os
import requests

res = requests.get(
    "https://pricing.skinpricer.com/v1/pricing/AK-47%20%7C%20Redline%20(Field-Tested)/listings",
    params={"limit": "20"},
    headers={"Authorization": f"ApiKey {os.environ['SKINPRICER_API_KEY']}"},
    timeout=10,
)
res.raise_for_status()
print(res.json())
Response 200
{
  "marketHashName": "AK-47 | Redline (Field-Tested)",
  "canonicalItemId": "cmlofczf90qj401vsd80dskd1",
  "totalListings": 22022,
  "sampledListings": 2,
  "floatCoverage": {
    "coverage": "partial",
    "sampledListings": 2,
    "listingsWithFloat": 2,
    "marketsWithFloat": [
      "avanmarket"
    ],
    "marketsWithoutFloat": [
      "buff163",
      "csfloat",
      "cstrade",
      "dmarket",
      "itrade",
      "lis-skins",
      "lootfarm",
      "mannco-store",
      "marketcsgo",
      "skindeck",
      "skinport",
      "steamcommunity",
      "swapgg",
      "tradeit-store",
      "tradeit-trade",
      "waxpeer",
      "whitemarket"
    ]
  },
  "floatSummary": {
    "observed": 0.15027404,
    "itemMin": 0.15,
    "itemMax": 0.38,
    "observedSource": {
      "market": "avanmarket",
      "price": 9404,
      "fetchedAt": "2026-09-25T11:25:44.891Z",
      "isStale": false
    }
  },
  "listings": [
    {
      "listingId": "listing:5698b064-d92a-4b7f-8c5f-4aa014d1400e",
      "market": "avanmarket",
      "price": 9484,
      "currency": "USD",
      "originalPriceCents": 9484,
      "originalCurrency": "USD",
      "floatValue": 0.15005141,
      "paintSeed": null,
      "paintIndex": null,
      "inspectLink": null,
      "stickers": [],
      "isStatTrak": false,
      "fetchedAt": "2026-09-25T11:25:44.891Z",
      "isStale": false
    },
    {
      "listingId": "listing:e40c11f4-73f7-4d15-89e4-765e3ee14253",
      "market": "avanmarket",
      "price": 9404,
      "currency": "USD",
      "originalPriceCents": 9404,
      "originalCurrency": "USD",
      "floatValue": 0.15027404,
      "paintSeed": null,
      "paintIndex": null,
      "inspectLink": null,
      "stickers": [
        {
          "name": "Sticker | device | Cologne 2016",
          "slot": 0
        },
        {
          "name": "Sticker | Astralis (Holo) | Cologne 2016",
          "slot": 1
        },
        {
          "name": "Sticker | device (Foil) | Cologne 2016",
          "slot": 2
        }
      ],
      "isStatTrak": false,
      "fetchedAt": "2026-09-25T11:25:44.891Z",
      "isStale": false
    }
  ],
  "calculatedAt": "2026-09-25T11:33:18.805Z"
}
Response headers
X-RateLimit-Limit: <per-minute, set by your plan>
X-RateLimit-Remaining: <remaining this minute>
X-RateLimit-Reset: <seconds to reset>
X-RateLimit-Remaining-Month: <left this month, capped plans>
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.