ImportOS · Docs
API reference

GET /v1/catalog/search

Search the EU used-car catalogue (natural language and/or filters)

Search the EU used-car catalogue (natural language and/or filters)

Searches the continuously crawled catalogue of European listings (deduplicated across sites, prices in EUR, landed cost in Ukraine without delivery, deal score). Pass text (natural language) and/or structured filters; structured filters override what was parsed from text. Returns cards, the executed query, how text was understood and a link to the same search on the tenant public site catalogue. Requires scope read:listings.

  • Authentication: header Authorization: Bearer rv_live_... (API keys and scopes)
  • Required scope: read:listings
Descriptions of the operation, parameters and fields come from the OpenAPI specification (openapi.json).

Parameters

FieldInTypeRequiredDescription
textquerystringnoNatural-language query. Structured parameters below override what is parsed from text.
makequerystringnoComma-separated make slugs, e.g. bmw,audi.
modelquerystringnoComma-separated "<make>/<model>" slugs, e.g. bmw/x5,volkswagen/golf.
year_fromqueryintegerno
year_toqueryintegerno
price_from_eurqueryinteger | nullno
price_to_eurqueryinteger | nullno
mileage_from_kmqueryinteger | nullno
mileage_to_kmqueryinteger | nullno
power_from_kwqueryinteger | nullno
power_to_kwqueryinteger | nullno
fuelquerystringnoComma-separated: petrol,diesel,hybrid,phev,ev,lpg,cng,hydrogen,other.
gearboxquerystringnoComma-separated: manual,automatic,cvt,robot,other.
bodyquerystringnoComma-separated: sedan,hatchback,wagon,suv,crossover,coupe,convertible,minivan,van,pickup,...
drivequerystringnoComma-separated: fwd,rwd,awd,4wd.
colorquerystringnoComma-separated: black,white,grey,silver,blue,red,green,brown,beige,yellow,orange,other.
countryquerystringnoComma-separated lowercase ISO-3166 codes of EU catalogue markets, e.g. de,nl,be.
sellerquerystringnoComma-separated: dealer,private.
vatquerystringnodeductible (VAT reclaimable, net price available) and/or included (margin scheme).
posted_within_daysqueryintegerno
sortquery"relevance" | "newest" | "price_asc" | "price_desc" | "mileage_asc" | "year_desc" | "landed_asc" | "deal_score"no
localequery"uk" | "pl" | "en"noLanguage of chip labels.
pagequeryintegerno
page_sizequeryintegerno

Responses

200

Catalogue search result.

application/json · Schema: CatalogSearchResponse

FieldTypeRequiredDescription
queryobjectyesFilters that were actually executed.
query.qstringno
query.makestring[]no
query.modelstring[]no
query.yearFrominteger | nullno
query.yearTointeger | nullno
query.priceFrominteger | nullno
query.priceTointeger | nullno
query.mileageFrominteger | nullno
query.mileageTointeger | nullno
query.powerFrominteger | nullno
query.powerTointeger | nullno
query.fuel"petrol" | "diesel" | "hybrid" | "phev" | "ev" | "lpg" | "cng" | "hydrogen" | "other"[]no
query.gearbox"manual" | "automatic" | "cvt" | "robot" | "other"[]no
query.body"sedan" | "hatchback" | "wagon" | "suv" | "crossover" | "coupe" | "convertible" | "minivan" | "van" | "pickup" | "truck" | "motorcycle" | "other"[]no
query.drive"fwd" | "rwd" | "awd" | "4wd"[]no
query.colorstring[]no
query.country"de" | "at" | "nl" | "be" | "lu" | "fr" | "dk" | "se" | "no" | "fi" | "ee" | "lv" | "lt" | "pl" | "cz" | "sk" | "it" | "es"[]no
query.sourcestring[]no
query.sellerType"dealer" | "private" | "unknown"[]no
query.vat"deductible" | "included" | "unknown"[]no
query.withPhotosboolean | nullno
query.postedWithinDaysinteger | nullno
query.features"tow_hitch" | "heat_pump" | "panorama_roof" | "apple_carplay" | "android_auto" | "camera" | "camera_360" | "heated_seats" | "heated_steering" | "ventilated_seats" | "head_up" | "adaptive_cruise" | "navigation" | "keyless" | "electric_tailgate" | "leather"[]no
query.batteryFrominteger | nullno
query.batteryTointeger | nullno
query.sort"relevance" | "newest" | "price_asc" | "price_desc" | "mileage_asc" | "year_desc" | "landed_asc" | "deal_score"no
parsedobjectyesHow text was understood (null when no text was sent).
parsed.queryobjectyesCatalog filters (contract catalog-search). Prices are EUR, mileage km, power kW.
parsed.chipsobject[]yesWhat was understood, in reading order.
parsed.understoodbooleanyesAt least one filter (or a sort) was recognised.
parsed.method"rules" | "ai" | "ai_cache"yesrules — deterministic parser; ai — Claude (merged with rules); ai_cache — cached model parse.
parsed.demobooleanyestrue — no AI model is configured, the rule-based parser only (demo mode).
parsed.ai_skipped"not_configured" | "disabled" | "not_needed" | "rate_limited" | "budget_exhausted" | "timeout" | "error" | "invalid" | "refusal" | nullyesWhy the model was not used (null when it was).
parsed.ignoredstring[]yesWords that could not be turned into a filter.
parsed.unsupported_marketsstring[]yesMarkets outside the EU catalogue the query asked for (us, kr, cn ...): not searchable here.
parsed.price_originalobjectyesPrice as written in the query (before conversion to EUR at the ECB/NBU rate).
parsed.catalog_urlstring | nullyesPublic site catalogue page with these filters (null if not configured).
itemsobject[]yes
items[].idstringno
items[].slugstringno
items[].titlestringno
items[].makestringno
items[].makeSlugstringno
items[].modelstringno
items[].modelSlugstringno
items[].trimstring | nullno
items[].yearinteger | nullno
items[].firstRegistrationstring | nullno
items[].mileageKminteger | nullno
items[].powerKwinteger | nullno
items[].engineCcinteger | nullno
items[].batteryKwhnumber | nullno
items[].fuel"petrol" | "diesel" | "hybrid" | "phev" | "ev" | "lpg" | "cng" | "hydrogen" | "other" | nullno
items[].gearbox"manual" | "automatic" | "cvt" | "robot" | "other" | nullno
items[].body"sedan" | "hatchback" | "wagon" | "suv" | "crossover" | "coupe" | "convertible" | "minivan" | "van" | "pickup" | "truck" | "motorcycle" | "other" | nullno
items[].drive"fwd" | "rwd" | "awd" | "4wd" | nullno
items[].colorstring | nullno
items[].priceEurinteger | nullno
items[].netPriceEurinteger | nullno
items[].vat"deductible" | "included" | "unknown"no
items[].landedEurinteger | nullno
items[].dealScorenumber | nullno
items[].country"de" | "at" | "nl" | "be" | "lu" | "fr" | "dk" | "se" | "no" | "fi" | "ee" | "lv" | "lt" | "pl" | "cz" | "sk" | "it" | "es"no
items[].citystring | nullno
items[].sellerType"dealer" | "private" | "unknown"no
items[].photosstring (uri)[]no
items[].photoCountintegerno
items[].publicationsCountintegerno
items[].sourceKeysstring[]no
items[].firstSeenAtstringno
items[].lastSeenAtstringno
items[].listedAtstringno
items[].priceDropobjectno
items[].cloneCountintegerno
totalintegeryes
pageintegeryes
page_sizeintegeryes
catalog_urlstring | nullyesPublic site catalogue page with these filters.
freshnessobject[]yes
freshness[].sourceKeystringno
freshness[].lastCrawlAtstring | nullno
freshness[].healthstringno
took_msintegeryes

400

Invalid request parameters or body (code validation_error).

application/problem+json · Schema: Problem

401

Missing, malformed, unknown, revoked or expired API key (code unauthorized).

application/problem+json · Schema: Problem

403

The API key lacks the scope required by this endpoint (code insufficient_scope).

application/problem+json · Schema: Problem

429

Rate limit exceeded for the tenant plan (code rate_limited). Wait Retry-After seconds.

application/problem+json · Schema: Problem

503

The catalogue (search index) is not configured or unavailable.

application/problem+json · Schema: Problem

On this page