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.
The allowances
A free key is 100 requests a day and resets at midnight UTC; the next day continues unchanged, with nothing to renew. Pro is 5,000 a day, Business is 25,000, and Enterprise is uncapped under fair use.
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1761264000| status | meaning |
|---|---|
| 200 | A normal answer. Check X-RateLimit-Remaining while you are here. |
| 400 | A parameter could not be parsed — a non-numeric yearFrom, for instance. |
| 401 | Missing or unknown key. Send it as the x-api-key header. |
| 404 SOLD_OR_REMOVED | From /car: the vehicle is gone from Encar. Drop it on your side. |
| 429 | Daily allowance spent. X-RateLimit-Remaining tells you before it happens. |
| 503 | The Korean source did not answer in time. Retry once, then fall back. |
Handling a sold car
This is the error worth writing code for. GET /car checks availability live, so a vehicle that has left Encar answers 404 with code SOLD_OR_REMOVED. Treat it as a signal to unpublish on your side rather than as a failure to retry — retrying will return the same 404 tomorrow.
HTTP/1.1 404 Not Found
{ "error": "SOLD_OR_REMOVED", "id": "38421907" }Get your API key
Free tier · 100 requests a day
Keep reading
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.
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.
One number a month, no per-call billing to forecast and no setup fee. The free tier is a real tier, not a trial that expires.