> ## Documentation Index
> Fetch the complete documentation index at: https://api.csboard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/public/prices — фид минимальных цен без ключа для CS2, Dota 2 и Rust

> Одна минимальная цена на каждое название предмета в CS2, Dota 2 или Rust. Без API-ключа и без требований к балансу — один запрос в минуту с одного IP.

Публичный фид цен отвечает на один вопрос: какая сейчас самая дешёвая цена на CSBoard для каждого предмета? В ответе — один объект, где каждому `market_hash_name`, выставленному на продажу в выбранной игре, сопоставлена его минимальная цена в USD. Ни глубины стакана, ни количества листингов, ни разбивки по износу, ни пагинации.

**API-ключ не нужен.** Не отправляйте заголовок `Authorization`, баланс тоже не требуется. Это эндпоинт для сайтов сравнения цен, таблиц и парсеров, которым нужно одно число на название.

## Что вы получаете

* **Одна игра на запрос.** `appId=730` — CS2 (по умолчанию), `570` — Dota 2, `252490` — Rust.
* **Названия как в Steam.** Фазы CS2 Doppler и Gamma Doppler объединены под базовым названием, которое использует Steam, поэтому `Karambit | Doppler (Factory New)` получает цену самой дешёвой фазы. Каждый ключ совпадает с реальным `market_hash_name` в Steam.
* **Ключи отсортированы, цены округлены до цента.** В фид попадают только названия, у которых есть хотя бы один листинг в продаже.
* **`updatedAt`** — момент, когда ответ был собран.

## Лимиты и свежесть

Фид пересобирается не чаще **раза в минуту** и отдаётся с `Cache-Control: public, max-age=60`. Лимит — **1 запрос в минуту с одного IP-адреса**. Более частый опрос не даст свежих данных — только `429` с заголовком `Retry-After`.

<Note>
  `429` здесь выдаёт лимитер по IP, а не по ключу, поэтому тело ответа — `{ "error": "...", "statusCode": 429 }`, без поля `code`. Ориентируйтесь на HTTP-статус и ждите `Retry-After` секунд.
</Note>

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

```bash theme={null}
curl "https://csboard.com/v1/public/prices?appId=730"
```

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

```json theme={null}
{
  "appId": 730,
  "currency": "USD",
  "updatedAt": "2026-10-02T12:00:41.512Z",
  "items": {
    "AK-47 | Redline (Field-Tested)": 11.92,
    "AWP | Asiimov (Field-Tested)": 96.4,
    "Karambit | Doppler (Factory New)": 812.5
  }
}
```

## Коды ошибок

| HTTP-статус | Код | Значение |
| - | - | - |
| 400 | `invalid_param` | `appId` не входит в число игр, которые мы обслуживаем. В `detail` перечислены доступные. |
| 429 | — | Больше одного запроса за минуту с вашего IP. Подождите время, указанное в заголовке `Retry-After`. |

<Tip>
  Нужны разбивка по износу и фазам, количество листингов, фильтры или пагинация? Используйте [`GET /v1/prices`](/ru/api-reference/get-prices) с ключом. Нужен конкретный листинг для покупки? Используйте [`GET /v1/listings`](/ru/api-reference/get-listings) — этот фид индикативный и может отставать до минуты.
</Tip>


## OpenAPI

````yaml GET /public/prices
openapi: 3.1.0
info:
  title: CSBoard API
  version: 1.0.0
  description: >-
    Market data over the CSBoard marketplace — live listings, floats, stickers,
    minAsk prices, FX rates — plus opt-in buying straight from your balance.
    Free to read, key-gated, built for automation.
  contact:
    name: CSBoard
    url: https://csboard.com/docs
servers:
  - url: https://csboard.com/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Status
    description: Liveness and freshness probes.
  - name: Market data
    description: Read the live catalog, prices, and FX rates.
  - name: Trading
    description: Buy listings from your CSBoard balance. Opt-in, key-gated.
  - name: P2P
    description: >-
      List your own CS2 skins on the CSBoard P2P market. Free — any valid key,
      no balance requirement.
  - name: Account
    description: Your balance, settled funds, and trading status.
  - name: Webhooks
    description: Register an endpoint and receive signed order updates instead of polling.
paths:
  /public/prices:
    get:
      tags:
        - Market data
      summary: Keyless min-ask feed
      description: >-
        One number per item: the cheapest current ask in USD for every
        `market_hash_name` on sale in one game. **No API key and no balance
        requirement** — send no `Authorization` header. In exchange it is
        limited to 1 request per minute per IP address, and the payload is
        rebuilt at most once a minute (`Cache-Control: public, max-age=60`), so
        polling faster gains nothing.


        CS2 Doppler and Gamma Doppler phases are merged into Steam's own base
        name, so every key matches a real Steam `market_hash_name`. For depth,
        counts, wear, filters or paging use the keyed `GET /prices`.
      operationId: getPublicPrices
      parameters:
        - name: appId
          in: query
          required: false
          description: >-
            Game to price: `730` = CS2 (the default), `570` = Dota 2, `252490` =
            Rust. A game that is not available answers `400 invalid_param`.
          schema:
            type: integer
            enum:
              - 730
              - 570
              - 252490
            default: 730
      responses:
        '200':
          description: Name → min-ask map for the game.
          headers:
            Cache-Control:
              description: '`public, max-age=60`.'
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicPrices'
              example:
                appId: 730
                currency: USD
                updatedAt: '2026-10-02T12:00:41.512Z'
                items:
                  AK-47 | Redline (Field-Tested): 11.92
                  AWP | Asiimov (Field-Tested): 96.4
                  Karambit | Doppler (Factory New): 812.5
        '400':
          description: The `appId` is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: invalid_param
                detail: 'appId "440" is not available. Use one of: 730, 570, 252490.'
        '429':
          description: >-
            More than 1 request in a minute from your IP address. Wait
            `Retry-After` seconds. This limit is enforced per address, not per
            key, and its body has no `code` field — branch on the status code.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  statusCode:
                    type: integer
              example:
                error: Rate limit exceeded, retry in 37 seconds
                statusCode: 429
      security: []
components:
  schemas:
    PublicPrices:
      type: object
      properties:
        appId:
          type: integer
          description: The game these prices are for.
          example: 730
        currency:
          type: string
          enum:
            - USD
        updatedAt:
          type: string
          format: date-time
          description: When this payload was built. It is rebuilt at most once a minute.
        items:
          type: object
          additionalProperties:
            type: number
          description: >-
            `market_hash_name` → the cheapest current ask in USD, rounded to the
            cent. Keys are sorted. Only names with at least one listing on sale
            appear. CS2 Doppler and Gamma Doppler phases are merged into Steam's
            base name and carry the cheapest phase.
      required:
        - appId
        - currency
        - updatedAt
        - items
    Error:
      type: object
      description: >-
        All errors return { code, detail }. Some carry extra fields (e.g.
        price_moved adds current_total_usd, insufficient_balance adds
        required_usd/current_usd).
      properties:
        code:
          type: string
          description: >-
            Machine-readable error code, e.g. rate_limit_exceeded,
            trading_not_enabled, price_moved.
        detail:
          type: string
          description: Human-readable explanation.
      required:
        - code
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send your key as a Bearer token on every request: `Authorization: Bearer
        csb_pub_...`. Generate keys in your CSBoard profile.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.