Skip to main content
GET
Live buyable listings
Эндпоинт listings возвращает все товары, доступные для покупки на маркетплейсе CSBoard прямо сейчас. Каждая запись содержит полные данные для оценки — значение float, paint seed, наклеенные стикеры с их износом — вместе с авторитетной ценой продажи в USD. Результаты разбиваются на страницы при помощи keyset-курсора, что позволяет надёжно пройти весь каталог даже по мере появления новых листингов. Требуется аутентификация. Отправьте ключ как Authorization: Bearer csb_pub_....
Передайте appId=570 для Dota 2 или appId=252490 для Rust. У таких строк те же ключи; поля, которые есть только в CS2 (wear, doppler_phase, float_value, paint_seed, inspect_link, tradable_at, listed_at), равны null, а stickers — []. См. Игры.

Query-параметры

integer
по умолчанию:"730"
Игра: 730 — CS2, 570 — Dota 2, 252490 — Rust. Не передавайте параметр, чтобы получить CS2. Игры, доступные вашему ключу, — в GET /v1/games.
Нечёткое совпадение по market_hash_name товара — запрос разбивается на слова, и каждое сопоставляется как подстрока, идеально подходит для поиска. Обратите внимание: имя, слова которого являются подмножеством более длинного имени предмета (например, Spectrum Case и Spectrum 2 Case), нельзя изолировать таким способом. Для одного конкретного предмета используйте name.
string
Точное market_hash_name (регистр не учитывается). Точный способ получить листинги одного конкретного предмета — name=Spectrum Case вернёт только Spectrum Case, никогда Spectrum 2 Case. Имеет приоритет над search, если переданы оба параметра.
string
Фильтр по категории товара, например Rifle, Knife, Gloves, Pistol.
string
Фильтр по диапазону износа. Одно из: Factory New, Minimal Wear, Field-Tested, Well-Worn, Battle-Scarred. Только для CS2 — с другим appId вернёт 400 invalid_param.
string
Фильтр по уровню редкости, например Classified, Covert, Extraordinary.
number
Минимальная цена продажи в USD (включительно).
number
Максимальная цена продажи в USD (включительно).
number
Минимальное значение float (включительно). Принимает значения от 0.0 до 1.0. Только для CS2 — с другим appId вернёт 400 invalid_param.
number
Максимальное значение float (включительно). Принимает значения от 0.0 до 1.0. Только для CS2 — с другим appId вернёт 400 invalid_param.
string
Срок доставки — те же три группы, что показывает сетка на сайте. Одно из:
  • instant — доставка ботом. От нескольких секунд до нескольких минут.
  • up_to_12h — трейд должен отправить продавец-человек на площадке-источнике. На сайте отображается как ≤12 ч.
  • hold — внутри trade lock в Steam до tradable_at предмета.
Используйте delivery=instant для любого сценария, где доставка нужна сейчас — вывод, выплата ботом, пользователь, ждущий на экране. Любое другое значение вернёт 400, поэтому опечатка проявится сразу, а не расширит выдачу незаметно.
number
Только листинги, у которых refund_percent не меньше заданного (0–100). Листинги без опубликованного значения исключаются, а не считаются подходящими.?delivery=instant&min_refund_percent=100 — тот пул, который нужен сценарию вывода: доставка сразу, а откат трейда в Steam никому ничего не стоит.
string
Фильтр StatTrak™. only возвращает только предметы StatTrak™; exclude исключает их из результатов. Только для CS2 — с другим appId вернёт 400 invalid_param.
string
Фильтр Souvenir. only возвращает только сувенирные предметы; exclude исключает их из результатов. Только для CS2 — с другим appId вернёт 400 invalid_param.
string (ISO 8601)
Возвращать только листинги, попавшие в каталог после этой временной метки — параметр для чтения дельты. В паре с sort=newest обычный ответ — пустая страница, и именно это делает частый опрос дешёвым вместо полного перечитывания на каждом тике.Перекрывайте свою вотермарку примерно на 60 секунд и дедуплицируйте по id. Отправляйте max(listed_at) - 60s, а не голый максимум. Временные метки берутся из момента НАЧАЛА транзакции БД, опубликовавшей листинг, поэтому большая транзакция может закоммитить строки со штампом раньше, чем строки меньшей и более поздней транзакции, уже закоммиченные. Вотермарка, сдвинутая ровно на максимум, перешагнёт такие листинги навсегда.Только для CS2 — с другим appId вернёт 400 invalid_param.
string
по умолчанию:"id"
Порядок сортировки. Одно из: id (стабильный по умолчанию), newest, price_asc, price_desc. newest сортирует по listed_at, поэтому перевыставленные предметы всплывают наравне с действительно новыми. newest — только для CS2: с другим appId вернёт 400 invalid_param.
string
Keyset-курсор пагинации. Передайте значение next_cursor из предыдущего ответа, чтобы получить следующую страницу.
integer
по умолчанию:"50"
Количество результатов на странице. Минимум 1, максимум 200.

Поля ответа

Listing[]
обязательно
Массив объектов листингов для этой страницы.
string | null
обязательно
Непрозрачный keyset-курсор. Передайте его как query-параметр cursor, чтобы получить следующую страницу. null на последней странице.

Пагинация

Этот эндпоинт использует keyset-пагинацию. Чтобы пройти все страницы:
  1. Выполните первый запрос (без cursor).
  2. Если next_cursor не равен null, повторите запрос с cursor=<next_cursor>.
  3. Остановитесь, когда next_cursor станет null — вы дошли до последней страницы.
Keyset-пагинация стабильна: новые листинги, появляющиеся во время итерации, не приводят к дубликатам или пропущенным строкам.

Пример запроса

Пример ответа

Коды ошибок

Значение price_usd у каждого листинга — это авторитетная цена покупки: оно отражает текущую цену продажи на момент запроса и ровно столько с вас спишут. Не используйте min_price_usd из эндпоинта /prices как оценку цены покупки — это значение может отставать.

Авторизации

Authorization
string
header
обязательно

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

Параметры запроса

appId
enum<integer>
по умолчанию: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.

Доступные опции:
730,
570,
252490

Full-text match on market hash name.

name
string

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.

category
string

e.g. Rifle, Knife, Gloves.

wear
enum<string>

Item wear bucket. CS2 only — sent with another appId it answers 400 invalid_param.

Доступные опции:
Factory New,
Minimal Wear,
Field-Tested,
Well-Worn,
Battle-Scarred
rarity
string

e.g. Classified, Covert.

min_price
number

Minimum price in USD.

max_price
number

Maximum price in USD.

min_float
number

Minimum float value. CS2 only — sent with another appId it answers 400 invalid_param.

max_float
number

Maximum float value. CS2 only — sent with another appId it answers 400 invalid_param.

delivery
enum<string>

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
min_refund_percent
number

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 <= 100
stat_trak
enum<string>

Filter StatTrak™ items. CS2 only — sent with another appId it answers 400 invalid_param.

Доступные опции:
only,
exclude
souvenir
enum<string>

Filter Souvenir items. CS2 only — sent with another appId it answers 400 invalid_param.

Доступные опции:
only,
exclude
available_after
string<date-time>

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. CS2 only — sent with another appId it answers 400 invalid_param.

sort
enum<string>
по умолчанию:id

Sort order. Default id. newest orders by listed_at (when the item entered the catalogue), so re-listings surface too. newest is CS2 only — with another appId it answers 400 invalid_param.

Доступные опции:
id,
newest,
price_asc,
price_desc
cursor
string

Keyset cursor from next_cursor.

limit
integer
по умолчанию:50

1–200. Default 50.

Требуемый диапазон: 1 <= x <= 200

Ответ

A page of listings.

items
object[]
обязательно
next_cursor
string | null
обязательно

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