OrbTop

Bob's Watches Pre-Owned Listings Scraper

ECOMMERCELEAD GENERATION

Bob's Watches Pre-Owned Listings Scraper

Scrapes certified pre-owned luxury watch listings from Bob's Watches — the largest US pre-owned Rolex dealer. Returns structured records including brand, model, reference number, price, condition, case material, and availability for listings across Rolex, Patek Philippe, Audemars Piguet, Omega, Cartier, and Tudor collections.

What it does

The scraper crawls Bob's Watches brand collection pages (e.g., /rolex/, /patek-philippe/) and extracts the full schema.org Product JSON-LD embedded in each listing card. Each page shows up to 45 watches; the scraper follows pagination automatically until maxItems is reached or the collection is exhausted.

No authentication, no CAPTCHA, no residential proxy required — the site serves complete product data in structured markup accessible via standard HTTP.

Use cases

  • Dealer arbitrage — compare Bob's Watches retail asks against Chrono24, grey-market, and other dealer listings by reference number
  • Insurance / appraisal comps — use price and condition fields as US certified retail reference data
  • Inventory monitoring — track availability changes on specific references by scheduling regular runs
  • Market research — analyze pricing trends across Rolex model lines, materials, and condition grades

Example output

{
  "listingId": "189935",
  "title": "Used Yellow Gold Rolex Daytona ref 116518 Champagne Dial",
  "brand": "Rolex",
  "model": "Daytona",
  "referenceNumber": "116518",
  "priceUsd": 45995,
  "condition": "UsedCondition",
  "caseMaterial": "Yellow Gold",
  "availability": "InStock",
  "productUrl": "https://www.bobswatches.com/used-yellow-gold-rolex-daytona-ref-116518-champagne-dial.html",
  "imageUrls": "https://www.bobswatches.com/images/zUsed-Rolex-Daytona-116518-SKU189935.jpg",
  "scrapedAt": "2026-06-11T03:53:46.848Z"
}

Input

Field Type Default Description
maxItems integer Maximum number of listings to return. Required.
brands array of strings ["rolex"] Brand collection slugs to scrape. Valid values: rolex, patek-philippe, audemars-piguet, omega, cartier, tudor. Pass an empty array to scrape all brands.

Example input

{
  "maxItems": 500,
  "brands": ["rolex", "patek-philippe"]
}

To scrape all available brands:

{
  "maxItems": 5000,
  "brands": []
}

Output fields

Field Type Description
listingId string Bob's Watches internal listing / SKU identifier
title string Full listing title
brand string Watch brand (Rolex, Patek Philippe, etc.)
model string Watch model line (Submariner, Daytona, Nautilus, etc.)
referenceNumber string Manufacturer reference number / MPN (e.g., 116610LN)
priceUsd number Listed retail price in USD
condition string Item condition — UsedCondition or NewCondition
caseMaterial string Case material or color (e.g., Stainless Steel, Yellow Gold)
availability string Stock status — InStock or OutOfStock
productUrl string Canonical listing URL on bobswatches.com
imageUrls string Pipe-separated list of product image URLs
scrapedAt string ISO-8601 scrape timestamp

Notes

  • The scraper respects Bob's Watches robots.txt crawl-delay directive and does not hammer the server.
  • Bob's Watches carries ~3,000–6,000 live listings across all supported brands. A full-catalog run with maxItems: 10000 and brands: [] will complete within the default timeout.
  • The referenceNumber field (MPN) is the key for cross-dealer arbitrage joins — it matches the standard Rolex reference format used by Chrono24, WatchBox, and other platforms.