v1

latestOpenAPI 3.1.0Proprietary2026-08-061935150.4 KB
Market

Get time to sell for comparable vehicles

How long comparable listings stay on the market: a median days-on-market figure with 25th/75th percentiles. Derived from listing disappearance across scraped marketplaces — a listing unseen for 21+ days before its own source's latest crawl counts as sold, over a 12-month cohort window, with a floor of 30 delisted comparables behind every figure.

This is a market-liquidity signal, not a sales record. Delisting also captures withdrawn and expired ads, so the number reads as "how long this kind of car stays on the market", and any figure you surface to an end user should be framed that way.

Reading the three numbers. The distribution is right-skewed: a few cars sell almost immediately and a long tail lingers, so the median is not a countdown and the average would be worse. Quote medianDaysToSell as the typical wait, p25Days as the realistic fast case and p75Days as the slow case — a quarter of cars take longer than p75 and the tail beyond it is open-ended. The p25→p75 spread covers the middle half of the cohort and is typically 4-6x wide (a Škoda Octavia in CZ: 10 / 24 / 58 days), which is why publishing the median alone overstates how predictable the wait is.

Send point values for one concrete car: year, kw and mileage are widened server-side (±2 years, ±20%, ±25% respectively). When a cohort still holds fewer than 30 delisted comparables, filters are progressively relaxed (mileage, then kw, then year to ±4) before the request 404s; fuel is never relaxed. A 404 means the market genuinely lacks comparable delistings even after relaxation — an expected outcome for rare cars, carrying a hint naming the filter to drop, not an error to retry. The country list is deliberately narrower than /vehicle-valuation: a market also needs enough delistings and a fine enough crawl cadence to resolve a listing's lifetime.

get/time-to-sell

Query parameters

makestring required
Example:skoda

Vehicle manufacturer (case-insensitive). Common aliases are resolved for you (volkswagen → vw). Unlike /vehicle-valuation this is not restricted to a fixed catalogue — makes outside the valuation list are matched against the listing store directly.

modelstring required
Example:octavia

Vehicle model (case-insensitive). Matched as a base model — A6 and A6 Allroad are different cohorts; trim codes are folded to their series (320d → 3-series).

country'CZ' | 'SK' | 'PL' | 'UK' | 'US' | 'DE' | 'NL' | 'NO' | 'IT' | 'BE' | 'ES' | 'AT' | 'FR' required
Example:CZ

ISO 3166-1 alpha-2 market code. Tier 1 (high volume, healthy re-sighting): CZ, SK, PL, UK, US, DE. Tier 2 (viable but thinner): NL, NO, IT, BE, ES, AT, FR. NL figures resolve to roughly ±6 days because of the crawl interval.

yearinteger
Example:2018

Model year, from 1990 up to next calendar year (a later year is rejected with 400). Widened to ±2 years server-side; send the year of the actual car, not a range. No literal maximum is declared here because it moves every January.

kwinteger
Example:180

Engine power in kW. Widened to ±20% (at least ±15 kW) server-side.

mileageinteger
Example:120000

Mileage in km. Widened to ±25% (at least ±20,000 km) server-side.

fuel'petrol' | 'diesel' | 'electric' | 'hybrid' | 'lpg' | 'cng' | 'hydrogen'
Example:diesel

Fuel type (case-insensitive). Matched exactly and never relaxed.

Response

Days-on-market statistics for the cohort actually measured. If a filter had to be relaxed to reach the sample floor, the figures describe the relaxed cohort.

makestring required

The canonical make the cohort was resolved to — may differ from what you sent (aliases are resolved, e.g. volkswagen → vw)

modelstring required

Model actually queried, in normalized form — may differ from the request

countrystring required

Market the figures describe

medianDaysToSellinteger required

Median days on market: half of comparable listings left the market faster than this, half slower. The headline number, and the one to quote if you only quote one.

p25Daysinteger required

25th percentile — the fast quarter. A quarter of comparable listings were gone within this many days, so it reads as the realistic best case for a well-priced, well-presented car rather than a typical outcome.

p75Daysinteger required

75th percentile — the slow quarter starts here. Three quarters of comparable listings were gone by this point, and the remaining quarter took longer still (the tail is open-ended). Use it for the pessimistic case: p25→p75 is the range that covers the middle half of cars, and it is typically 4-6x wide, which is why the median is not worth publishing on its own.

Example response

{
  "make": "skoda",
  "model": "octavia",
  "country": "CZ",
  "medianDaysToSell": 24,
  "p25Days": 10,
  "p75Days": 58
}