---
title: "Read market prices for cards by class id"
method: POST
path: "/v1/exchange.cardPrices"
tags: ["exchange"]
---

# Read market prices for cards by class id

`POST /v1/exchange.cardPrices`

Returns the current ask, realized sales, and book depth for each requested card class. Service-only.

## Request body

- ExchangeCardPricesRequestBody
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `classIds` integer[], nullable, required — Steam class ids to price. Cards, backgrounds and emoticons; anything else is omitted from the response

## Response `200`

OK

- ExchangeCardPricesResponseBody
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `cards` ExchangeCardPrice[], nullable, required — One entry per known item. A requested class with no catalogue row is omitted rather than returned priced at zero
    - `appId` integer, required — The app the card belongs to
    - `appImage` string, required — The app's image URL
    - `appName` string, required — The app's name, so a caller can label an item of a game it knows nothing else about
    - `classId` integer, required — Steam class id, the stable identity of the card
    - `firstSeenAt` integer, required — Unix ms when this card was catalogued — the release-date proxy for a new-card quote lockout. 0 means unknown
    - `gemsGoo` integer, required — Gems Steam grinds this card into; 0 means unknown
    - `highestBuyOrderCents` integer, required — Highest standing buy order in cents; real money committed for this card
    - `icon` string, required — Steam economy image hash
    - `isFoil` boolean, required — Foil side of the set
    - `kind` 'card' | 'background' | 'emoticon', required — What the item is. A background or emoticon is priced off gemsGoo, never off the market
    - `listed` integer, required — Active sell listings; a price backed by a handful of listings is one someone can move
    - `marketable` boolean, required — Steam marketable flag; the exchange rejects non-marketable cards
    - `medianSaleCents` integer, required — Median price this card actually sold at over the last 30 days, in cents; 0 means nothing sold
    - `name` string, required — Card name
    - `priceCents` integer, required — Current lowest Steam market ask in cents; 0 means no data, not free
    - `priceMax4d` integer, required — Highest sale price over the last 4 days, in cents; 0 means nothing sold
    - `priceMin4d` integer, required — Lowest sale price over the last 4 days, in cents; 0 means nothing sold
    - `saleDays30d` integer, required — Distinct days in the last 30 that saw at least one sale
    - `saleVolume30d` integer, required — Copies sold over the last 30 days
    - `sellOrders` integer, required — Sell orders on the item's order book

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `422` — Unprocessable Entity
- `500` — Internal Server Error

## Changes

> 24 revisions in range; 1 not diffed.

- **2026-09-05** `cf09a9e99a5a` — 4 info
  - added the required property `cards/items/appImage` to the response with the `200` status
  - added the required property `cards/items/appName` to the response with the `200` status
  - added the required property `cards/items/icon` to the response with the `200` status
  - added the required property `cards/items/kind` to the response with the `200` status
- **2026-09-05** `ac012ebc1fdf` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/steamsets/apis/steamsets-api/changes/v1/exchange.cardPrices/post.md)

---

[API](https://skmtc.dev/steamsets/apis/steamsets-api.md) · [All operations](https://skmtc.dev/steamsets/apis/steamsets-api/llms.txt) · [OpenAPI document](https://skmtc.dev/steamsets/apis/steamsets-api/revisions/cc0e4f2c3cfb?raw)
