> ## 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/prices — CS2 minAsk Price List by Item Group

> Retrieve a paginated minAsk price snapshot grouped by market hash name, wear, and Doppler phase, with cheapest ask and listing count per row.

The prices endpoint returns a grouped price snapshot of the CSBoard marketplace. Each row represents a unique combination of `market_hash_name`, `wear`, and `doppler_phase`, and carries the cheapest current asking price together with how many copies are listed. This makes it efficient for building price comparison tables, alerting pipelines, or portfolio valuation — you can retrieve pricing for thousands of items without pulling individual listings.

**Authentication required.** Send your key as `Authorization: Bearer csb_pub_...`.

## Query parameters

<ParamField query="search" type="string">
  Full-text match on `market_hash_name`, e.g. `AK-47 | Redline`.
</ParamField>

<ParamField query="category" type="string">
  Filter by item category, e.g. `Rifle`, `Knife`, `Gloves`.
</ParamField>

<ParamField query="wear" type="string">
  Filter by wear bucket. One of: `Factory New`, `Minimal Wear`, `Field-Tested`, `Well-Worn`, `Battle-Scarred`.
</ParamField>

<ParamField query="rarity" type="string">
  Filter by rarity tier, e.g. `Classified`, `Covert`.
</ParamField>

<ParamField query="min_price" type="number">
  Minimum `min_price_usd` in USD (inclusive).
</ParamField>

<ParamField query="max_price" type="number">
  Maximum `min_price_usd` in USD (inclusive).
</ParamField>

<ParamField query="cursor" type="string">
  Keyset pagination cursor. Pass the `next_cursor` value from the previous response.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Number of rows per page. Minimum `1`, maximum `500`.
</ParamField>

## Response fields

<ResponseField name="items" type="PriceRow[]" required>
  Array of price rows for this page.

  <Expandable title="PriceRow object">
    <ResponseField name="market_hash_name" type="string" required>
      Steam market hash name, e.g. `AK-47 | Redline (Field-Tested)`.
    </ResponseField>

    <ResponseField name="wear" type="string | null">
      Wear bucket for this price group. `null` for items without a wear tier.
    </ResponseField>

    <ResponseField name="doppler_phase" type="string | null">
      Doppler or Gamma Doppler phase for this price group, e.g. `"Phase 2"`, `"Ruby"`. `null` for non-Doppler items.
    </ResponseField>

    <ResponseField name="min_price_usd" type="number" required>
      Cheapest current asking price in USD across all listings in this group.
    </ResponseField>

    <ResponseField name="qty" type="integer" required>
      Number of listings currently available in this group.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="next_cursor" type="string | null" required>
  Keyset cursor for the next page. Pass as `cursor` on the next request. `null` on the last page.
</ResponseField>

## Example request

```bash theme={null}
curl "https://csboard.com/v1/prices?category=Rifle&wear=Field-Tested&limit=50" \
  -H "Authorization: Bearer csb_pub_..."
```

## Example response

```json theme={null}
{
  "items": [
    {
      "market_hash_name": "AK-47 | Redline (Field-Tested)",
      "wear": "Field-Tested",
      "doppler_phase": null,
      "min_price_usd": 11.92,
      "qty": 73
    }
  ],
  "next_cursor": null
}
```

## Error codes

| HTTP status | Code                  | Meaning                                                                        |
| ----------- | --------------------- | ------------------------------------------------------------------------------ |
| 401         | `unauthorized`        | Missing or invalid API key.                                                    |
| 429         | `rate_limit_exceeded` | Over 30 requests/min. Wait for the `Retry-After` header value before retrying. |

<Warning>
  The prices endpoint returns an **indicative grouped snapshot**. The data is periodically materialized and can lag behind the live marketplace. Use `GET /v1/listings` for the authoritative, real-time asking price of a specific item before placing an order.
</Warning>


## OpenAPI

````yaml GET /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: Account
    description: Your balance, settled funds, and trading status.
paths:
  /prices:
    get:
      tags:
        - Market data
      summary: minAsk price list
      description: >-
        The minAsk price list — one row per market hash name (+ wear + Doppler
        phase), with the cheapest current ask and how many are listed.
        Indicative grouped snapshot; can lag the live listing price.
      operationId: listPrices
      parameters:
        - name: search
          in: query
          description: Full-text match on market hash name.
          schema:
            type: string
        - name: category
          in: query
          description: e.g. Rifle, Knife, Gloves.
          schema:
            type: string
        - name: wear
          in: query
          description: Item wear bucket.
          schema:
            type: string
            enum:
              - Factory New
              - Minimal Wear
              - Field-Tested
              - Well-Worn
              - Battle-Scarred
        - name: rarity
          in: query
          description: e.g. Classified, Covert.
          schema:
            type: string
        - name: min_price
          in: query
          description: Minimum price in USD.
          schema:
            type: number
        - name: max_price
          in: query
          description: Maximum price in USD.
          schema:
            type: number
        - name: cursor
          in: query
          description: Keyset cursor from next_cursor.
          schema:
            type: string
        - name: limit
          in: query
          description: 1–500. Default 100.
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
      responses:
        '200':
          description: A page of price rows.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PriceRow'
                  next_cursor:
                    type:
                      - string
                      - 'null'
                required:
                  - items
                  - next_cursor
              example:
                items:
                  - market_hash_name: AK-47 | Redline (Field-Tested)
                    wear: Field-Tested
                    doppler_phase: null
                    min_price_usd: 11.92
                    qty: 73
                next_cursor: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    PriceRow:
      type: object
      properties:
        market_hash_name:
          type: string
        wear:
          type:
            - string
            - 'null'
        doppler_phase:
          type:
            - string
            - 'null'
        min_price_usd:
          type: number
          description: Cheapest current ask in USD.
        qty:
          type: integer
          description: How many are listed at or above this group.
      required:
        - market_hash_name
        - min_price_usd
        - qty
    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
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: unauthorized
            message: Missing or invalid API key.
    RateLimited:
      description: Rate limit exceeded. Includes a Retry-After header.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rate_limit_exceeded
            message: Too many requests.
  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.

````