Sales history
Recent marketplace sales, newest first. Filter by app_id and/or exact market_hash_name. Each row is one sold order line: the price paid in cents, the amount, and when it sold.
Authorization
apiKey API key generated from your account settings on the website. Send as Authorization: Bearer csd_....
In: header
Query Parameters
^[1-9]\d*$Value in
- "5"
- "10"
- "25"
- "30"
- "50"
- "100"
^[1-9]\d*$1 <= length <= 200Response Body
application/json
curl -X GET "https://example.com/public/v1/sales?page=string&limit=5"{ "sales": [ { "app_id": 1, "market_hash_name": "string", "price": -9007199254740991, "amount": -9007199254740991, "sold_at": "2019-08-24T14:15:22Z" } ], "metadata": { "total_pages": -9007199254740991, "total_items": -9007199254740991, "current_page": -9007199254740991, "current_limit": -9007199254740991 }}Average sale prices GET
Volume-weighted average sale price per item over the last 30 days, in cents, in one response with no pagination. This is the number to price a lister against: `average_price` is `sum(price * amount) / sum(amount)` across every sale of that item in the window, `sales` is how many separate sales made it up and `volume` how many copies changed hands. Thin items move on very few sales, so check `sales` before trusting an average. Refunded and failed orders are excluded, which is the one way this differs from `GET /public/v1/sales`. Optional `app_id` filter, worth passing since it cuts the payload to the game you trade. The whole set is built once and cached for 10 minutes; responses carry an `ETag`, so send it back as `If-None-Match` and you get a `304` when nothing has changed. `generated_at` is when the cached copy was built.
Delist POST
Takes your listings off the market and returns their items to your backpack. Send `listing_id` for one, or a `listing_ids` array of up to 50 — in bulk each is removed in its own transaction and every id comes back in `results` with `ok` and any `error`, in the order you sent them. The v1 equivalent was `ISales/ReturnItems`.