Skip to main content
GET
One item’s whole book, refreshed live
Every lot we hold for one market_hash_name, cheapest first — after asking the upstream market for the item’s current book and putting it on the shelf. GET /v1/listings?name= already returns the lots we hold for a name, and the shelf is deep: per-asset stock from our Chinese supply is kept at up to 1,000 lots per item, floats filled in continuously, sold lots removed as they go. This endpoint is for the moment that is not enough — a buyer sizing a position wants the live ask. It refreshes the item’s book upstream first, with your float window, phase and delivery mode passed through, waits for that book to land on the shelf, then answers with every source’s lots for the name in the exact Listing shape. Every id in the answer is accepted by POST /v1/orders right away. The buy re-resolves the lot’s price live before charging and refuses above your max_price_usd, so a stale cent here is a price_moved, never a loss. Authentication required. Send your key as Authorization: Bearer csb_pub_.... Your negotiated discount, if any, is applied to every price here exactly as on /v1/listings and at checkout.

Query parameters

string
required
Exact Steam market_hash_name, case-insensitive. One item per call.
string
Doppler / Gamma Doppler phase as doppler_phase carries it: Phase 1–Phase 4, Ruby, Sapphire, Black Pearl, Emerald. Passed upstream and applied to the answer.
string
instant, up_to_12h or hold — the same buckets every Listing carries. hold skips the upstream refresh: held rows only ever come from the shelf.
number
Lower float bound, 0–1, inclusive. Passed upstream, so a narrow window reaches lots the cheapest-first book alone would not.
number
Upper float bound, 0–1, inclusive. Passed upstream.
number
Only lots at or above this USD price.
number
Only lots at or below this USD price.
string
Keyset cursor from next_cursor. Pages are always cheapest-first.
integer
1–200. Default 100.

The refresh object

The upstream refresh is best-effort and bounded on purpose: a per-second budget shared by every caller (the market’s own ceiling is shared with our site), and a hard timeout. Past either, the call still answers — from the shelf as of its last sighting — and refresh tells you which it was. Treat refresh.ok=false as slightly older, not as an error. The book you get is still every lot we hold for the name.

Depth at scale

For a position across many items, do not loop this endpoint: read the shelf in bulk with GET /v1/listings?name=, seed from the price snapshot and follow the stream for new and gone. Call depth on the item you are about to buy.

Example

Errors are { "code", "detail" }: invalid_param for a missing or overlong name, a float outside 0–1 or an unknown delivery; unsupported_game for an appId other than 730. CS2 only.

Authorizations

Authorization
string
header
required

Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.

Query Parameters

appId
enum<integer>
default:730

Steam appId of the game. 730 = CS2 (the default), 570 = Dota 2, 252490 = Rust. Omit it and the endpoint answers for CS2 exactly as before. An appId this key may not use answers 400 unsupported_game, whose supported_app_ids lists the ones it may — see GET /games.

Available options:
730,
570,
252490
market_hash_name
string
required

Exact Steam market_hash_name (case-insensitive). Required.

Maximum string length: 256
phase
string

Doppler / Gamma Doppler phase as doppler_phase carries it: Phase 1–Phase 4, Ruby, Sapphire, Black Pearl, Emerald. Passed upstream and applied to the answer.

Maximum string length: 32
delivery
enum<string>

Delivery bucket, as on /v1/listings. hold skips the upstream refresh — held rows only ever come from the shelf.

Available options:
instant,
up_to_12h,
hold
min_float
number

Lower float bound, 0–1, inclusive. Passed upstream.

Required range: 0 <= x <= 1
max_float
number

Upper float bound, 0–1, inclusive. Passed upstream.

Required range: 0 <= x <= 1
min_price
number

Only lots at or above this USD price.

max_price
number

Only lots at or below this USD price.

cursor
string

Keyset cursor from next_cursor. Pages are always cheapest-first.

limit
integer
default:100

1–200. Default 100.

Required range: 1 <= x <= 200

Response

The item’s book, cheapest first.

market_hash_name
string
required

The name you asked for.

refresh
object
required

What the upstream refresh did before the shelf was read.

items
object[]
required
next_cursor
string | null
required

Pass back as cursor to fetch the next page. Null on the last page.