Chrono24 API endpoint
Searches Chrono24's luxury-watch marketplace by free-text keyword, or browses one brand's (optionally narrowed to one model's) current listings, returning result cards: title, price with currency, seller type, seller country, promotional badge, image, and the listing URL to pass to chrono24-listing. At least one of query or brand is required. Optional advanced-search filters (condition, used_or_new, case_material, dial_color, bracelet_material, movement_type, gender, watch_type, stock_info) narrow results further; each filter's accepted values are discoverable from chrono24-facets and echoed back in the response's filters field.
/chrono24/searchQuery parameters:
query (optional) — free-text keyword search, e.g. rolex submariner.
At least one of query or brand is required.brand (optional) — a brand slug from chrono24-brands. At least one
of query or brand is required.model (optional) — a model slug from chrono24-models (requires
brand).sort (optional) — result order. One of: relevance, price_asc,
price_desc, newest, popularity. Defaults to relevance.page (optional) — one-based result page. Defaults to 1.page_size (optional) — results per page. Chrono24's own UI offers
30, 60 or 120; other positive values are passed through
best-effort. Defaults to Chrono24's own default (60, observed live).condition (optional) — one of new, like_new_unworn, very_good,
good, fair, incomplete, no_details.used_or_new (optional) — one of new, used, no_details.case_material (optional) — one of aluminum, brass, bronze,
carbon, ceramic, gold_steel, gold_plated, palladium,
plastic, platinum, rose_gold, sapphire_crystal, silver,
steel, tantalum, titanium, tungsten, white_gold,
yellow_gold, no_details.dial_color (optional) — one of black, blue, bordeaux, bronze,
brown, champagne, gold, green, grey, meteorite,
mother_of_pearl, orange, pink, purple, red, silver,
skeletonized, turquoise, white, yellow, no_details.bracelet_material (optional) — one of alligator_skin, aluminium,
brass, calf_skin, ceramic, crocodile_skin, gold_steel,
gold_plated, leather, lizard_skin, ostrich_skin, plastic,
platinum, red_gold, rose_gold, rubber, satin, shark_skin,
silicon, silver, snake_skin, steel, textile, titanium,
white_gold, yellow_gold, no_details.movement_type (optional) — one of automatic, manual_winding,
quartz, solar, smartwatch, no_details.gender (optional) — one of mens_unisex, womens.watch_type (optional) — one of watches, parts_accessories.stock_info (optional) — one of in_stock, on_order, on_request.Every filter's accepted values (plus a live listing count for each) are
also obtainable from chrono24-facets, whose group param takes the
matching upstream group id: condition, usedOrNew, caseMaterial,
dialColor, braceletMaterial, movementType, gender, watchType,
stockInfo.
Notable response behavior:
total_count is Chrono24's own reported result count for the query,
including promoted listings mixed into the count.price/currency are 0/empty when Chrono24 shows a non-numeric price
such as "Price on request" instead of a number; price_text always
carries Chrono24's own formatted price string.sort value, an unknown brand, or an unrecognized
value for any filter param above, returns 400 before any upstream
request is made.filters echoes every filter param this call applied, keyed by its
query-param name; omitted entirely when no filter was set.| Field | In the sample | Value in the sample |
|---|---|---|
| query | Has a value | “submariner” |
| sort | Has a value | “relevance” |
| page | Has a value | |
| page_size | Has a value | |
| listings | Empty |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | No | Free-text keyword search, e.g. \ | rolex submariner | |
| brand | string | No | Brand slug from chrono24-brands. At least one of query or brand is required | rolex | |
| model | string | No | Model slug from chrono24-models (requires brand) | submariner--mod1 | |
| sort | string | No | Result order. One of: relevance, price_asc, price_desc, newest, popularity Allowed values: relevance, price_asc, price_desc, newest, popularity. | ||
| page | integer | No | One-based result page Minimum: 1. | ||
| page_size | integer | No | Chrono24's own default | Results per page. Chrono24's own UI offers 30, 60 or 120; defaults to Chrono24's own default | 60 |
| condition | string | No | Advanced-search filter, values from chrono24-facets group=condition Allowed values: new, like_new_unworn, very_good, good, fair, incomplete, no_details. | ||
| used_or_new | string | No | Advanced-search filter, values from chrono24-facets group=usedOrNew Allowed values: new, used, no_details. | ||
| case_material | string | No | Advanced-search filter, values from chrono24-facets group=caseMaterial Allowed values: aluminum, brass, bronze, carbon, ceramic, gold_steel, gold_plated, palladium, plastic, platinum, rose_gold, sapphire_crystal, silver, steel, tantalum, titanium, tungsten, white_gold, yellow_gold, no_details. | ||
| dial_color | string | No | Advanced-search filter, values from chrono24-facets group=dialColor Allowed values: black, blue, bordeaux, bronze, brown, champagne, gold, green, grey, meteorite, mother_of_pearl, orange, pink, purple, red, silver, skeletonized, turquoise, white, yellow, no_details. | ||
| bracelet_material | string | No | Advanced-search filter, values from chrono24-facets group=braceletMaterial Allowed values: alligator_skin, aluminium, brass, calf_skin, ceramic, crocodile_skin, gold_steel, gold_plated, leather, lizard_skin, ostrich_skin, plastic, platinum, red_gold, rose_gold, rubber, satin, shark_skin, silicon, silver, snake_skin, steel, textile, titanium, white_gold, yellow_gold, no_details. | ||
| movement_type | string | No | Advanced-search filter, values from chrono24-facets group=movementType Allowed values: automatic, manual_winding, quartz, solar, smartwatch, no_details. | ||
| gender | string | No | Advanced-search filter, values from chrono24-facets group=gender Allowed values: mens_unisex, womens. | ||
| watch_type | string | No | Advanced-search filter, values from chrono24-facets group=watchType Allowed values: watches, parts_accessories. | ||
| stock_info | string | No | Advanced-search filter, values from chrono24-facets group=stockInfo Allowed values: in_stock, on_order, on_request. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chrono24/search?query=coffee&sort=relevance&page=1&condition=new&used_or_new=new&case_material=aluminum&dial_color=black&bracelet_material=alligator_skin&movement_type=automatic&gender=mens_unisex&watch_type=watches&stock_info=in_stock" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"brand": "rolex",
"sort": "relevance",
"page": 1,
"total_count": 117628,
"listings": [
{
"id": "40700313",
"title": "Rolex Datejust",
"subtitle": "36 Rolex Datejust",
"price": 3900,
"currency": "USD",
"price_text": "$3,900",
"seller_type": "Private Seller",
"location": "US",
"badge": "Popular",
"image_url": "https://img.chrono24.com/images/uhren/40700313-Square.jpg",
"url": "https://www.chrono24.com/rolex/datejust-36--id40700313.htm"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/chrono24.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chrono24.SearchResponse | No | ||||
| data.brand | string | No | ||||
| data.filters | object | No | Filters echoes every advanced-search filter this call applied, keyed by its SearchOption field (snake_case) with the caller-supplied value, e.g. {"case_material": "steel"}. Omitted entirely when no filter param was set. | |||
| data.listings | array | No | ListingSummary record, 11 fields: badge, currency, id, image_url, location, price, price_text, seller_type, subtitle, title, url. Described under Chrono24 dealer storefront API. | |||
| data.model | string | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.query | string | No | ||||
| data.sort | string | No | ||||
| data.total_count | integer | No | TotalCount is Chrono24's own reported result count for the query, including promoted listings mixed into the count. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/search?query=coffee&sort=relevance&page=1&condition=new&used_or_new=new&case_material=aluminum&dial_color=black&bracelet_material=alligator_skin&movement_type=automatic&gender=mens_unisex&watch_type=watches&stock_info=in_stock" \
-H "x-api-key: $CRAWLORA_API_KEY"