---
title: "Sold-price range for a described item (full-market aggregate)"
method: GET
path: "/comps"
---

# Sold-price range for a described item (full-market aggregate)

`GET /comps`

## Request

- Base URL: `https://govauctions.app/api/v1`
- URL: `https://govauctions.app/api/v1/comps`
- Auth: HTTP bearer

## Query parameters

- `q` string, required
- `category` string
- `country` 'US' | 'UK' | 'CA' | 'AU' | 'DE' | 'FR'
- `state` string
- `include` 'comps'
- `limit` integer

## Response `200`

Comp range (p25/median/p75), with scope=state|national when a state was requested, and `comps` when include=comps. A miss carries `data: null` plus a `reason`: `insufficient_comps` (too few comparable sales yet — worth retrying as the archive grows) or `category_not_priceable` (the requested category can NEVER return a range — the body lists them in `excludedCategories`). A catch-all category such as `miscellaneous` is NOT refused: the label is dropped and the item is priced on its title alone, and the body then carries `requestedCategory` + `categoryDropped` next to the `category` we actually resolved, so check `category` and `confidence` before trusting that range. An `insufficient_comps` miss can still carry `categoryStats` (the whole category's p25/median/p75, when the item's category is clear) and `retryHint` (when `q` was a long listing title: retry with just the brand and model).

## Other responses

- `403`: Not in plan
- `429`: Monthly valuation allowance exhausted

---

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