Skip to main content

Games: CS2 & Rust

The core reads ship as game-scoped /v2 variants covering both CS2 and Rust. Same DTOs, same auth, same quotas - plus one required game parameter.

Every /v1 route is CS2 and behaves exactly as documented on its endpoint page. The routes below also exist as /v2 variants that serve both games: identical response shapes, identical Authorization header, and the same plan features and quotas. The only contract change is one required query parameter: game=cs2 or game=rust (any other value is a 400). Rust access is included in every existing plan - there is no Rust add-on - and CS2 and Rust calls draw from the same per-minute and monthly budgets across all your keys.

Game-scoped routes

/v2/pricing/:marketHashNamebasic_pricing
/v2/pricing/:marketHashName/listingsbasic_pricing
/v2/pricing/:marketHashName/historyhistorical_data
/v2/pricing/:marketHashName/history/marketshistorical_data
/v2/nbbobasic_pricing
/v2/nbbo/depthbasic_pricing
/v2/itemsbasic_pricing

/v2/items supports search, markets, page, and perPage, with pages 1 to 10,000 and at most 100 items per page. Search text is limited to 512 characters (control and bidi characters rejected); market filters to 32 names of at most 64 characters each. There is no /v2/items/all route - page through /v2/items instead. Endpoints not listed here (arbitrage, recommendations, attribute prices, buff163 buckets, schema) have no game variant yet and remain CS2 via /v1.

Rust caveats

Rust items carry none of CS2's wear semantics: no wear tiers, float values, paint seeds, StatTrak, or souvenir variants. The attribute/float endpoints are CS2-only, and per-listing float fields (floatValue, paintSeed, paintIndex, stickers) are always null or empty on Rust listings - see Nulls & partial data. A Rust item is identified by its plain market hash name (the item's display name), e.g. market_hash_name=Big Grin.

On thinly listed Rust items the venue-equal medianPrice can sit far from any executable price (a handful of venues, wide ask dispersion). For display and alerting, prefer bestAskCents / bestBidCents from history buckets and the NBBO's bestAsk / bestBid - the executable side of the book.

Errors & readiness

400Invalid game value or invalid input (search/page/market constraints above).
404Unknown item, or no pricing available where the route requires it.
409Ambiguous item selector - narrow the name.
503Rust reads are disabled (rollout switch). Authentication and feature checks run first, so a 503 means your key and plan are fine - retry later.
401 / 403 / 429Same auth, feature, and quota semantics as every key-gated route - see Errors & status.

A first Rust call

GET /v2/nbbo?game=rust&market_hash_name=Big%20Grin with your normal Authorization: ApiKey <key> header returns the same NBBO shape as /v1/nbbo. Swap game=cs2 and the same route serves your existing CS2 calls - one integration, two games.

The TypeScript SDK currently wraps the v1 (CS2) routes; game-scoped SDK methods ship in a future SDK release. Until then, call the /v2 variants over plain HTTP as above - the response types are identical to their v1 counterparts.

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.