Core concepts
Cars, listings and IDs
A car is one physical vehicle. When the same vehicle is advertised on several sites, we merge those ads into one car with several listings. Price, mileage, photos and location belong to the listing; make, model and specs belong to the car.
Four kinds of ID appear in every response. They live in separate namespaces, so never pass one where another is expected.
Car ID
l_eCJb-8zB_XcJ-z6Y7oZWjwOpaque string at data.id. Use with /cars/{car_id}. Store it as text.Listing ID
42802955The source's own ad ID at listings[].external.id. Only unique together with its domain.Domain ID
55613The source site at external.domain.id. Enabled IDs come from /domains.Brand and model IDs
88 · 573Catalogue IDs at brand.id and model.id. Come from /brands and /models.- A car's
listingsis limited to your enabled sources, but can include several listings from the same site. Never assume the first listing is the one you asked for; match ondomain.idandexternal.id. - Missing or
nullmeans "not provided by the source", never zero or false. - The contract is additive. New fields can appear at any time; ignore what you don't use and don't fail on unknown keys.
hashis a SHA-256 of the car without timestamps. If it hasn't changed since your last sync, you can skip the update.
GET /cars/{car_id} · excerpt Live
{
"data": {
"id": "l_eCJb-8zB_XcJ-z6Y7oZWjw",
"vin": "wddhf0cb3ea952710",
"brand": { "id": 88, "name": "Mercedes-Benz" },
"model": { "id": 573, "name": "E-klasse" },
"listings": [
{
"external": {
"id": "42802955",
"domain": { "id": 55613, "name": "fem.encar.com" },
"url": "https://fem.encar.com/cars/detail/42802955"
},
"archived": false,
"price": { "price": 6390000, "currency": { "id": 81, "name": "krw" } },
…
},
{ …second listing of the same car… }
]
}
}