E-commerce & Marketplaces

Chrono24 API

The Chrono24 API returns luxury-watch marketplace data as clean JSON.

3 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary search endpoint returns listings with id, title, price, currency, URL, image and availability, plus an aggregate with low, high and total results, and you can browse and pull a detail. It is built for watch-price intelligence, resale tools and luxury-market analytics that need Chrono24 data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/chrono24/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "rolex submariner"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "chrono24",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3791.4,
    "record_count": 60,
    "bytes": 704319,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "limit_reached",
    "method": "ssr_ld_json",
    "pagination": {
      "page": 1,
      "has_more": true,
      "next_page": 2
    }
  },
  "data": {
    "listings": [
      {
        "listing_id": "45866799",
        "title": "Rolex Submariner Blue dial Watch Only 126619LB Preowned Automatic",
        "price": 35995,
        "currency": null,
        "url": "https://www.chrono24.com/rolex/submariner--blue-dial-watch-only-126619lb-preowned-automatic--id45866799.htm",
        "image": "https://img.chrono24.com/images/uhren/45866799-wf1w31ys5tgzxgj66evq9oiz-ExtraLarge.jpg",
        "availability": "InStock"
      },
      {
        "listing_id": "36274032",
        "title": "Rolex Submariner Date",
        "price": 9800,
        "currency": null,
        "url": "https://www.chrono24.com/rolex/submariner-date--id36274032.htm",
        "image": "https://img.chrono24.com/images/uhren/36274032-azv1bbbez4wn1a61u4igbj0j-ExtraLarge.jpg",
        "availability": "InStock"
      },
      {
        "listing_id": "46166872",
        "title": "Rolex Submariner Full set",
        "price": 13800,
        "currency": null,
        "url": "https://www.chrono24.com/rolex/submariner--id46166872.htm",
        "image": "https://img.chrono24.com/images/uhren/46166872-i7k05wa1equ3obexl5n3w74a-ExtraLarge.jpg",
        "availability": "InStock"
      }
    ],
    "aggregate": {
      "low_price": "7592",
      "high_price": "312700",
      "currency": "USD",
      "offer_count_on_page": "60",
      "total_results": 663832
    }
  }
}
Actions

What the Chrono24 API does

ActionDescriptionConcrete use caseKey params
searchSearch Chrono24 by free-text keyword (brand + model + reference, e.g. 'rolex submariner', 'omega speedmaster 3861'). Optional filters: price_min/price_max, condition (new/used), movement, year, sort. Paginated (~60/page). Returns listing cards with title, price, currency, condition availability, image and url.Pricing teams call search to search Chrono24 by free-text keyword (brand + model + reference, e.g.query, page, price_min, price_max, condition, ...
browseBrowse all listings for a brand (e.g. brand='rolex') or a brand+model (brand='omega', model='speedmaster'). Same filters and paginated card shape as search — the catalog-discovery surface for a whole brand or model family.Marketplace operators call browse to get browse all listings for a brand (e.g.brand, model, page, price_min, price_max, ...
detailFull watch listing by `url` OR `listing_id`: brand, model, reference number, price, currency, condition (+ condition text), year, movement, case material, case diameter, crystal, strap material, dial, gender, jewels, power reserve, scope of delivery, seller location, delivery estimate, description and all images.Catalog enrichment teams call detail to get full watch listing by `url` OR `listing_id`.url, listing_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/chrono24/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"rolex submariner"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.chrono24.search with {"query":"rolex submariner"}.
Use cases

Who uses this API and why

  • Watch-price tools call search to track the market range for a reference across dealers.
  • Resale and investment products use the aggregate low/high to value a specific model.
  • Luxury-market analysts use browse to monitor supply and pricing for a brand or collection.
FAQ

Questions developers ask before integrating

What is the Chrono24 API?

Chrono24 API is a ReefAPI endpoint group for chrono24 It returns live JSON through POST requests under /chrono24/v1.

Is the Chrono24 API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Chrono24 calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Chrono24 login or account?

No login to Chrono24 is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Chrono24 data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Chrono24 API use?

Chrono24 actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Chrono24 from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call chrono24 actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Chrono24 API a Chrono24 scraper?

It is the managed alternative to a DIY Chrono24 scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same chrono24 back as clean JSON.

Why does my Chrono24 scraper keep getting blocked?

Most Chrono24 scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / chrono24

Chrono24

Chrono24

base /chrono24/v13 endpoints
post/chrono24/v1/browse1 credit

Browse all listings for a brand (e.g. brand='rolex') or a brand+model (brand='omega', model='speedmaster'). Same filters and paginated card shape as search — the catalog-discovery surface for a whole brand or model family.

ParameterAllowed / rangeDescription
brandrequiredWatch brand to browse (rolex, omega, patek-philippe, audemars-piguet, tudor, cartier, ...).
modeloptionalOptional model/family within the brand (submariner, speedmaster, nautilus, ...).
page = 1optional1–100Result page (~60 listings per page). Page until meta.pagination.has_more is false.
price_minoptional0–Minimum price filter (in the listing currency, USD).
price_maxoptional0–Maximum price filter (in the listing currency, USD).
conditionoptionalnew · used · incompleteFilter by watch condition.
movementoptionalautomatic · manual · quartzFilter by movement type.
yearoptional1900–2030Filter to watches produced in this year.
sort = relevanceoptionalrelevance · price_asc · price_desc · newestResult ordering.
Try in playground →
post/chrono24/v1/detail1 credit

Full watch listing by `url` OR `listing_id`: brand, model, reference number, price, currency, condition (+ condition text), year, movement, case material, case diameter, crystal, strap material, dial, gender, jewels, power reserve, scope of delivery, seller location, delivery estimate, description and all images.

ParameterAllowed / rangeDescription
urloptionalFull Chrono24 listing URL (from a search/browse result).
listing_idoptionalChrono24 listing id (the number in --id<N>.htm). Provide url OR listing_id.
Try in playground →