Chrono24 Scraper — Watch Prices & Last Ask
Pricing
from $1.50 / 1,000 watch listings
Chrono24 Scraper — Watch Prices & Last Ask
Scrape Chrono24 search: listingId, title, last ask, currency, status (in stock, sold badge, or removed). Chrono24 watch prices for dealers — not a sold archive and not an invented hammer. Public HTML only. RESIDENTIAL DE.
Pricing
from $1.50 / 1,000 watch listings
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
chrono24 scraper for chrono24.com: live watch listings with listingId, title, brand, lastPrice (last ask) and status. Built for dealers who need chrono24 prices, not a fake sold archive.
Chrono24 does not publish a sold archive. WristSignal-class tools use Reddit for that gap. Public search is InStock ads with last ask. This Actor returns those listings on Try it. If you paste a listing URL, it reports a sold badge or removed. Last ask is not an invented hammer (
priceKind=last_askunless the page shows a real sold price).
Table of contents
- What you get
- How it works
- Input
- Output
- Example input
- Use cases
- Proxy
- API quick start
- FAQ
- Limitations
- Keywords
What you get
Watch listing (last ask)
listingId,url(chrono24.com)title,brand,model(from the listing title)referencewhen that number appears in the title (many Chrono24 titles omit it)status:active|sold|removedlastPrice,soldPrice(only when a public sold price exists),priceKind(last_askorsold_price),currencyfirstSeenAt,lastSeenAt,sellerId,scrapedAt
This is chrono24 scraper / chrono24 prices output. It is not a Chrono24 sold archive.
How it works
| Step | Action |
|---|---|
| 1 | Open chrono24.com search / model page for your keyword (e.g. Rolex Submariner). |
| 2 | Read public JSON-LD offers (live InStock cards) and push last-ask rows when includeActive is on (default). |
| 3 | Optional: check listingUrls / listingIds / watchItems. |
| 4 | Open those listing pages. InStock = active. Sold badge or SoldOut JSON-LD = sold. Redirect to browse / gone = removed. |
There is no public showSold=true filter (query params are ignored). Seller Price analysis is login-only — this Actor does not scrape that wall.
Input
| Field | Required | Default | Notes |
|---|---|---|---|
keyword | One of keyword / URL / IDs | Rolex Submariner | Brand + model as on Chrono24 |
searchUrl | One of keyword / URL / IDs | — | Full search or model URL |
listingUrls | One of keyword / URL / IDs | — | Listing URLs a dealer would paste |
listingIds | One of keyword / URL / IDs | — | Numeric IDs of real listings — not probe dummies |
watchItems | No | — | Last-known cards (listingId, title, lastPrice, …) |
maxItems | No | 20 | 1–80 |
lookbackHours | No | 168 | Keep IDs between scheduled runs |
includeActive | No | true | On = last-ask listings (Try it). Off = sold-badge / removed only |
proxyConfiguration | No | RESIDENTIAL + DE | Keep DE (or your market) aligned |
Output
One row per listing. A hard block pushes one row with error: true and a message that names RESIDENTIAL + DE.
{"listingId": "12345678","url": "https://www.chrono24.com/rolex/rolex-submariner--id12345678.htm","title": "Rolex Submariner Date","brand": "Rolex","status": "active","lastPrice": 12500.0,"soldPrice": null,"priceKind": "last_ask","currency": "USD","scrapedAt": "2026-09-25T00:00:00Z"}
priceKind=last_ask means the number is the last public asking price, not a Chrono24 hammer. soldPrice is filled only when the public page shows a sold price.
Example input
{"keyword": "Rolex Submariner","maxItems": 15,"includeActive": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Use cases
- Grey-market dealers pricing a Rolex Submariner from chrono24 prices (last ask)
- Catalog / lead lists from Chrono24 search
- Closed-sale checks on listing URLs you already track (sold badge or removed)
Proxy
Chrono24 can challenge datacenter IPs. Default is Apify RESIDENTIAL, country DE. If you search a local chrono24.* market, set the proxy country to that market.
API quick start
apify call noahadler/chrono24-sold-comps --input '{"keyword": "Rolex Submariner","maxItems": 15,"includeActive": true}'
FAQ
Why is there no sold archive?
Chrono24 does not publish one. This Actor returns last-ask listings. Sold/removed is only a status on a specific listing URL.
Is soldPrice the hammer?
Only if priceKind=sold_price (rare on public HTML). Otherwise use lastPrice.
Can I hide live listings?
Set includeActive to false. Then you only get sold-badge / removed rows (often empty on a first run).
Limitations
- No public Chrono24 sold archive
- Seller-only Price analysis / login wall is not scraped (honest error; no WAF rewrite loop)
- Disappeared listing =
removed(sold or withdrawn).soldonly with a public sold badge / SoldOut JSON-LD - Do not invent hammer prices
- Do not pass dummy listing IDs (
1000,10000) — Try it uses keyword search
Keywords
chrono24 scraper · chrono24 prices · chrono24 watches · rolex chrono24 · chrono24 last ask