OrbTop

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:

  1. Auction list — scans /auctions/results/ pages to discover past sales containing Rugs, Carpets & Tapestries lots
  2. 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
  3. 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