Bonhams Carpets, Rugs & Tapestries Auction Results Scraper
BUSINESSOTHER
Bonhams Carpets, Rugs & Tapestries Auction Results Scraper
Scrape sold lot results from the Bonhams Carpets, Rugs & Tapestries department. Extracts title, origin region, rug type, period, dimensions (imperial + metric), estimates, hammer price, sale date, location, provenance notes, and thumbnail URL.
What it does
The actor crawls the Bonhams auction platform using a three-level discovery architecture:
- Auction list — scans
/auctions/results/pages to discover past sales containing Rugs, Carpets & Tapestries lots - Sale page — processes each sale to enumerate lots; for dedicated RUG-department sales, all lots are crawled; for mixed-department sales, only RUG lots from the sale's server-rendered preview are included
- Lot detail — fetches each individual lot page and extracts structured data from the Next.js server-side rendered JSON (
__NEXT_DATA__)
Supported input modes
- Default (auction list scan) — scans up to 10 pages of auction results (240 past sales) for any that include the Carpets, Rugs & Tapestries department
- BYO sale IDs — provide specific Bonhams sale IDs (e.g.
["32361"]) to crawl directly, skipping the listing scan - BYO lot URLs — provide a list of Bonhams lot detail page URLs to scrape directly (fastest mode)
Input
| Field | Type | Description | Default |
|---|---|---|---|
maxItems |
integer | Maximum number of lot records to return | 100 |
lotUrls |
array | Direct Bonhams lot page URLs to scrape | — |
saleIds |
array | Bonhams auction sale IDs to crawl directly | — |
auctionPages |
integer | Number of auction list pages to scan (max 10, 24 sales/page) | 10 |
Output
Each record represents a single auction lot:
| Field | Type | Description |
|---|---|---|
lot_id |
string | Unique Bonhams lot identifier |
sale_id |
string | Bonhams auction sale ID |
sale_title |
string | Name of the auction sale |
sale_date |
string | Sale date (ISO format YYYY-MM-DD) |
sale_location |
string | Sale venue and city |
lot_number |
string | Lot number within the sale |
title |
string | Full lot title as catalogued |
origin_region |
string | Inferred geographic origin (Persia, Caucasus, Anatolia, etc.) |
rug_type |
string | Textile type: carpet, rug, runner, kilim, tapestry, sumak, bag-face |
design_pattern |
string | Dominant design vocabulary (medallion, herati, boteh, etc.) |
period_circa |
string | Period as catalogued ("late 19th century", "circa 1880") |
age_classification |
string | antique, semi-antique, or modern |
dimensions_imperial |
string | Dimensions in feet and inches |
dimensions_metric |
string | Dimensions in centimetres |
low_estimate |
number | Lower pre-sale estimate |
high_estimate |
number | Upper pre-sale estimate |
estimate_currency |
string | ISO currency code for estimates |
hammer_price |
number | Hammer price realised (null if unsold) |
sold_currency |
string | ISO currency code for hammer price |
is_sold |
boolean | True if the lot sold at hammer |
provenance_notes |
string | Provenance and special notices |
condition_notes |
string | Condition report text |
thumbnail_url |
string | Primary lot image URL |
lot_url |
string | Bonhams lot detail page URL |
Example output record
{
"lot_id": "2684312",
"sale_id": "25946",
"sale_title": "Fine Carpets and Rugs",
"sale_date": "2019-10-30",
"sale_location": "New Bond Street, London",
"lot_number": "25",
"title": "A very large Mahal carpet, North West Persia",
"origin_region": "Persia",
"rug_type": "carpet",
"design_pattern": "medallion",
"period_circa": "late 19th century",
"age_classification": "antique",
"dimensions_imperial": "",
"dimensions_metric": "638cm x 533cm",
"low_estimate": 3000,
"high_estimate": 5000,
"estimate_currency": "GBP",
"hammer_price": 4500,
"sold_currency": "GBP",
"is_sold": true,
"provenance_notes": "",
"condition_notes": "",
"thumbnail_url": "https://bonhams-assets.s3.amazonaws.com/...",
"lot_url": "https://www.bonhams.com/auction/25946/lot/25/..."
}
Notes
- Results are limited to the Carpets, Rugs & Tapestries department (Bonhams department code
RUG) - Mixed-department sales (e.g. Discovery Sales) include only the RUG lots visible in the sale's server-side rendered preview (up to 48 lots per mixed sale)
- Dedicated Carpets & Rugs sales enumerate all lots
- Hammer prices are only populated for sold lots; unsold lots have
hammer_price: null - Dimensions are extracted from the lot description text using pattern matching and may be incomplete for some older catalogue entries