GET /v1/listings — Browse Live CS2 Marketplace Listings
Fetch live, buyable CS2 skin listings with float, paint seed, stickers, and USD asking price. Filter by wear, category, rarity, float range, and more.
Authorization: Bearer csb_pub_....
Query parameters
market_hash_name — splits the query into words and substring-matches each, ideal for discovery. Note: a name whose words are a subset of a longer item’s name (e.g. Spectrum Case vs Spectrum 2 Case) cannot be isolated this way. For a single specific item, use name.market_hash_name (case-insensitive). The precise way to fetch one specific item’s listings — name=Spectrum Case returns only Spectrum Case, never Spectrum 2 Case. Takes precedence over search when both are supplied.Rifle, Knife, Gloves, Pistol.Factory New, Minimal Wear, Field-Tested, Well-Worn, Battle-Scarred.Classified, Covert, Extraordinary.0.0 to 1.0.0.0 to 1.0.instant— bot fulfilment. Seconds to a few minutes.up_to_12h— a human seller on the source market has to send the trade. Displayed as ≤12h on the site.hold— inside a Steam trade lock until the item’stradable_at.
delivery=instant for any flow that must deliver now — a withdrawal, a bot payout, a user waiting on a screen. Any other value is a 400, so a typo fails loudly instead of quietly widening your results.refund_percent is at least this (0–100). Listings with no published figure are excluded, not assumed.?delivery=instant&min_refund_percent=100 is the pool a withdrawal flow wants: ships immediately, and a Steam reversal costs nobody anything.only returns only StatTrak™ items; exclude removes them from results.only returns only Souvenir items; exclude removes them from results.sort=newest and the usual response is an empty page, which is what makes frequent polling cheap instead of a full rescan every tick.Overlap your watermark by ~60 seconds and dedupe by id. Send max(listed_at) - 60s, never the bare maximum. Timestamps come from the start of the database transaction that published the listing, so a large batch can commit rows stamped earlier than rows a smaller, later batch already committed — a watermark advanced to the exact maximum steps over those listings permanently.id (stable default), newest, price_asc, price_desc. newest orders by listed_at, so re-listings surface alongside genuinely new inventory.next_cursor value from the previous response to fetch the next page.1, maximum 200.Response fields
cursor query parameter to fetch the next page. null on the last page.Pagination
This endpoint uses keyset pagination. To walk all pages:- Make the initial request (no
cursor). - If
next_cursoris non-null, repeat the request withcursor=<next_cursor>. - Stop when
next_cursorisnull— you have reached the last page.
Example request
Example response
Error codes
Authorizations
Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.
Query Parameters
Full-text match on market hash name.
Exact market_hash_name (case-insensitive) — the precise single-item lookup. Unlike fuzzy search, it isolates one item even when its name is a word-subset of a longer one (e.g. Spectrum Case vs Spectrum 2 Case). Takes precedence over search.
e.g. Rifle, Knife, Gloves.
Item wear bucket.
Factory New, Minimal Wear, Field-Tested, Well-Worn, Battle-Scarred e.g. Classified, Covert.
Minimum price in USD.
Maximum price in USD.
Minimum float value.
Maximum float value.
Delivery bucket, the same three the site's grid shows. instant = bot fulfilment (seconds to minutes); up_to_12h = a human seller on the source market must send the trade; hold = inside a Steam trade lock until the item's tradable_at. Any other value is a 400.
instant, up_to_12h, hold Only listings whose refund_percent is at least this (0-100). Listings with no published figure are EXCLUDED, not assumed. Combine with delivery=instant for a pool that ships now and is fully refundable on a Steam reversal.
0 <= x <= 100Filter StatTrak™ items.
only, exclude Filter Souvenir items.
only, exclude ISO-8601 timestamp. Returns only listings that entered the catalogue after it — the delta-poll parameter. Pair with sort=newest; the usual response is an empty page, which is what makes frequent polling cheap instead of a full rescan every tick.
Overlap your watermark by ~60 seconds and dedupe by id. Send max(listed_at) - 60s, never the bare maximum. Timestamps come from the start of the database transaction that published the listing, so a large batch can commit rows stamped earlier than rows a smaller, later batch already committed; a watermark advanced to the exact maximum steps over those listings permanently.
Sort order. Default id. newest orders by listed_at (when the item entered the catalogue), so re-listings surface too.
id, newest, price_asc, price_desc Keyset cursor from next_cursor.
1–200. Default 50.
1 <= x <= 200