Chrono24 Scraper – Incremental ⌚
Pricing
from $1.40 / 1,000 results
Chrono24 Scraper – Incremental ⌚
[⭐$2/1k] Scrape watch listings from Chrono24 with prices, images, shipping costs & seller details. 50+ Filters. Allows incremental scraping to save costs. Returns structured JSON/CSV for price tracking, market analysis & research.
Pricing
from $1.40 / 1,000 results
Rating
5.0
(2)
Developer
Epic Scrapers
Maintained by CommunityActor stats
2
Bookmarked
49
Total users
13
Monthly active users
17 days ago
Last modified
Categories
Share
Chrono24 Scraper: watch listings, prices, reference numbers and seller data
Chrono24 Scraper turns any Chrono24 search into a spreadsheet of watch listings. It is for dealers tracking the market, collectors hunting for a price, and anyone analyzing pre-owned luxury watches. Each row has the title, price in your currency, seller type and location, shipping cost, certification status and photos. Turn on details to add the reference number, year, case diameter, box and papers, description and the seller's name and rating.
- Search like on Chrono24. Use a free-text query (brand, model or reference) or filter by brand, model, price range, new or used, condition, box and papers, certified, movement, case size, material, dial color, year, seller type and seller country.
- Prices in 35 currencies. Chrono24 converts the prices, so they match what you see on the site in that currency.
- Sort the way you need. Relevance, newest first, price low to high, price high to low, popularity or savings.
- Optional details per watch.
detailaddsreferenceNumber,yearOfProduction,caseDiameter,scopeOfDelivery, full-size photos andsellername, rating and review count. - Incremental runs. On a paid Apify plan, set a
trackingIdand the actor skips listings it already returned for that ID. - Pay per listing, no subscription. No Chrono24 account, API key or proxy setup. Export to JSON, CSV, Excel or Google Sheets.
Scope: This actor exports search results. To get a message when a new watch is listed or a price drops, use Chrono24 Alerts.
What can you do with Chrono24 Scraper?
| Goal | How |
|---|---|
| Price a reference | Search the reference number and compare price by location.countryCode, sellerType and detail.yearOfProduction. |
| Find the cheapest listing | Set sortOrder to 1 (price low to high) and read price plus shippingCost. |
| Monitor new listings | Set sortOrder to 5 (newest first) and schedule the run, with a trackingId to skip known listings. |
| Compare dealers and private sellers | Filter by sellerType or read detail.seller.rating and detail.seller.reviewCount. |
| Build a market dataset | Collect up to 10,000 listings per run for a brand or style and load them into your BI tool. |
| Find complete sets | Filter specials for box and papers, then check detail.scopeOfDelivery. |
How it compares
| What you need | Chrono24 Scraper | Browser-based scrapers | Manual copy-paste |
|---|---|---|---|
| Speed and cost | Plain API requests, no browser | Slower, more compute | Hours per search |
| Filters | Brand, model, price, condition, movement, materials and more | Often query and price only | Whatever you click |
| Currency | 35 currencies, converted by Chrono24 | Usually the site's default | Whatever the site shows |
| Reference and seller data | Optional detail object | Varies | Open every listing |
| Price | Pay per listing | Pay per listing or per hour | Your time |
Quick start
- Click Try for free and sign in to Apify.
- Enter a Search query, for example
Rolex Daytona. - Keep Max listings at
10for a first run. - Click Start. When the run finishes, open the Output tab and export the data.
{"searchQuery": "Omega Seamaster 300","maxResults": 60,"currency": "EUR","watchTypes": "U","priceTo": 6000,"sortOrder": "1","enrichDetails": true}
Track Chrono24 prices over time with scheduled runs
Most of the value comes from running the same search again and comparing. Apify can run the actor for you on a schedule and send the results wherever you need them.
1. Save your input as a task
Open the actor, set your options, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
Common schedules:
| Use case | Frequency | Cron expression |
|---|---|---|
| Price tracking on a reference | Daily | 0 6 * * * |
| Catch new listings quickly | Every 6 hours | 0 */6 * * * |
| Market snapshots | Weekly (Monday) | 0 6 * * 1 |
| Hot references | Hourly | 0 * * * * |
3. Send the results to a spreadsheet
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:
4. Compare runs
Every row has listingId, price, currency and listingStatus, so runs are easy to join:
- Price changes:
priceperlistingIdbetween runs. - New listings:
listingIds that were not in the previous run. - Sold or removed:
listingIds that disappear, or whoselistingStatuschanges. - Dealer vs private: average
pricebysellerTypeover time. - Reference trends:
detail.referenceNumberanddetail.yearOfProductionto follow a specific model (withenrichDetailson).
Input reference
| Field | Type | Default | Effect |
|---|---|---|---|
searchQuery | String | "Rolex Daytona" | Free-text search: brand, model, reference or keywords. |
maxResults | Integer | 10 | Maximum listings, 1 to 10,000. Fetched 30 per request. The free Apify plan is capped at 10. |
enrichDetails | Boolean | false | Adds the detail object. One extra request per listing, so runs are slower. |
currency | String | "USD" | One of 35 currencies, for output prices and the price filters. |
sortOrder | String | "5" | "0" relevance, "1" price low to high, "5" newest, "11" price high to low, "15" popularity, "42" savings. |
priceFrom / priceTo | Integer | Empty | Price range in currency. |
watchTypes | String | Both | "U" used only, "N" new only. |
condition | String | All | New, Like new and unworn, Very good, Good, Fair or Incomplete. |
specials | Array | Empty | Box and papers ("102"), box only ("103"), papers only ("104"). |
certified | Boolean | false | Only listings with Chrono24 certification. |
manufacturerIds, models | String | Empty | Comma-separated Chrono24 brand and model IDs, for example 221 for Rolex. |
catalogCollectionId, catalogModelId | String | Empty | Narrow to a catalog collection or model variant. |
movementTypes, gender, waterproof | String | All | Movement, intended gender and water resistance. |
caseDiameter, year | String | Empty | A single value (40) or a range (36,42). |
functions, styles, caseMaterials | Array | Empty | Complications, watch styles and case materials. |
dialColor, braceletMaterial, braceletColor | Array | Empty | Dial and bracelet filters. |
sellerType, stockInfo, countryIds | String | All | Dealer, private seller or Chrono24 Direct; stock status; seller country codes such as CH,DE. |
trackingId | String | Empty | Added to every row. On a paid plan, listings already returned for this ID are skipped. |
In Apify Console, filters are drop-downs, so you don't need the IDs. To find a brand or model ID, run a search with enrichDetails on and read detail.manufacturerId.
Output
Results go to the run's default dataset. Export as JSON, CSV, Excel, XML or HTML.
A real row with enrichDetails on:
{"listingId": 46420748,"title": "Omega Constellation","subtitle": "Vintage Flat Dial Good Condition Serviced 04-2026.","price": 1367,"currency": "USD","listingUrl": "https://www.chrono24.com/omega/omega-constellation-vintage-flat-dial-good-condition-serviced-04-2026--id46420748.htm","mainImage": "https://img.chrono24.com/images/uhren/46420748-9lfecvxgqj2igapbqey4llmo-Square210.jpg","imageUrls": ["https://img.chrono24.com/images/uhren/46420748-9lfecvxgqj2igapbqey4llmo-Square210.jpg"],"location": { "city": "Antony", "countryCode": "FR", "countryName": "France" },"sellerType": "Dealer","certifiedStatus": false,"listingStatus": "Available","watchStockInfo": "InStock","badge": null,"shippingCost": { "amount": 59, "currency": "USD" },"detail": {"referenceNumber": "168.025","manufacturer": "Omega","model": "Constellation","subModel": null,"conditionNew": false,"yearOfProduction": "Unknown","caseDiameter": "34 mm","seller": { "name": "MS For Watches", "rating": null, "reviewCount": null }}}
The detail object also has manufacturerId, condition, scopeOfDelivery, description (HTML, cut at 5,000 characters), availability, sold, reserved, price, fullImageUrls and detailUrl. Details are shortened above.
Notes on fields
priceisnullfor "price on request" listings.shippingCostisnullwhen Chrono24 shows none.certifiedStatusistruewhen Chrono24 certification is included.sellerTypeisDealer,PrivateSellerorC24Direct.yearOfProductioncan be the text"Unknown".- Thumbnails in
imageUrlsare small;detail.fullImageUrlshas larger ones. trackingIdappears on each row (empty when not set).- If a detail request fails, the row is still saved without
detail.
FAQ
How many listings can I get?
Up to 10,000 per run, set with maxResults. On the free Apify plan, runs are capped at 10 listings. Chrono24 can have fewer matches than your limit. The log shows the total it reports.
How fast is it?
Search results are fetched 30 at a time. Details add one request per listing plus a short pause, so a run with details takes noticeably longer.
Why did I get few or no results?
Check the spelling of the query and loosen filters. Narrow combinations of brand, price, year and country can have no matches.
What does trackingId do?
On a paid plan, the actor remembers the listing IDs it returned for each trackingId and skips them next time. This is useful for scheduled runs that should only return new listings. It does not detect price changes. For that, and for notifications, use Chrono24 Alerts.
Do I need proxies, a Chrono24 account or an API key?
No. The actor doesn't log in and doesn't use your account.
Is it legal to scrape Chrono24?
The actor collects publicly visible listing data. Seller names are business names or logins. You are responsible for how you use the data, including Chrono24's terms and laws such as GDPR.
Can I get notified when a watch is listed or its price drops?
Yes, with Chrono24 Alerts, which sends Telegram, Discord or webhook messages.
Cost
This actor uses pay-per-event pricing, with no subscription. You pay per listing saved, plus a small start fee per run. The price per listing depends on your Apify plan:
| Apify plan | Per listing | Per 1,000 listings |
|---|---|---|
| Free | $0.0015 | $1.50 |
| Starter (Bronze) | $0.00145 | $1.45 |
| Scale (Silver) and above | $0.0014 | $1.40 |
Example runs on the free plan: 100 listings cost about $0.15 and 1,000 listings about $1.50. The Pricing tab lists all events, including the start fee and an "Additional detail" event, and always shows the current prices. Set a maximum cost per run to cap spending.
Related Actors
- Chrono24 Alerts: Telegram, Discord or webhook alerts for new watches and price drops.
Support
Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.
This actor is not affiliated with or endorsed by Chrono24 GmbH. "Chrono24" is a trademark of Chrono24 GmbH.