Skip to main content
GET/v1/markets/healthPUBLIC · NO KEY

/v1/markets/health

Public (no key) health for every integrated marketplace: status (live | warn | stale), last event time, listings count, and a 48-bucket health-bar series (48 × 30-minute buckets, ~24h; 2 = live, 1 = degraded, 0 = down). The id is the market join key.

The one fully public pricing-data endpoint, no key required. It returns every integrated marketplace with a status (live / warn / stale), a listingsCount, and a healthBars series for a quick sparkline of recent ingest health: 48 buckets of 30 minutes each (~24h), most recent last, where 2 = live, 1 = degraded, 0 = down.

id is the join key: pass it in the markets CSV on the other endpoints to scope a response to specific venues.

listingsCount counts only listings within the market's max age (1 hour; 6 hours for steamcommunity), the same cutoff after which pricing and the NBBO drop a quote. A market whose crawl has paused reports 0 rather than its last known inventory. Rust rows on /v2/markets/health?game=rust keep counting observed inventory over 48 hours.

Parameters

No query parameters.

Response fields

MarketHealth[]Array, one entry per integrated marketplace. No key required.
idstring
Market id. The join key for other endpoints.
statusstring
live | warn | stale.
lastEventAtstring (date-time)nullable
Last ingested event; null if none yet.
listingsCountinteger
Listings on this market fetched within its max age (1 hour; 6 hours for steamcommunity). 0 when no listing is that fresh, for example while the market's crawl is paused.
freshnessCoveragePctintegernullable
Share (0 to 100) of this market's served listing rows refreshed within its expected refresh window. Null when no rows are served. Complements status, which only tracks the ingest heartbeat.
healthBarsinteger[]
48 buckets of 30 minutes each (~24h), most recent last. Legend: 2 = live, 1 = degraded, 0 = down.

Errors

429Public rate limit exceeded (per browser-account or IP identity).
5xxHealth snapshot temporarily unavailable. Retry with backoff.

Guides using this endpoint

curl "https://api.skinpricer.com/v1/markets/health"
// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";

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

const rows = await client.markets.health(); // keyless route
for (const m of rows) console.log(m.id, m.status);
import requests

res = requests.get(
    "https://api.skinpricer.com/v1/markets/health",
    timeout=10,
)
res.raise_for_status()
print(res.json())
Response 200
[
  {
    "id": "skinport",
    "status": "live",
    "lastEventAt": "2026-06-23T22:01:03.281Z",
    "listingsCount": 3522487,
    "freshnessCoveragePct": 100,
    "healthBars": [
      2,
      2,
      2,
      2,
      2,
      2,
      2,
      2
    ]
  }
]

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.