Bonhams API endpoint
Searches Bonhams lots across every auction, current and historical -- including sold/prices-realized lots -- optionally filtered by department, country, a GBP-normalized estimate price range, and/or a free-text query, in a caller-selected sort order. Without a query and without an explicit sort, results are ordered by most recently active sale date first.
/bonhams/lots/searchSearches Bonhams lots across every auction, current and historical — including sold/prices-realized lots — optionally filtered by department, country, a GBP-normalized estimate price range, and/or a free-text query, in a caller-selected sort order. Unlike Bonhams Auction Lot Listing, this endpoint does not require already knowing an auction id.
Query parameters:
q (optional) — free-text search across lot title, catalog description, and footnotes. Omit to browse the most recently active lots first.department (optional) — comma-separated department names, matched against Bonhams' own live department facet (e.g. Watches, Jewellery, Native American). Not a fixed enum — the set is large and changes over time.country (optional) — comma-separated country names, matched against the live country facet. Not a fixed enum.min_price_gbp / max_price_gbp (optional) — inclusive estimate price range, in GBP (converted from each lot's own sale currency, so a range works consistently across an international, multi-currency result set). Omit or 0 for no bound.sort (optional) — result order. Allowed values: relevance, recency, price_high, price_low, lot_number. Default: relevance when q is set, otherwise recency (most recently active sale date first).page (optional, default 1).per_page (optional, default 48, max 100).Response includes page, per_page, total (matching lots across all pages, which can be in the hundreds of thousands across Bonhams' full historical archive), total_pages, and results[]. Each lot uses the same shape as Bonhams Lot Detail — a status of SOLD with a nonzero hammer_price is a realized/prices-realized result. estimate_low_gbp/estimate_high_gbp are the GBP-normalized estimate the min_price_gbp/max_price_gbp/price_high/price_low params operate on, alongside the lot's own local-currency estimate_low/estimate_high.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| auction_id | 20 | |
| lot_number | 20 | 96 to 9,282, median 730 |
| title | 20 | Silver: (12), Silver (4), [SILVER.] (1) and 3 more |
| status | 20 | SOLD (13), BI (4), NEW (3) |
| department | 20 | |
| country | 20 | |
| currency | 20 | |
| estimate_low | 20 | 0 to 6,000, median 50 |
| estimate_high | 20 | 0 to 8,000, median 90 |
| estimate_low_gbp | 20 | 20 to 5,955.48, median 85 |
| estimate_high_gbp | 20 | 20 to 8,000, median 100 |
| sale_date | 20 | |
| auction_type | 20 | PUBLIC (17), ONLINE (3) |
| auction_status | 20 | FINISHED (17), READY (3) |
| auction_bidding_status | 20 | EN (17), IP (3) |
| image_url | 12 | images2.bonhams.com and 1 other host |
| slug | 20 | |
| url | 20 | bonhams.com |
| without_reserve | 20 | true in 0 of 20 |
| condition_report_available | 20 | true in 0 of 20 |
| hammer_price | 13 | 20 to 8,000, median 80 |
| hammer_premium | 13 | 23.5 to 9,400, median 96 |
| starting_bid_amount | 3 | 1,500 to 5,000, median 2,400 |
| symbols | 2 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Free-text search across lot title, catalog description, and footnotes | Rolex Submariner | |
| department | string | No | Comma-separated department names (not a fixed enum -- large, changes over time) | Watches | |
| country | string | No | Comma-separated country names (not a fixed enum -- live facet) | United States | |
| min_price_gbp | number | No | Minimum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no minimum. | ||
| max_price_gbp | number | No | Maximum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no maximum. | ||
| sort | string | No | Result order. Default: Typesense relevance ranking when q is set, otherwise recency (most recently active sale date first). Allowed values: relevance, recency, price_high, price_low, lot_number. | ||
| page | integer | No | 1-based page number, default 1 | ||
| per_page | integer | No | Results per page, default 48, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bonhams/lots/search?q=coffee&country=us&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Rolex Submariner",
"page": 1,
"per_page": 48,
"total": 725,
"total_pages": 16,
"results": [
{
"id": "31165-1001",
"auction_id": "31165",
"lot_number": "1001",
"title": "ROLEX | SUBMARINER, REF.116659SABR, A RARE LIMITED PRODUCTION 18K WHITE GOLD, DIAMOND, AND SAPPHIRE-SET WRISTWATCH WITH SWEEP CENTRE SECONDS, DATE, AND BRACELET",
"status": "SOLD",
"department": {
"code": "WAT",
"name": "Watches"
},
"country": {
"code": "US",
"name": "United States"
},
"currency": {
"iso_code": "USD",
"bonhams_code": "US$",
"symbol": "US$"
},
"estimate_low": 650000,
"estimate_high": 950000,
"estimate_low_gbp": 514500,
"estimate_high_gbp": 751500,
"hammer_price": 850000,
"sale_date": {
"datetime": "2026-06-10T18:00:00+00:00",
"timestamp": 1749578400
},
"auction_type": "ONLINE",
"auction_status": "CLOSED",
"url": "https://www.bonhams.com/auction/31165/lot/1001/rolex-submariner-ref116659sabr-a-rare-limited-production-18k-white-gold-diamond-and-sapphire-set-wristwatch-with-sweep-centre-seconds-date-and-bracelet/",
"without_reserve": false,
"condition_report_available": false
}
]
}
}Request schema
No body schema
Response schema
#/definitions/bonhams.lotSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bonhams.LotSearchResponse | No | ||||
| data.page | integer | No | ||||
| data.per_page | integer | No | ||||
| data.query | string | No | ||||
| data.results | array | No | Lot record, 38 fields: auction_bidding_status, auction_id, auction_status, auction_type, categories, condition_report_available, country, currency, department, estimate_high, estimate_high_gbp, estimate_low and 14 more. Described under Bonhams Lot Detail API. | |||
| data.total | integer | No | ||||
| data.total_pages | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bonhams/lots/search?q=coffee&country=us&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"