Chrono24 API endpoint
Fetches one Chrono24 listing's full detail page: brand, model, reference number, price with currency and negotiability, condition, year of production, movement, case material and diameter, bracelet material, location, availability, seller type, photos, and the complete raw spec table Chrono24 itself shows (grouped by section: Basic Info, Caliber, Case, Bracelet/strap, Functions). path is the listing URL from a chrono24-search result's url field; Chrono24 has no lookup by numeric id alone.
/chrono24/listingQuery parameters:
path (required) — the listing URL or path from a chrono24-search
result's url field, e.g.
https://www.chrono24.com/rolex/datejust-36--id40700313.htm. Chrono24
has no lookup by numeric id alone; a listing's URL always carries its
own descriptive slug.Notable response behavior:
path that is not a chrono24.com URL, or carries no
--id<number>.htm listing marker, returns 400 before any upstream
request is made.path for a listing Chrono24 no longer serves (retired, sold and
removed, or otherwise invalid) returns 404.specs carries every label/value row from the listing's spec table, grouped by section, in addition to the top-level fields -- useful for fields the top-level shape does not cover, since Chrono24 varies which sections a given listing carries.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| section | 20 | Basic Info (9), Case (5), Bracelet/strap (3) and 2 more |
| label | 20 | “Brand” and 16 other values |
| value | 20 | “Rolex” and 16 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| path | string | Yes | Listing URL or path from a chrono24-search result's url field | https://www.chrono24.com/rolex/datejust-36--id40700313.htm | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chrono24/listing?path=https%3A%2F%2Fwww.chrono24.com%2Frolex%2Fdatejust-36--id40700313.htm" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "40700313",
"title": "Rolex Datejust 36 Rolex Datejust",
"url": "https://www.chrono24.com/rolex/datejust-36--id40700313.htm",
"brand": "Rolex",
"model": "Datejust",
"reference": "16014",
"price": 3900,
"currency": "USD",
"price_text": "$3,900 [Negotiable]",
"negotiable": true,
"condition": "Used (Very good) The item shows minor signs of wear, such as small, intangible scratches.",
"year": "1981 (Approximation)",
"movement": "Automatic",
"case_material": "Steel",
"case_diameter": "36 mm",
"bracelet_material": "White gold",
"gender": "Men's watch/Unisex",
"location": "United States of America, Alabama",
"availability": "Item is in stock",
"seller_type": "Private Seller",
"images": [
"https://img.chrono24.com/images/uhren/40700313-a.jpg"
],
"specs": [
{
"section": "Basic Info",
"label": "Listing code",
"value": "O8CK96"
},
{
"section": "Case",
"label": "Case diameter",
"value": "36 mm"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/chrono24.listingResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chrono24.ListingDetail | No | ||||
| data.availability | string | No | ||||
| data.bracelet_material | string | No | ||||
| data.brand | string | No | ||||
| data.case_diameter | string | No | ||||
| data.case_material | string | No | ||||
| data.condition | string | No | ||||
| data.currency | string | No | ||||
| data.gender | string | No | ||||
| data.id | string | No | ||||
| data.images | array | No | Images are the listing's photo URLs in display order. | |||
| data.location | string | No | ||||
| data.model | string | No | ||||
| data.movement | string | No | ||||
| data.negotiable | boolean | No | ||||
| data.price | number | No | ||||
| data.price_text | string | No | ||||
| data.reference | string | No | ||||
| data.seller_type | string | No | ||||
| data.specs | array | No | Specs is every label/value row from the page's own spec table, grouped by the section header Chrono24 shows above it (Basic Info, Caliber, Case, Bracelet/strap, Functions, ...). Included alongside the normalized fields above because Chrono24 varies which sections a given listing carries. | |||
| data.specs[].label | string | No | ||||
| data.specs[].section | string | No | ||||
| data.specs[].value | string | No | ||||
| data.title | string | No | ||||
| data.url | string | No | ||||
| data.year | string | No | ||||
| msg | string | No | OK |
| 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 |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/chrono24/listing?path=https%3A%2F%2Fwww.chrono24.com%2Frolex%2Fdatejust-36--id40700313.htm" \
-H "x-api-key: $CRAWLORA_API_KEY"