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

# Prices API: Current Asks, History, and Candles

> Fetch current lowest asks, stream full price snapshots, batch-query up to 100 items, retrieve OHLCV candles, and page through raw price history.

The Prices API gives you access to the current lowest ask for every CS2 item across all tracked marketplaces. You can query a single item, batch up to 100 items in one request, stream the entire live catalog as NDJSON, retrieve OHLCV candles for charting, and page through raw historical price records. All price values are returned in minor units of the response currency.

***

## GET /prices — List prices

Returns the current lowest ask across marketplaces. You can filter by item, phase, provider, and currency. Valid filters with no current matches return `200` with an empty `items` array; `503` indicates the data source is temporarily unavailable.

**Tiers:** Free, Starter, Pro, Quant

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark-default"}
  curl -sS \
    -H "Authorization: Bearer $CS2C_API_KEY" \
    "https://api.cs2c.app/prices?item_id=4994&providers=buff163&providers=csfloat&currency=USD"
  ```

  ```python Python theme={"theme":"github-dark-default"}
  import os

  import cs2cap

  configuration = cs2cap.Configuration(access_token=os.environ["CS2C_API_KEY"])

  with cs2cap.ApiClient(configuration) as client:
      api = cs2cap.PricesApi(client)
      response = api.list_prices(
          item_id=4994,
          providers=["buff163", "csfloat"],
          currency="USD",
      )

  print(client.sanitize_for_serialization(response))
  ```

  ```typescript TypeScript theme={"theme":"github-dark-default"}
  import { Configuration, PricesApi } from "cs2cap";

  const accessToken = process.env.CS2C_API_KEY;

  if (!accessToken) {
    throw new Error("Set CS2C_API_KEY before running this example.");
  }

  const api = new PricesApi(new Configuration({ accessToken }));
  const response = await api.listPrices({
    itemId: 4994,
    providers: ["buff163", "csfloat"],
    currency: "USD",
  });

  console.log(response);
  ```
</CodeGroup>

### Parameters

<ParamField query="item_id" type="integer">
  Filter by item ID. Takes precedence over `market_hash_name` and `phase` when provided.
</ParamField>

<ParamField query="market_hash_name" type="string">
  Exact item name as it appears in inventory. Ignored when `item_id` is provided.
</ParamField>

<ParamField query="phase" type="string">
  Doppler or Gamma Doppler phase filter. Can be used without `market_hash_name`. One of: `Phase 1`, `Phase 2`, `Phase 3`, `Phase 4`, `Ruby`, `Sapphire`, `Black Pearl`, `Emerald`.
</ParamField>

<ParamField query="providers" type="string[]">
  Provider keys to include. Repeat the parameter to pass more than one: `providers=steam&providers=buff163`. Valid keys: `avanmarket`, `buff163`, `buffmarket`, `c5`, `csdeals`, `csfloat`, `csgo500`, `csgoempire`, `csmoney_m`, `csmoney_t`, `cstrade`, `dmarket`, `dupefi`, `ecosteam`, `gameboost`, `haloskins`, `itradegg`, `lisskins`, `lootfarm`, `mannco`, `marketcsgo`, `pirateswap`, `rapidskins`, `shadowpay`, `skinbaron`, `skinflow`, `skinland`, `skinout`, `skinplace`, `skinport`, `skinscom`, `skinsmonkey`, `skinswap`, `skinswap_t`, `skinvault`, `steam`, `swapgg`, `tradeit`, `waxpeer`, `whitemarket`, `youpin`.
</ParamField>

<ParamField query="currency" type="string" default="USD">
  Target currency. Accepts 200+ ISO 4217 codes. See [`GET /fx`](/api-reference/catalog#get-/fx-—-fx-rates) for the full list.
</ParamField>

<ParamField query="limit" type="integer">
  Results per page. Defaults to the caller's effective tier cap: `100` for Free, `1000` for Starter, Pro, and Quant.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Pagination offset.
</ParamField>

### Response example

```json theme={"theme":"github-dark-default"}
{
  "meta": {...},
  "items": [
    {
      "provider": "buff163",
      "item_id": 4994,
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "phase": "Sapphire",
      "lowest_ask": 531143,
      "quantity": 158,
      "link": "https://cs2c.app/r/buff163/4994",
      "url": "https://buff.163.com/goods/42998?from=market#tag_ids=446968",
      "timestamp": "2026-03-20T13:09:25.771066Z",
      "last_updated": "2026-03-21T05:02:44.450067Z"
    },
    {
      "provider": "csfloat",
      "item_id": 4994,
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "phase": "Sapphire",
      "lowest_ask": 531143,
      "quantity": 29,
      "link": "https://cs2c.app/r/csfloat/4994",
      "url": "https://csfloat.com/search?def_index=507&paint_index=416",
      "timestamp": "2026-03-21T05:03:40.179351Z",
      "last_updated": "2026-03-21T05:03:40.837477Z"
    }
  ],
  "pagination": {...}
}
```

### Response fields

<ResponseField name="provider" type="string">
  Provider key for this listing.
</ResponseField>

<ResponseField name="item_id" type="integer">
  Unique catalog item ID.
</ResponseField>

<ResponseField name="market_hash_name" type="string">
  Full item name as it appears in the Steam economy.
</ResponseField>

<ResponseField name="phase" type="string">
  Doppler phase, or `null` for non-phased items.
</ResponseField>

<ResponseField name="lowest_ask" type="integer">
  Current best ask price in minor units of the response currency. For example, `531143` in USD = \$5,311.43.
</ResponseField>

<ResponseField name="lowest_ask_decimal" type="string">
  `lowest_ask` as a decimal string with adaptive precision: two decimal places at or above `1.0`, eight below it. Use this for low-value currencies such as crypto, where the integer `lowest_ask` rounds to `0` (for example a \$25.50 skin in BTC returns `lowest_ask = 0`, `lowest_ask_decimal = "0.00041600"`).
</ResponseField>

<ResponseField name="quantity" type="integer">
  Number of listings at or near the lowest ask on this provider.
</ResponseField>

<ResponseField name="link" type="string">
  CS2Cap tracked redirect URL. Available on all tiers.
</ResponseField>

<ResponseField name="url" type="string">
  Direct marketplace URL. Returned on Pro and Quant only.
</ResponseField>

<ResponseField name="timestamp" type="string">
  When the price or quantity last changed.
</ResponseField>

<ResponseField name="last_updated" type="string">
  When this record was last refreshed, even if the price stayed the same.
</ResponseField>

<Note>
  If the item exists in the catalog but none of the selected providers currently has a listing, the endpoint returns `200` with `items: []`.
</Note>

***

## POST /prices — Stream full prices snapshot

Streams the complete live prices catalog as NDJSON, with one JSON object per line. The snapshot is captured once at request start and then streamed in full.

**Tiers:** Pro, Quant
**Rate limit:** rolling 24h quota of successful stream starts per API key — **50/day on `pro`, 300/day on `quant`**, counted separately from [`POST /bids`](/api-reference/bids#post-/bids-—-stream-full-bids-snapshot). One active stream per API key at a time (`409` otherwise, with `Retry-After`).

<Tip>
  **⚡ Why NDJSON?** A full market snapshot contains **hundreds of thousands** of listings. If this payload were delivered as a standard JSON array (`[...]`), your backend would be forced to decompress and buffer a massive \~200MB string into memory before `JSON.parse()` could even begin. This causes delayed processing, blocked event loops, and massive RAM spikes.

  By streaming this endpoint as NDJSON, CS2Cap achieves a sub-1s TTFB (\~500ms). Your backend can decompress and parse the stream line-by-line as packets arrive, which keeps memory usage minimal and allows for instant inserts in your database.
</Tip>

### Query parameters

<ParamField query="providers" type="string[]">
  Optional. Repeat to restrict the stream to specific providers. Uses the same provider keys as [`GET /prices`](/api-reference/prices#get-/prices-—-list-prices). If omitted, all providers are included.
</ParamField>

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark-default"}
  curl -sS -X POST \
    -H "Authorization: Bearer $CS2C_API_KEY" \
    "https://api.cs2c.app/prices?providers=buff163"
  ```

  ```python Python theme={"theme":"github-dark-default"}
  import os

  import cs2cap

  configuration = cs2cap.Configuration(access_token=os.environ["CS2C_API_KEY"])

  with cs2cap.ApiClient(configuration) as client:
      api = cs2cap.PricesApi(client)
      response = api.stream_full_prices_snapshot(
          providers=["buff163"]
      )

  print(client.sanitize_for_serialization(response))
  ```

  ```typescript TypeScript theme={"theme":"github-dark-default"}
  import { Configuration, PricesApi } from "cs2cap";

  const accessToken = process.env.CS2C_API_KEY;

  if (!accessToken) {
    throw new Error("Set CS2C_API_KEY before running this example.");
  }

  const api = new PricesApi(new Configuration({ accessToken }));
  const response = await api.streamFullPricesSnapshot({ providers: ["buff163"] });

  console.log(response);
  ```
</CodeGroup>

### Response example

```ndjson theme={"theme":"github-dark-default"}
{"provider":"avanmarket","item_id":2,"market_hash_name":"'Blueberries' Buckshot | NSWC SEAL","phase":null,"lowest_ask":3460,"quantity":6,"link":"https://cs2c.app/r/avanmarket/2","url":"https://avan.market/en/market/cs/blueberries-buckshot-nswc-seal","timestamp":"2026-03-22T01:41:35.353783Z","last_updated":"2026-03-22T01:41:36.221322Z"}
{"provider":"buff163","item_id":2,"market_hash_name":"'Blueberries' Buckshot | NSWC SEAL","phase":null,"lowest_ask":3187,"quantity":84,"link":"https://cs2c.app/r/buff163/2","url":"https://buff.163.com/goods/835687?from=market","timestamp":"2026-03-22T00:08:50.544878Z","last_updated":"2026-03-22T00:54:22.230624Z"}
{"provider":"c5","item_id":2,"market_hash_name":"'Blueberries' Buckshot | NSWC SEAL","phase":null,"lowest_ask":3156,"quantity":57,"link":"https://cs2c.app/r/c5/2","url":"https://www.c5game.com/csgo/808836530722177024/item/sell","timestamp":"2026-03-22T01:27:20.020270Z","last_updated":"2026-03-22T01:42:46.706601Z"}
```

***

## POST /prices/batch — Batch prices lookup

Returns current lowest asks for up to 100 items in a single request, grouped by item ID across the selected providers.

**Tiers:** Starter, Pro, Quant

### Request body

<ParamField body="item_ids" type="integer[]">
  Array of item IDs to fetch. Provide at least one of `item_ids` or `market_hash_names`.
</ParamField>

<ParamField body="market_hash_names" type="string[]">
  Array of market hash names to fetch. Provide at least one of `item_ids` or `market_hash_names`.
</ParamField>

<ParamField body="providers" type="string[]">
  Provider keys to include. If omitted, all providers are queried.
</ParamField>

<ParamField body="currency" type="string" default="USD">
  Target currency. Use [`GET /fx`](/api-reference/catalog#get-/fx-—-fx-rates) for supported ISO 4217 codes.
</ParamField>

<Warning>
  **Phased items (Dopplers / Gammas):** `market_hash_name` resolves to the phaseless catalog entry and returns the cheapest variant regardless of phase. To target a specific phase (`Phase 1`, `Phase 2`, `Phase 3`, `Phase 4`, `Sapphire`, `Ruby`, `Emerald`, or `Black Pearl`), pass the corresponding `item_id` instead.
</Warning>

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark-default"}
  curl -sS -X POST \
    -H "Authorization: Bearer $CS2C_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"item_ids":[4994,2],"providers":["buff163","csfloat"],"currency":"USD"}' \
    "https://api.cs2c.app/prices/batch"
  ```

  ```python Python theme={"theme":"github-dark-default"}
  import os

  import cs2cap

  configuration = cs2cap.Configuration(access_token=os.environ["CS2C_API_KEY"])

  with cs2cap.ApiClient(configuration) as client:
      api = cs2cap.PricesApi(client)
      response = api.batch_price_lookup(
          cs2cap.BatchPricesRequest(
              item_ids=[4994, 12632],
              providers=["buff163", "csfloat"],
              currency="USD",
          )
      )

  print(client.sanitize_for_serialization(response))
  ```

  ```typescript TypeScript theme={"theme":"github-dark-default"}
  import { Configuration, PricesApi } from "cs2cap";

  const accessToken = process.env.CS2C_API_KEY;

  if (!accessToken) {
    throw new Error("Set CS2C_API_KEY before running this example.");
  }

  const api = new PricesApi(new Configuration({ accessToken }));
  const response = await api.batchPriceLookup({
    batchPricesRequest: {
      itemIds: [4994, 12632],
      providers: ["buff163", "csfloat"],
      currency: "USD",
    },
  });

  console.log(response);
  ```
</CodeGroup>

### Request example

```json theme={"theme":"github-dark-default"}
{
  "item_ids": [4994, 2],
  "market_hash_names": ["AK-47 | Redline (Field-Tested)"],
  "providers": ["buff163", "steam"],
  "currency": "USD"
}
```

### Response example

```json theme={"theme":"github-dark-default"}
{
  "meta": {...},
  "items": [
    {
      "item_id": 4994,
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "phase": "Sapphire",
      "quotes": [
        {
          "provider": "buff163",
          "lowest_ask": 531143,
          "quantity": 158,
          "timestamp": "2026-03-20T13:09:25Z",
          "last_updated": "2026-03-21T05:02:44Z"
        }
      ]
    },
    {
      "item_id": 2,
      "market_hash_name": "'Blueberries' Buckshot | NSWC SEAL",
      "phase": null,
      "quotes": [
        {
          "provider": "buff163",
          "lowest_ask": 3187,
          "quantity": 84,
          "timestamp": "2026-03-22T00:08:50Z",
          "last_updated": "2026-03-22T00:54:22Z"
        },
        {
          "provider": "steam",
          "lowest_ask": 3923,
          "quantity": 57053,
          "timestamp": "2026-03-21T05:00:30Z",
          "last_updated": "2026-03-21T05:00:34Z"
        }
      ]
    }
  ],
  "items_not_found": [],
  "names_not_found": []
}
```

<ResponseField name="items" type="object[]">
  Array of results, one entry per resolved item.

  <Expandable title="item properties">
    <ResponseField name="item_id" type="integer">
      Catalog item ID.
    </ResponseField>

    <ResponseField name="market_hash_name" type="string">
      Full item name.
    </ResponseField>

    <ResponseField name="phase" type="string">
      Doppler phase or `null`.
    </ResponseField>

    <ResponseField name="quotes" type="object[]">
      Per-provider price quotes for this item.

      <Expandable title="quote properties">
        <ResponseField name="provider" type="string">
          Provider key.
        </ResponseField>

        <ResponseField name="lowest_ask" type="integer">
          Lowest ask in minor units of the response currency.
        </ResponseField>

        <ResponseField name="lowest_ask_decimal" type="string">
          `lowest_ask` as an adaptive-precision decimal string (eight places below `1.0`). Use for sub-cent currencies such as crypto.
        </ResponseField>

        <ResponseField name="quantity" type="integer">
          Listing count at or near the lowest ask.
        </ResponseField>

        <ResponseField name="timestamp" type="string">
          When the price was observed.
        </ResponseField>

        <ResponseField name="last_updated" type="string">
          When the record was last refreshed.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="items_not_found" type="integer[]">
  Item IDs (including those resolved from `market_hash_names`) that returned no quotes on any queried provider.
</ResponseField>

<ResponseField name="names_not_found" type="string[]">
  `market_hash_names` that could not be resolved to any catalog item.
</ResponseField>

***

## GET /prices/candles — Price candles (OHLCV)

Returns composite OHLCV candles across all providers for the resolved item. Supports `5m`, `1h`, and `1d` intervals. Empty buckets can optionally be forward-filled.

**Tiers:** Free (1d only), Starter (1d only), Pro, Quant

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark-default"}
  curl -sS \
    -H "Authorization: Bearer $CS2C_API_KEY" \
    "https://api.cs2c.app/prices/candles?item_id=4994&interval=1d&lookback=30d&currency=USD"
  ```

  ```python Python theme={"theme":"github-dark-default"}
  import os

  import cs2cap

  configuration = cs2cap.Configuration(access_token=os.environ["CS2C_API_KEY"])

  with cs2cap.ApiClient(configuration) as client:
      api = cs2cap.PricesApi(client)
      response = api.get_price_candles(
          item_id=4994,
          interval="1d",
          lookback="30d",
          fill=True,
          currency="USD",
      )

  print(client.sanitize_for_serialization(response))
  ```

  ```typescript TypeScript theme={"theme":"github-dark-default"}
  import { Configuration, PricesApi } from "cs2cap";

  const accessToken = process.env.CS2C_API_KEY;

  if (!accessToken) {
    throw new Error("Set CS2C_API_KEY before running this example.");
  }

  const api = new PricesApi(new Configuration({ accessToken }));
  const response = await api.getPriceCandles({
    itemId: 4994,
    interval: "1d",
    lookback: "30d",
    fill: true,
    currency: "USD",
  });

  console.log(response);
  ```
</CodeGroup>

### Parameters

<ParamField query="item_id" type="integer">
  Item ID to query. Required if `market_hash_name` is not provided.
</ParamField>

<ParamField query="market_hash_name" type="string">
  Exact item name. Required if `item_id` is not provided.
</ParamField>

<ParamField query="phase" type="string">
  Doppler or Gamma phase filter. One of: `Phase 1`, `Phase 2`, `Phase 3`, `Phase 4`, `Ruby`, `Sapphire`, `Black Pearl`, `Emerald`.
</ParamField>

<ParamField query="start" type="string">
  Inclusive ISO 8601 start timestamp. Accepts `YYYY-MM-DD` or `YYYY-MM-DDThh:mm:ss`.
</ParamField>

<ParamField query="end" type="string">
  Exclusive ISO 8601 end timestamp. Defaults to the current time when omitted.
</ParamField>

<ParamField query="lookback" type="string">
  Duration shorthand such as `7d` or `30`. When sent with `start` or `end`, `lookback` takes precedence and selects a completed time window. For `interval=1h`, the window includes a short delay to ensure the latest bucket is fully complete.
</ParamField>

<ParamField query="interval" type="string" default="1d">
  Candle interval. One of: `5m`, `1h`, `1d`.
</ParamField>

<ParamField query="fill" type="boolean" default="false">
  Forward-fill empty buckets using the previous close.
</ParamField>

<ParamField query="currency" type="string" default="USD">
  Target currency. Use `/v1/fx` for the currently supported currency codes. Unsupported codes return `422`; temporary FX-rate unavailability returns `503`.
</ParamField>

### Response example

`meta.start` and `meta.end` describe the effective query window. With `fill=false`, `data` can be sparse inside that window; use `fill=true` to forward-fill empty buckets.

```json theme={"theme":"github-dark-default"}
{
  "meta": {...},
  "data": [
    {
      "t": 1773466200,
      "o": 1783,
      "h": 2529,
      "l": 1529,
      "c": 1782,
      "v": 24,
      "q": 54792,
      "providers": {
        "o": "csfloat",
        "h": "steam",
        "l": "csfloat",
        "c": "buff163"
      }
    },
    {
      "t": 1773776700,
      "o": 1748,
      "h": 2517,
      "l": 1434,
      "c": 1747,
      "v": 18,
      "q": 91342
    }
  ]
}
```

### Response fields

<ResponseField name="t" type="integer">
  Unix timestamp in seconds for the start of the candle bucket.
</ResponseField>

<ResponseField name="o" type="integer">
  Open price — the lowest ask price at the start of the bucket, in minor units.
</ResponseField>

<ResponseField name="h" type="integer">
  High price in minor units. Unusually high values are capped to reduce the impact of outliers.
</ResponseField>

<ResponseField name="l" type="integer">
  Low price in minor units. The lowest ask observed across providers in this bucket.
</ResponseField>

<ResponseField name="c" type="integer">
  Close price — the lowest ask price at the end of the bucket, in minor units.
</ResponseField>

<ResponseField name="v" type="integer">
  Estimated trade volume for the bucket. Derived from inventory changes rather than reported sale counts.
</ResponseField>

<ResponseField name="q" type="integer">
  Total number of active listings at the end of the bucket. May be `null` for older `1d` windows.
</ResponseField>

<ResponseField name="providers" type="object">
  Identifies which provider contributed the open (`o`), high (`h`), low (`l`), and close (`c`) values for this candle.
</ResponseField>

### Data retention

| Interval | Retention |
| -------- | --------- |
| `5m`     | 7 days    |
| `1h`     | 30 days   |
| `1d`     | 365 days  |

<Note>
  Free and Starter accounts may only use `interval=1d`. The `fill`, `start`, and `end` parameters are not available on those tiers — use `lookback` instead.
</Note>

***

## GET /prices/history — Price history

Returns historical price records for one item, optionally filtered to a single provider. Results are ordered newest-first and use cursor pagination.

**Tiers:** Pro, Quant

<CodeGroup>
  ```bash cURL theme={"theme":"github-dark-default"}
  curl -sS \
    -H "Authorization: Bearer $CS2C_API_KEY" \
    "https://api.cs2c.app/prices/history?item_id=4994&provider=buff163&currency=USD&limit=50"
  ```

  ```python Python theme={"theme":"github-dark-default"}
  import os

  import cs2cap

  configuration = cs2cap.Configuration(access_token=os.environ["CS2C_API_KEY"])

  with cs2cap.ApiClient(configuration) as client:
      api = cs2cap.PricesApi(client)
      response = api.get_price_history(
          item_id=4994,
          provider="buff163",
          currency="USD",
          limit=50,
      )

  print(client.sanitize_for_serialization(response))
  ```

  ```typescript TypeScript theme={"theme":"github-dark-default"}
  import { Configuration, PricesApi } from "cs2cap";

  const accessToken = process.env.CS2C_API_KEY;

  if (!accessToken) {
    throw new Error("Set CS2C_API_KEY before running this example.");
  }

  const api = new PricesApi(new Configuration({ accessToken }));
  const response = await api.getPriceHistory({
    itemId: 4994,
    provider: "buff163",
    currency: "USD",
    limit: 50,
  });

  console.log(response);
  ```
</CodeGroup>

### Parameters

<ParamField query="item_id" type="integer">
  Filter by item ID. Takes precedence over `market_hash_name` and `phase` when provided.
</ParamField>

<ParamField query="market_hash_name" type="string">
  Exact item name as it appears in inventory.
</ParamField>

<ParamField query="phase" type="string">
  Doppler or Gamma phase filter. One of: `Phase 1`, `Phase 2`, `Phase 3`, `Phase 4`, `Ruby`, `Sapphire`, `Black Pearl`, `Emerald`.
</ParamField>

<ParamField query="provider" type="string">
  A single provider key, for example `provider=steam`. Returns records from that provider only.
</ParamField>

<ParamField query="start" type="string">
  Inclusive ISO 8601 timestamp. Accepts `YYYY-MM-DD` or `YYYY-MM-DDThh:mm:ss`. Defaults to the last 14 days when omitted.
</ParamField>

<ParamField query="end" type="string">
  Exclusive ISO 8601 timestamp.
</ParamField>

<ParamField query="currency" type="string" default="USD">
  Target currency. Accepts 200+ ISO 4217 codes.
</ParamField>

<ParamField query="limit" type="integer">
  Results per page. Range: 1–1000.
</ParamField>

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

### Response example

```json theme={"theme":"github-dark-default"}
{
  "meta": {...},
  "items": [
    {
      "item_id": 16828,
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "phase": "Phase 4",
      "provider": "CSFloat",
      "time": "2026-03-19T23:55:00Z",
      "price": 147150,
      "currency": "USD",
      "quantity": 169
    },
    {
      "item_id": 16828,
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "phase": "Phase 4",
      "provider": "Youpin898",
      "time": "2026-03-19T23:50:00Z",
      "price": 143200,
      "currency": "USD",
      "quantity": 668
    }
  ],
  "pagination": {...}
}
```

### Response fields

<ResponseField name="item_id" type="integer">
  Catalog item ID.
</ResponseField>

<ResponseField name="market_hash_name" type="string">
  Full item name.
</ResponseField>

<ResponseField name="phase" type="string">
  Doppler phase or `null`.
</ResponseField>

<ResponseField name="provider" type="string">
  Provider name for this record.
</ResponseField>

<ResponseField name="time" type="string">
  ISO 8601 timestamp of the price observation.
</ResponseField>

<ResponseField name="price" type="integer">
  Price in minor units of the response currency.
</ResponseField>

<ResponseField name="currency" type="string">
  ISO 4217 currency code for the returned price.
</ResponseField>

<ResponseField name="quantity" type="integer">
  Listing count observed at this timestamp.
</ResponseField>

<Note>
  `pagination.total` is always `-1` on this endpoint. Use `has_next` and `next_cursor` to paginate.
</Note>
