docs

Encar API documentation

Three endpoints, one header, JSON out. Everything below is the complete reference — there is no second, paid tier of documentation.

Base URL

https://api.encar-api.com/api

Authentication

Send your key in an x-api-key header on every request. There is no OAuth step and no token to refresh. A missing or unknown key answers 401.

curl -H "x-api-key: avg_free_..." \
  "https://api.encar-api.com/api/cars?manufacturer=BMW&model=X5\
&fuel=diesel&priceTo=40000&sort=priceAsc&count=24"

The three endpoints

endpointwhat it does
GET /carsSearch listings with filters. Returns total, page, count and results[].
GET /car?id=One vehicle in full, with availability checked live at request time.
GET /countHow many listings match a filter set, without pulling them.

Reference

Each section opens here, and each heading is also a page of its own you can link to and bookmark.

Search parameters — GET /cars

Combine any of these on a single call. The answer carries total, page, count and results[], so you can paginate off total without a second request.

parameterwhat it does
manufacturerBrand, as Encar writes it: BMW, Hyundai, Kia, Genesis, Mercedes-Benz, Audi.
modelModel name, e.g. X5 (G05). Partial names match, and a generation name narrows further: model=The New Carnival returns that generation alone, not the whole nameplate.
qFree-text search across brand, model and badge. Aliases: keyword, search.
fueldiesel · gasoline · hybrid · electric · lpg.
transmissionautomatic · manual.
colorExterior colour.
seatsSeat count: 5, 7, 9. Several at once as seats=7,9. The two ends are ranges, not counts — 2 means two seats or fewer and 10 means ten or more, which is how the source files them. A car's own figure comes back as details.seats from /car.
yearFrom / yearToModel year bounds, as plain years: 2018, 2024.
mileageFrom / mileageToOdometer bounds in kilometres.
priceFrom / priceToPrice bounds in EUR — converted for you, not won.
sortpriceAsc or priceDesc. Left out, results come back newest first.
pagePage index, zero-based. Default 0.
countListings per page. Default 24, maximum 500.
Search parameters — GET /cars →

What a listing looks like

The data comes from a Korean source, so four of these fields are read wrong by default. Each one fails silently — your page renders, it is simply incorrect.

fieldmeaning
IdEncar listing id. Pass it to /car to get the full vehicle.
Manufacturer / Model / BadgeKorean source values. Badge is partly Korean — prefer the de / en block below.
de / enThe same car translated: manufacturer, modelGroup, model, badge, fuelType. Render these.
PriceIn units of 10,000 KRW. EUR ≈ Price × 6.7, so 4339 is about €29,070 — not €4,339.
YearYYYYMM, not a year: 201902 is February 2019. FormYear holds the plain "2019".
MileageKilometres, as an integer.
FuelTypeKorean. The translated value is in de.fuelType / en.fuelType.
Photo / Photos[]Relative paths. Prefix them with the image host; with Photo, append 001.jpg.
priceDropPresent when the seller cut the price: previousPrice, droppedAt.
powerPs / powerKwEngine output, where the trim is known.
OfficeCityStateWhere the car stands, as a Korean region name.
What a listing looks like →

Rate limits and errors

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, so you can see a limit coming rather than discover it.

statusmeaning
200A normal answer. Check X-RateLimit-Remaining while you are here.
400A parameter could not be parsed — a non-numeric yearFrom, for instance.
401Missing or unknown key. Send it as the x-api-key header.
404 SOLD_OR_REMOVEDFrom /car: the vehicle is gone from Encar. Drop it on your side.
429Daily allowance spent. X-RateLimit-Remaining tells you before it happens.
503The Korean source did not answer in time. Retry once, then fall back.
Rate limits and errors →

Get your API key

Free tier · 100 requests a day

Get access →