Reference
Changelog
Every API, SDK, and market-data change, newest first. The API is versioned at /v1 (plus the game-scoped /v2 variants). Additive changes ship on the same version; we publish a deprecation timeline here before any breaking change.
Upcoming
Not shipped yetOn the roadmap- PREVIEWAPIWebSocket streaming for real-time NBBO and trade updates, replacing repeated polling.
- PREVIEW
- PREVIEWSDKGame-scoped SDK client:
client.forGame("rust")wraps the /v2 routes with the same types, retries, and throttling as the CS2 client. - PREVIEWAPIML-assisted fair-value estimates and listing anomaly flags.
v1.3.1
Developer guides, runnable docs, and two new venues- NEWDocsDeveloper guides at /resources: task-first guides for live prices, the cross-market best bid and ask, history, float and Doppler buckets, liquidity, and Rust, each with runnable curl, TypeScript, and Python and a Markdown twin.
- IMPROVEDDocsAPI reference code samples are copy-paste runnable: real example items and required parameters filled in, syntax highlighting, copy buttons on code and responses, and Python samples that read the response body directly.
- FIXEDDocsAPI reference accuracy pass: the cash-executable bid rule on pricing reads, liquidity venues and the insufficient-data badge, the full set of /v2 game routes, and refreshed response samples.
- NEWMarket dataYoupin (CS2) listings now feed cross-market pricing, NBBO, and depth.
- NEW
- NEW
- IMPROVEDMarket dataThe Rust catalog now includes items that are not currently listed anywhere, discovered from Steam item definitions, with their images mirrored.
- FIXEDAPIOrder-book depth only reports a crossed book when the crossing quotes come from supported cash venues.
- IMPROVEDDocsOne changelog for the product and the API, filterable by area and type, with links from each API change to its reference page.
v1.3.0
Rust joins the terminal and the API- NEWAPIRust in the developer API: game-scoped /v2 variants of pricing, listings, history, history by market, NBBO, depth, item search, liquidity, and item schema, each with a required
game=cs2orgame=rustparameter. Same response shapes, auth, and quotas as v1, included in every plan. Rust history buckets carrybestAskCentsandbestBidCentslike CS2. - NEWAPIMarket health per game:
GET /v2/markets/health?game=rust, keyless like the v1 route. - NEWMarket dataMannco.store prices for CS2 and Rust.
- IMPROVEDDocsAPI docs readability pass: stronger heading and inline-code contrast, and response samples moved into the code rail next to the request runner.
v1.2.2
Safer recommendations and Chinese API docs- IMPROVEDAPIRecommendations withhold a hard price when supporting quotes are thin or unstable, and no longer count non-cash venues as support.
- NEWDocsAPI reference in Simplified Chinese at /zh-cn/api-docs, covering the introduction, authentication, rate limits, every concept guide, and the pricing and market-data endpoints.
- NEWMarket dataWhiteMarket buy orders are now ingested, adding a bid side for WhiteMarket to NBBO and depth.
- FIXEDMarket dataSteam Community Market order books ingest again after Steam changed its response format.
- DEPRECATEDMarket dataBitSkins is retired from the feed. It no longer appears in market lists or quotes, so drop
bitskinsfrom anymarketsfilter.
v1.2.1
Cleaner top of book- IMPROVEDAPIThe
crossedflag now compares seller-net bids (after the selling venue's fees), so a bid that only looks crossed before fees is no longer flagged. Raw quotes are still served as-is. - FIXEDMarket dataBUFF float and fade bucket buy orders no longer leak into the base item's best bid.
- FIXEDAPI
/v1/aggregations/min-pricesreturns one representative row per market. - NEWAPIMarket health adds
freshnessCoveragePctper market: the share of that market's served prices refreshed within its expected cadence. - NEWAPIHistory responses echo
effectiveInterval, the bucket width actually served (10m, 1h, or 1d), which can differ from the interval you asked for. - FIXEDAPICrossed books no longer produce negative spreads on pricing reads:
spreadBpsis null when the best bid exceeds the best ask, and the mid price falls back to the best ask. NBBO keeps its explicitcrossedflag. - IMPROVEDAPIThe default best bid on pricing, item search, and recommendations is now cash-executable, matching NBBO. Pass an explicit
marketslist to consider every venue's bid. - IMPROVED
v1.2.0
Item schema API- NEWAPI
GET /v1/schema: the full item catalog as one snapshot with collections, containers, variants, float ranges, images, and per-market catalog ids. SendIf-None-Matchwith the last ETag to get a 304 when nothing changed. - NEWAPI
GET /v1/schema/items/:idOrName: single-item schema lookup by canonical id or market_hash_name. - NEWAPI
GET /v1/schema/changes: incremental catalog sync. Returns only items changed after your storedschemaVersion, cursor-paginated. - IMPROVED
v1.1.0
Liquidity API and the official TypeScript SDK- NEWSDK
@skinpricer/sdkon npm: a typed TypeScript client for every key-gated v1 endpoint with zero runtime dependencies, typed errors, retries, timeouts, and rate-limit metadata. 0.2.0 adds the execution-adjusted NBBO; 0.3.0 adds liquidity and market-health resources andmarketHashNameslookups on aggregations. - NEWAPI
GET /v1/liquidity/:marketHashNameandPOST /v1/liquidity/batch: a liquidity score, badge, and expected time-to-sell per item, built from order books and completed sales. - NEWAPI
GET /v1/liquidity/summary/:marketHashName: a lightweight per-item liquidity read. - NEWAPI
GET /v1/liquidity/itemsand/v1/liquidity/items/manifest: the whole catalog's liquidity as one ETag-cacheable snapshot. - IMPROVEDAPI
min-pricesandmax-ordersacceptmarketHashNamesas an alternative toids. - SECURITYAPIRate limits are pooled per subscription: every key on an account shares one per-minute and one monthly budget, with up to 5 active keys per subscription. This closes a gap where extra keys multiplied throughput.
- IMPROVEDAPINew API keys use the
sp_live_prefix; oldersk_keys keep working. There is no separate test environment, so every key reads the same live data. - FIXEDAPI
/v1/market-analyticsreturned thesell_*andbuy_*fields in dollars next to integer-centcurrent_askandcurrent_bid. All price fields are now integer USD cents. - FIXEDAPI
/v1/itemsnow splits a comma-separatedmarketsfilter. Multi-market filters previously returned no quotes. - FIXEDAPI
spreadBpson NBBO and pricing is null instead of an extreme value when the spread would exceed 10000 bps (100%), which almost always means a stale bid. - FIXEDMarket dataListings not re-fetched within 48 hours are excluded from listings, aggregates, and listing counts, so a quietly stalled market can't quote stale prices.
- FIXEDAPIThe cross-market spread in price history uses a cash-executable, non-crossing bid, matching live NBBO.
- NEWMarket dataCS.Deals and Avan.Market join the feed.
- NEWDocsEvery endpoint and concept has its own reference page with field, error, and access tables, an API Objects page, and a Markdown twin of every page for LLM tooling.
v1.0.0
SkinPricer launch- NEWAPIREST API v1: cross-market NBBO, order-book depth, full pricing snapshots, per-listing samples with float data, price history (aggregate and per market), recommendations, item search, batch min and max prices, and per-market analytics.
- NEWAPI
GET /v1/arbitrage/opportunities: ranked cross-market arbitrage pairing a fresh ask on one market with a fresh bid on another, with spread, estimated net, tradable quantity, and per-leg freshness. - NEWAPIPer-attribute prices:
GET /v1/attribute-prices/latestand/historyfor float, fade, and pattern buckets across markets, plus the BUFF-scoped/v1/markets/buff163/latestand/history. - NEWAPIExecution-adjusted NBBO: an
executionAdjustedblock that re-ranks venues by what you would actually pay and receive after fees, with its own spread and confidence. - NEWAPIIn the default all-markets view, the NBBO best bid only considers cash-executable venues, so Steam wallet credit can't produce a false crossed book. Pass an explicit
marketslist to include every venue. - NEWAPIPrice history picks its bucket size from the requested range, or takes an
intervalparam (MINUTE_5, MINUTE_15, HOUR_1, HOUR_6, DAY_1) that snaps to the nearest stored rollup: 10m, 1h, or 1d. - NEWAPIOperational reads: per-market ingest freshness (
/v1/status/freshness) and ingest latency (/v1/status/market-latency), plus Market Health (/v1/markets/health), the one keyless endpoint, with 48 half-hour health bars per market. - NEWAPIAPI keys with per-plan minute and monthly quotas. Authenticate with
Authorization: ApiKey <key>(Bearer also works); every key-gated response carriesX-RateLimit-*headers, and a 429 comes withRetry-After.