Browsing listings
UseGET /v1/listings to fetch live, buyable listings. Every item returned is available to buy right now. The endpoint supports rich filtering so you can narrow results to exactly the skins you care about.
Keyset pagination
Results are paged via a cursor. Whennext_cursor is non-null, pass it back as cursor to fetch the next page. When next_cursor is null, you have reached the last page.
Example response
Price list
GET /v1/prices returns one row per unique skin group (market hash name + wear + Doppler phase), showing the current cheapest ask and how many are listed. It is designed for fast market scans and price comparisons across thousands of items — not for picking a specific listing to buy.
Available filters
Example response
Bulk snapshot
For full-catalog ingestion — comparison sites, price databases, arbitrage bots — useGET /v1/prices/snapshot.ndjson.gz. This endpoint streams the entire price list as a gzipped NDJSON file, one PriceRow JSON object per line.
Conditional requests with ETag
The snapshot sets anETag header on every 200 response. Send it back as If-None-Match on the next request — if the snapshot hasn’t changed, the server returns 304 Not Modified with an empty body, saving bandwidth and processing time.
The snapshot endpoint is rate-limited to 1 request per minute. Use the ETag pattern above to avoid re-downloading identical data — a
304 response does not count against your rate limit budget for data transfer, only the request itself.FX conversion
Every price in the CSBoard API is denominated in USD. UseGET /v1/currency to fetch the same FX rate table the site uses, then convert price_usd to any local currency client-side.
Example response
Converting a price
Multiplyprice_usd by the rate for your target currency:
price_usd field directly from /v1/listings.
Next steps
- Buy listings with POST /v1/orders
- Automate price monitoring and buying bots
- API Reference — GET /v1/listings
- API Reference — GET /v1/prices
Picking a pool you can promise on
Two fields decide whether a listing is safe to put behind a user-facing withdrawal, and both are per-listing rather than per-account:delivery—instant(bot, seconds to minutes),up_to_12h(a human seller on the source market has to send the trade),hold(Steam trade lock untiltradable_at).refund_percent— how much comes back if Valve reverses the trade. It is a property of the source market, not a support policy, and it ranges from 0 to 100 across our catalogue.nullmeans no published figure; treat it as unknown, never as 100.
min_refund_percent and the catalogue gets several times larger and cheaper — which is the right call for a display case or a price index, and the wrong one for something a user is waiting on.