WatchCharts Scraper — Market Price & Reference avatar

WatchCharts Scraper — Market Price & Reference

Pricing

from $5.00 / 1,000 watch prices

Go to Apify Store
WatchCharts Scraper — Market Price & Reference

WatchCharts Scraper — Market Price & Reference

Scrape WatchCharts market and retail prices by reference or brand. One row is one watch, with collection, volatility rank, and risk score. No login.

Pricing

from $5.00 / 1,000 watch prices

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by WatchCharts or its affiliates. Data is read from publicly accessible brand, search, and model overview pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

WatchCharts scraper for public market prices. One row is one watch: reference, retail price, pre-owned market price, and the ranks printed on the model page (volatility, risk, sales volume). Search by reference, read a brand index, or open a model URL. Use it as a WatchCharts API alternative from Python, Node.js, cURL, or Apify MCP, and export the dataset as JSON.

Best for: dealers and pricing apps that need a current market price next to a reference number.

Suite

Chrono24 ScraperWatchCharts Scraper
Chrono24 Scraper — live dealer listingsWatchCharts Scraper ◄── you are here — market price and reference

When to use this Actor

  • A reference search — Put 126610LN in Search queries. The result list has no price, so the Actor opens each model page up to Maximum watches and saves the market price on that same row.
  • A brand index — Set Brands to Rolex or Patek Philippe for the first page of model cards.
  • A model overview — Paste a public model page URL. The row includes collection, dial color, and the percentile ranks.
  • Richer cards — Turn on Open model pages to add those ranks onto each listing card. That opens one extra page per watch and is still one saved row.

When not to use this Actor

  • Live dealer asks and shipping — Use the Chrono24 Scraper for listing cards. This Actor reads the public price index, not a marketplace checkout.
  • Full price history, forecasts, or appraisals — Those sit behind a member login. This Actor saves the prices and ranks shown on the public page.
  • A login session or private collection — No account, no collection export.

Key features

  • Market and retail price — Number, currency, the printed text, and the as-of date when the page shows one.
  • Reference and collection — Brand, model name, reference, and the related references on a model page.
  • Ranks — Market price, one-year performance, volatility, risk, sales volume, days on market, and tenure, as printed.
  • One charge per watch — A listing card and its optional model page are the same dataset row.

Input

FieldRequiredDefaultWhat it does
Search queriesNo—Reference or model text. One public search page each
BrandsNo—Brand index, such as Rolex
Page URLsNo—Brand, search, or model page
Maximum watchesNo25Stop after this many rows (cap 200)
Maximum pagesNo1Listing pages per search or brand (cap 5)
Open model pagesNooffAdd collection and ranks onto each card
ProxyNoResidential, GermanyOn by default. The public pages answer a normal browser. A datacenter IP is challenged before any card loads
{
"searchQueries": ["126610LN"],
"maxItems": 25,
"maxPages": 1,
"includeDetails": false
}

Output

FieldMeaning
brand, modelName, referenceName on the card or model page
collection, references, style, dialColorSpecs from a model page
marketPrice, marketPriceText, currency, marketPriceAsOfPre-owned estimate
retailPrice, retailPriceText, retailPriceAsOfAuthorized-dealer price when printed
marketRank, volatilityRank, riskScorePercentiles as printed
oneYearPerformance, salesVolumeRank, daysOnMarket, marketTenureMore percentiles from the model page
status, caseMaterial, caseSize, waterResistanceBadges on a listing card
imageUrl, urlImage and the public model URL
sourceUrl, scrapedAtPage that was read, and the run time in UTC
{
"recordType": "listing",
"query": "126610LN",
"brand": "Rolex",
"modelName": "Submariner Date",
"reference": "126610LN",
"marketPrice": 14250,
"marketPriceText": "€14,250",
"currency": "EUR",
"retailPrice": 9100,
"retailPriceText": "€9,100",
"status": "In Production",
"caseMaterial": "Steel",
"url": "https://watchcharts.com/watch_model/example/overview",
"sourceUrl": "https://watchcharts.com/watches/search?q=126610LN",
"scrapedAt": "2026-10-19T12:00:00Z"
}

Use cases

  • Price a reference before listing it, and keep the market price next to retail.
  • Read the first page of a brand index when you want every in-production card, not one URL.
  • Open a model page when you need the volatility rank and risk score, not only the price.
  • Hand the reference to the Chrono24 Scraper when you also want live dealer listings.

Integration examples

Replace APIFY_TOKEN. The slug below is the Store name.

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("crawloop/watchcharts-scraper").call({
searchQueries: ["126610LN"],
maxItems: 25,
maxPages: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("crawloop/watchcharts-scraper").call(run_input={
"searchQueries": ["126610LN"],
"maxItems": 25,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items))

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~watchcharts-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["126610LN"],"maxItems":25,"maxPages":1}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name crawloop/watchcharts-scraper.

Example prompts:

  • "Run WatchCharts Scraper for reference 126610LN and return brand, reference, market price, and retail price as JSON"
  • "Scrape the Rolex brand page with WatchCharts Scraper, maximum 25 watches, and list references under the market price"
  • "Run WatchCharts Scraper for 16610, then Chrono24 Scraper for the same reference and compare the market price with live listings"

Suite next step

After the market price, pull live dealer listings with the Chrono24 Scraper.

FAQ

What is one row? One watch. A search or brand card is one row. Opening the model page adds fields to that same row. It is not a second charge, and it is not one row per history point.

Does the price include the full chart history? No. The row keeps the current market price, the retail price, and the ranks printed on the public page. Multi-year history stays on the site for logged-in members.

Which currency is the price in? The currency printed on the page. currency is EUR, USD, or GBP when the symbol is one of those. marketPrice is the number without the symbol.

Do I need a login or a proxy? No login. Residential proxy is on by default because a datacenter address is challenged before the watch cards load. Turn Proxy off only for a local test.

How do I export the rows? The run writes one watch per dataset row. Download JSON, CSV, or Excel from that dataset, or read it with the Node.js, Python, and cURL examples.