ImportOS · Docs
API reference

GET /v1/listings/search

Normalized search across listing sources

Normalized search across listing sources

Search by natural language (q) and/or structured filters. Combines the platform listings cache with a live fan-out to healthy sources (per-source timeout; a failing or blocked source is reported in errors[] and never fails the request). Results are deduplicated across sources and ranked. 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
qquerystringnoNatural-language query, e.g. "BMW X5 2019-2021 up to 35 000 EUR, diesel, under 150k km". Structured params below override what is parsed from q.
makequerystringno
modelquerystringno
year_fromqueryintegerno
year_toqueryintegerno
price_min_eurquerynumber | nullno
price_max_eurquerynumber | nullno
mileage_max_kmquerynumber | nullno
fuelquerystringnoComma-separated: petrol,diesel,hybrid,phev,ev,lpg,cng,hydrogen,other.
countryquerystringnoComma-separated ISO-3166 alpha-2 codes of the car location, e.g. DE,PL.
marketquerystringnoComma-separated: us,eu,cn,kr,ua,ge.
sourcesquerystringnoComma-separated source keys to restrict the search to (e.g. mobile_de,otomoto).
no_accidentsquery"true" | "false"noExclude salvage/rebuilt/flood titles.
limitqueryintegerno
livequery"true" | "false"notrue: also query healthy live sources (slower, bounded by a timeout). false: only the platform cache.

Responses

200

Normalized listings.

application/json · Schema: SearchListingsResponse

FieldTypeRequiredDescription
queryobjectyesThe structured query that was actually executed.
query.textstringno
query.makestringno
query.modelstringno
query.yearFromintegerno
query.yearTointegerno
query.priceMinobjectno
query.priceMaxobjectno
query.mileageMaxKmnumberno
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.markets"us" | "eu" | "cn" | "kr" | "ua" | "ge"[]no
query.countriesstring[]no
query.noAccidentsbooleanno
query.sourceKeysstring[]no
query.limitintegerno
query.pageintegerno
query_parser"structured" | "rules" | "llm"yesHow q was interpreted: structured (no q), rules (rule-based) or llm.
resultsobject[]yes
results[].sourceKeystringno
results[].externalIdstringno
results[].urlstring (uri)no
results[].titlestringno
results[].makestring | nullno
results[].modelstring | nullno
results[].trimstring | nullno
results[].yearinteger | nullno
results[].vinstring | nullno
results[].priceobjectno
results[].priceEurnumber | nullno
results[].priceType"fixed" | "current_bid" | "buy_now" | "estimate" | "unknown"no
results[].mileageKmnumber | nullno
results[].fuel"petrol" | "diesel" | "hybrid" | "phev" | "ev" | "lpg" | "cng" | "hydrogen" | "other" | nullno
results[].gearbox"manual" | "automatic" | "cvt" | "robot" | "other" | nullno
results[].drive"fwd" | "rwd" | "awd" | "4wd" | nullno
results[].body"sedan" | "hatchback" | "wagon" | "suv" | "crossover" | "coupe" | "convertible" | "minivan" | "van" | "pickup" | "truck" | "motorcycle" | "other" | nullno
results[].engineCcnumber | nullno
results[].powerKwnumber | nullno
results[].batteryKwhnumber | nullno
results[].colorstring | nullno
results[].damageobjectno
results[].titleStatus"clean" | "salvage" | "rebuilt" | "flood" | "junk" | "parts_only" | "certificate" | "unknown" | nullno
results[].locationobjectno
results[].market"us" | "eu" | "cn" | "kr" | "ua" | "ge"no
results[].sellerobjectno
results[].photosstring (uri)[]no
results[].auctionobjectno
results[].listedAtstring | null (date-time)no
results[].fetchedAtstring (date-time)no
results[].completenessnumberno
results[].detailsobjectno
results[].sourcesobject[]noAll sources where this car was found (deduplicated by VIN / photo / fuzzy match).
results[].scorenumbernoRank score 0..1 (data completeness, freshness, multi-source confirmation).
totalintegeryesNumber of deduplicated results before the limit was applied.
sourcesobjectyes
sources.cacheobjectyes
sources.liveobjectyes
errorsobject[]yesPer-source problems. A failing source never fails the whole search.
errors[].source_keystringno
errors[].code"timeout" | "blocked" | "failed" | "unhealthy" | "aborted"no
errors[].messagestringno
errors[].blocked_reasonstringno
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

502

FX provider unavailable.

application/problem+json · Schema: Problem

Example

curl -s "https://api.importos.app/v1/listings/search?q=BMW%20X5%202019-2021%20%D0%B4%D0%BE%2035000%20EUR%20%D0%B4%D0%B8%D0%B7%D0%B5%D0%BB%D1%8C&limit=5" \
  -H "Authorization: Bearer $IMPORTOS_API_KEY"

On this page