Chrono24 API endpoint
Use Crawlora's Chrono24 dealer storefront API to extract supported public Chrono24 data as structured JSON. This page includes request parameters, cURL examples, response schema, error behavior, credit cost, and a Playground link for testing before integration.
/chrono24/dealerFetches one Chrono24 dealer/seller's public storefront page: business description, trust badge, average buyer rating and review count, lifetime watches-sold count, and their current listed inventory in the same shape chrono24-search returns. slug is found in a chrono24-search or chrono24-listing result's seller link; there is no separate dealer-discovery endpoint since dealer slugs are not a closed set Chrono24 publishes an index of. Developers commonly use this endpoint for data enrichment, monitoring, research dashboards, internal automation, and agent-native workflows that need repeatable structured public web data. Authentication uses the documented Crawlora headers, and usage is metered with the credit cost shown on this page.
Request parameters are generated from the active endpoint catalog. Required values must be sent before Crawlora can call the upstream public web data source.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | Yes | Dealer slug from a listing's seller link | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chrono24/dealer" \ -H "x-api-key: $CRAWLORA_API_KEY"
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
This endpoint is executed through Crawlora's managed scraping infrastructure.
- A malformed `slug` returns `400` before any upstream request is made. - A `slug` for a storefront Chrono24 no longer serves returns `404`. - `rating`/`review_count`/`watches_sold` are `0` when Chrono24 shows no reviews or sales yet for the dealer. Example response: ```json { "code": 200, "msg": "OK", "data": { "slug": "thetimelords", "name": "Time Lords", "url": "https://www.chrono24.com/dealer/thetimelords/index.htm", "description": "The Time Lords we are Jewelry Store/ Watch Dealers In Los Angeles Since 1978", "seller_badge": "Trusted Seller", "rating": 4.9, "review_count": 7, "watches_sold": 13, "listings": [ { "id": "52200001", "title": "Rolex Daytona", "subtitle": "2025 full set rose gold box papers", "price": 52000, "currency": "USD", "price_text": "$52,000", "seller_type": "Time Lords", "location": "US", "image_url": "https://img.chrono24.com/images/uhren/52200001-Square.jpg", "url": "https://www.chrono24.com/rolex/daytona--id52200001.htm" } ] } } ```
Crawlora does not silently return bad data when the upstream page cannot be used.
| Status | Common failure case |
|---|---|
| 400 | Invalid input or missing required parameter |
| 429 | Plan or endpoint rate limit exceeded |
| 500 | Internal execution error |
| 502 | Upstream platform failed, returned unusable HTML, or served a challenge page that could not be resolved |
When possible, Crawlora returns structured error context so your integration can retry, back off, or inspect the request.
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
{
"code": 200,
"msg": "OK",
"data": {
"slug": "thetimelords",
"name": "Time Lords",
"url": "https://www.chrono24.com/dealer/thetimelords/index.htm",
"description": "The Time Lords we are Jewelry Store/ Watch Dealers In Los Angeles Since 1978",
"seller_badge": "Trusted Seller",
"rating": 4.9,
"review_count": 7,
"watches_sold": 13,
"listings": [
{
"id": "52200001",
"title": "Rolex Daytona",
"subtitle": "2025 full set rose gold box papers",
"price": 52000,
"currency": "USD",
"price_text": "$52,000",
"seller_type": "Time Lords",
"location": "US",
"image_url": "https://img.chrono24.com/images/uhren/52200001-Square.jpg",
"url": "https://www.chrono24.com/rolex/daytona--id52200001.htm"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/chrono24.dealerResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chrono24.DealerResponse | No | ||||
| data.description | string | No | Description is the dealer's own free-text storefront blurb. | |||
| data.listings | array | No | Listings is the dealer's current inventory shown on their storefront page, in the same shape chrono24-search returns. | |||
| data.listings[].badge | string | No | Badge is a promotional badge Chrono24 shows on the card, e.g. "Popular" or "Promoted". Empty when the card carries none. | |||
| data.listings[].currency | string | No | Currency is the ISO-4217 currency code Price is denominated in. | |||
| data.listings[].id | string | No | ID is Chrono24's numeric listing id, parsed from the URL. | |||
| data.listings[].image_url | string | No | ImageURL is the listing's primary photo. | |||
| data.listings[].location | string | No | Location is the seller's country, e.g. "US". | |||
| data.listings[].price | number | No | Price is the numeric asking price. Zero when Chrono24 shows "Price on request" instead of a number. | |||
| data.listings[].price_text | string | No | PriceText is Chrono24's own formatted price string, kept alongside Price/Currency for a "price on request" or other non-numeric case. | |||
| data.listings[].seller_type | string | No | SellerType is Chrono24's own seller-badge text, e.g. "Private Seller" or a dealer's shop name. | |||
| data.listings[].subtitle | string | No | Subtitle is the listing's own free-text title line, e.g. "36 Rolex Datejust". | |||
| data.listings[].title | string | No | Title is the listing's brand + model line, e.g. "Rolex Datejust". | |||
| data.listings[].url | string | No | URL is the absolute listing-detail page URL, usable as the `path` input to Chrono24Listing. | |||
| data.name | string | No | ||||
| data.rating | number | No | Rating is Chrono24's own average buyer rating out of 5. Zero when the dealer has no reviews yet. | |||
| data.review_count | integer | No | ReviewCount is the number of buyer reviews Rating is based on. | |||
| data.seller_badge | string | No | SellerBadge is Chrono24's own trust badge for the dealer, e.g. "Trusted Seller". Empty when Chrono24 shows none. | |||
| data.slug | string | No | ||||
| data.url | string | No | ||||
| data.watches_sold | integer | No | WatchesSold is Chrono24's own reported lifetime sold-watch count. | |||
| msg | string | No | OK |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/chrono24/dealer" \
-H "x-api-key: $CRAWLORA_API_KEY"Crawlora is designed for responsible structured public web data workflows. Customers are responsible for using Crawlora in compliance with applicable laws, third-party rights, target-platform rules, and Crawlora terms.
Read Crawlora terms