---
title: "The individual sold lots behind a comps answer, newest close first"
method: GET
path: "/api/v1/sold"
---

# The individual sold lots behind a comps answer, newest close first

`GET /api/v1/sold`

## Request

- Base URL: `https://bidprowl.com`
- URL: `https://bidprowl.com/api/v1/sold`
- Auth: HTTP bearer

Same sold definition as the comps engine (closed with a real hammer price), limited to lots with a close date. Pass exactly one of category (every plan), item or q (Pro / Pro+). q resolves like a comps title: a tracked item, then an item family, then a keyword match. Paginate with next_cursor.

## Query parameters

- `category` string
- `item` string
- `q` string
- `state` string
- `limit` integer
- `cursor` string

## Response `200`

A page of sold lots

- object
  - `data` SoldLot[]
    - `id` string, uuid
    - `title` string
    - `final_price_cents` integer: Hammer price, cents
    - `num_bids` integer
    - `end_date` string, date-time
    - `state` string, nullable
    - `city` string, nullable
    - `category` string
    - `source` string
    - `source_name` string
    - `bidprowl_url` string
  - `basis` object: What the lots were matched on: category, item, family or keyword
  - `state` string, nullable
  - `limit` integer
  - `next_cursor` string, nullable
  - `amounts_in` 'cents'

## Other responses

- `400`: Malformed query parameter.
- `401`: Missing, invalid or revoked API key.
- `403`: The key is valid but the plan does not include this data.
- `422`: Too broad to list in time; narrow it with state=.
- `429`: Per-minute burst limit or monthly quota exhausted. Read Retry-After, and RateLimit-* to self-throttle before you get here.
- `503`: The endpoint is at its concurrency cap. Nothing was charged; retry after Retry-After seconds.

---

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