2026-10 — Partial results when a provider is unavailable
Prices and bids no longer fail outright when one of the requested providers has no data available.POST /v1/pricesandPOST /v1/bidsstream the available providers and name the missing ones in a newX-Snapshot-Unavailable-Providersresponse header (comma-separated). Previously the stream returned503when the first requested provider had no data.GET /v1/pricesandGET /v1/bidslistings (noitem_idormarket_hash_name) return the available providers and list the missing ones in a newmeta.unavailable_providersfield. Previously any missing provider returned503.503is still returned when none of the requested providers are available.
2026-09 — stale flag on prices and bids
Prices and bids rows now say whether they are still confirmed by the provider.
- Every row from
GET /v1/prices,POST /v1/prices,POST /v1/prices/batch,GET /v1/bids,POST /v1/bids, andPOST /v1/bids/batchincludesstale. It istruewhen the provider’s most recent scan did not include the listing or buy order, so the price shown is the last one observed and may already be gone. - New
exclude_staleoption (query parameter on the list and stream endpoints, body field on the batch endpoints) leaves those rows out. It defaults tofalse, so existing integrations see the same rows as before. - With
exclude_stale=true,pagination.totalon broad listings (noitem_idormarket_hash_name) andX-Snapshot-Totalon the streams still count stale rows, so a page can contain fewer thanlimititems.
2026-08 — SDK v3.1.0: feed streaming and portfolio value fields
An additive release covering everything the API gained since v3.0.0. No methods were renamed or removed, so upgrading needs no code changes.- Python:
pip install cs2cap==3.1.0 - Node/TypeScript:
npm install cs2cap@3.1.0
FeedStream, a streaming client for the real-time feeds. It handles the SSE connection, skips heartbeats, and yields decoded events with typed item changes.skinswap_tjoins the provider enum.currency,price_provider,total_value, andchange_24h_pcton the portfolio list model, plus theincludeparameter that fills the last two in.priceson the Steam import request, so an import can carry cost basis.- Liquidity score field descriptions now match the current scoring model.
FeedStream is the supported way to consume the feeds from the SDKs. The generated
FeedApi class reads a whole response before returning, which never completes on a
stream. See the Feed API reference for the event catalog and
reconnect guidance.
2026-08 — Portfolio list valuation and import cost basis
GET /portfolio now accepts include=value, which adds total_value and
change_24h_pct to every portfolio in the response. It is opt-in because valuing each
portfolio costs an extra lookup. The list model also returns currency and
price_provider so you can tell how a portfolio is being valued.
POST /portfolio/{id}/import accepts a prices map keyed by Steam asset ID. Each
imported asset with a price also gets a matching buy transaction, so imported items
arrive with cost basis instead of needing a second pass.
2026-08 — Liquidity score rebalanced around confirmed sales
The liquidity score now weighs evidence differently. The range stays0-100 and no field
names change, but scores move for some items — recompute anything you cached or
threshold against.
Requests for a
7d or 30d liquidity horizon are normalized to the canonical 24h score,
which already smooths 24h, 7d, and 30d sales evidence. See the
liquidity score guide for the full model.
2026-07 — Best bid excludes same-provider bids above the ask
best_bid in market analytics now ignores bids from the same provider that sit at or
above that provider’s current ask. Those entries were arbitrage artifacts rather than
offers you could actually sell into.
2026-07 — Real-time price and bid feeds
Two Server-Sent Events endpoints replace polling/prices and /bids on a timer:
GET /feed/prices— price changes as providers refreshGET /feed/bids— buy-order changes
providers, item_ids, and market_hash_names filters, and are
available on the Quant tier. Delivery is fire-and-forget with no event history, so
re-fetch current state before reconnecting. See the
Feed API reference.
2026-07 — New provider: SkinSwap Trade
skinswap_t is accepted anywhere a provider key is, and appears in provider lists
alongside the existing skinswap marketplace.
2026-07 — SDK v3.0.0: new repositories and renamed methods
Both SDKs move to dedicated repositories with independent versioning, and method names change to a consistent verb-first convention. This is a breaking SDK release; the REST API itself is unchanged. New homes- Python:
CS2Cap/cs2cap-python—pip install cs2cap==3.0.0 - Node/TypeScript:
CS2Cap/cs2cap-node—npm install cs2cap@3.0.0 - The former
CS2Cap/SDKsrepository is archived.
The bundled SDK examples were removed; the docs are the
canonical usage reference.