Read Korea's used-car market with the VIN on the record
The Encar API returns used-car listings from South Korea's largest car marketplace as clean JSON.
3 active endpoints, on 0 and 1 credit tiers.
- POST/encar/v1/search
- POST/encar/v1/detail
- POST/encar/v1/makes
What Encar endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Encar API
3 of 3 endpoints, ready to run
Live Korean listings with the price given twice — in manwon, the ten-thousand-won unit the market actually quotes, and in won — plus mileage in kilometres, year and month of registration, dealer region, fuel type and the inspection, warranty and diagnosis badges Encar puts on a car.
{ "ok": true, "meta": { "api": "encar", "endpoint": "search", "mode": "live", "latency_ms": 557.1, "record_count": 20, "cache_hit": false, "completeness_pct": 0.11 }, "data": { "cars": [ { "id": "42518643", "make": "BMW", "model": "X5 (G05)", "trim": "xDrive 40d M 스포츠 온라인 익스클루시브 에디션", "year": 2025, "year_month": "2025-07", "form_year": "2025", "mileage_km": 4600, "price_manwon": 13000, "price_krw": 130000000, "fuel_type": "디젤", "transmission": null, "ev_type": null, "green_type": "N", "region": "경기", "sell_type": "일반", "trust_flags": [ "HomeService" ], "condition_flags": [ "Inspection", "Record", "Resume" ], "service_marks": [ "EncarMeetgo", "EncarDiagnosisP0" ], "thumbnail": "https://ci.encar.com/carpicture10/pic4250/42509686_001.jpg", "photos": [ "https://ci.encar.com/carpicture10/pic4250/42509686_001.jpg", "https://ci.encar.com/carpicture10/pic4250/42509686_003.jpg", "https://ci.encar.com/carpicture10/pic4250/42509686_004.jpg" ], "url": "https://www.encar.com/dc/dc_cardetailview.do?carid=42518643" }, { "id": "42509686", "make": "BMW", "model": "X5 (G05)", "trim": "xDrive 40d M 스포츠 온라인 익스클루시브 에디션", "year": 2025, "year_month": "2025-07", "form_year": "2025", "mileage_km": 4600, "price_manwon": 13000, "price_krw": 130000000, "fuel_type": "디젤", "transmission": null, "ev_type": null, "green_type": "N", "region": "경기", "sell_type": "일반", "trust_flags": [ "Warranty" ], "condition_flags": [ "Inspection", "Record", "Resume" ], "service_marks": [ "EncarDiagnosisP0" ], "thumbnail": "https://ci.encar.com/carpicture10/pic4250/42509686_001.jpg", "photos": [ "https://ci.encar.com/carpicture10/pic4250/42509686_001.jpg", "https://ci.encar.com/carpicture10/pic4250/42509686_003.jpg", "https://ci.encar.com/carpicture10/pic4250/42509686_004.jpg" ], "url": "https://www.encar.com/dc/dc_cardetailview.do?carid=42509686" }, { "id": "41890704", "make": "BMW", "model": "3시리즈 (G20)", "trim": "320d", "year": 2019, "year_month": "2019-04", "form_year": "2019", "mileage_km": 79724, "price_manwon": 2309, "price_krw": 23090000, "fuel_type": "디젤", "transmission": null, "ev_type": null, "green_type": "N", "region": "경기", "sell_type": "일반", "trust_flags": [ "ExtendWarranty", "HomeService" ], "condition_flags": [ "Inspection", "Record", "Resume" ], "service_marks": [ "EncarMeetgo", "EncarDiagnosisP0" ], "thumbnail": "https://ci.encar.com/carpicture08/pic4188/41887727_001.jpg", "photos": [ "https://ci.encar.com/carpicture08/pic4188/41887727_001.jpg", "https://ci.encar.com/carpicture08/pic4188/41887727_003.jpg", "https://ci.encar.com/carpicture08/pic4188/41887727_004.jpg" ], "url": "https://www.encar.com/dc/dc_cardetailview.do?carid=41890704" } ] } }
How the Encar API works
Encar is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 184 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Price a Korean import you have no identifiers for
Encar's filters want Encar's own spelling, so a first integration does not start from a guess at a brand name. It starts from the directory, which needs nothing hard-coded.
{"car_type": "imported"}Every imported marque with its Korean name, its English name and its live listing count. Domestic Korean brands are a separate list under the other car_type.
{"make": "BMW", "sort": "price_asc", "size": 20, "page": 1}Twenty rows a page with price in both units, mileage, year-month and region. Send sort — without it the result set moves between identical calls.
{"id": "<id from a search row>"}The full VIN, the plate, the spec, the warranty terms and the dealer's description. Spend this only on the cars you actually want.
A priced, VIN-bearing slice of the Korean market from a marque name and nothing else. The VIN is what lets you join these rows to a history or valuation source you already have.
curl -X POST https://api.reefapi.com/encar/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"Hyundai","size":20}'{
"ok": true,
"data": { … },
"meta": {
"api": "encar",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Encar units, Korean enum values and the two different car ids
Encar is a Korean-language marketplace, and the API keeps its native units and vocabulary rather than translating them. The 만원 price unit and the pair of ids are the two places integrations get the numbers wrong. Every value below was read from live search, detail and makes calls on 2026-08-27.
| Field | Measured value | What it means |
|---|---|---|
| price_manwon | 2630 | The price in 만원 (10,000 KRW), the unit Encar itself uses. That is ₩26,300,000, not ₩2,630. |
| price_krw | 26300000 | The same price in won. price_manwon x 10,000 = price_krw held on every car sampled. |
| price_min / price_max | 1000 = ₩10,000,000 | The search filters are in 만원 too, not won. |
| origin_price_manwon | 4043 | The car's original list price when new, also in 만원 (₩40,430,000). detail only. |
| mileage_km | 93428 | Kilometres, as an integer. mileage_min and mileage_max are km as well. |
| year / year_month / form_year | 2017 / "2017-08" / "2018" | Model year, first-registration month, and the Korean 연식. form_year can be one year ahead of year. |
| fuel_type | "디젤", "가솔린", "가솔린+전기" | Korean strings for diesel, gasoline and gasoline+electric. The fuel filter still takes English keys. |
| make | "현대" (detail adds make_en "Hyundai") | search returns Korean only. detail adds make_en, model_group_en and grade_en. |
| transmission | null in search, "오토" in detail | Search rows returned null transmission on every car sampled; only detail resolves it. |
| id | search 41994544 -> detail 41991990 | Two different numbers for the same car. See the note below. |
The id a search row gives you is not the id detail answers with. Three cars checked on 2026-08-27: 41994544 came back as 41991990, 41543563 as 41543552, and 42033010 as 42032424. The detail id is the canonical one, matching the photo filenames and the carid in the URL detail returns. Pass the search id and detail resolves it correctly, but do not join search rows to detail rows on id. Store both.
One market, the price twice, and where the identity actually lives
Measured against the live gateway across four marques and three sort orders. Two of these go against us, and the first will silently corrupt a nightly sync.
The identical search run twice with no sort parameter shared ZERO of its twenty ids. Passed sort explicitly — price_asc or newest — the same query returned the same twenty ids both times, on both sorts. The schema names newest as the default; the source does not behave as though it has one. Always send sort, or you will diff two pulls and conclude the whole market turned over.
Every row carries price_manwon — the ten-thousand-won unit Koreans actually quote — and price_krw beside it. We divided the two on every row of four separate searches: the won figure is exactly the manwon figure times ten thousand, every time. No conversion, no rounding, and no second currency anywhere in the engine.
A detail record carries the complete 17-character VIN and the Korean registration number, next to displacement, colour, import type and the original list price. Search rows carry neither — they identify a car by listing id, make, grade and year. If you are joining to a history or valuation database, detail is the call that gives you the key.
Asked for the id a search row published, the record that came back carried a DIFFERENT value in its own id field — Encar's internal vehicle id rather than the advert id. Make, model, grade, year-month, mileage and price all matched the search row exactly, so it is the same car under a second identifier, but a pipeline that joins on the returned id will not find its own request. Join on the id you sent.
Pages 1, 50 and 200 of one marque shared zero ids with one another, twenty rows each, against a reported total of roughly eighteen thousand for that marque alone. Page one and page two of a sorted query likewise share nothing. This is real pagination, not a rotating first page.
The car_type filter is not cosmetic: Korean brands and foreign brands report their own totals, and the domestic pool is more than twice the imported one. The region field is the dealer's Korean province or city, in Korean, and the makes directory hands you both the Korean and the English spelling of every marque along with its live count.
An invented id answers NOT_FOUND with retryable false and the source's own 404 named in the message — not an empty list, not a block. That separates a car that has sold or been withdrawn from a transient failure, so a sync can close the row instead of retrying it forever.
first_advertised_at and modified_at come back on the detail record, with the view count and the number of people watching it. A car that has sat six weeks and been edited three times reads very differently from one listed yesterday, and you can tell without storing history yourself.
What people build with Encar
The jobs this data is most often used for.
endpoints
credits per call
Automotive pricing tools call search to track Korean used-car prices by make, model and mileage.
Dealer-intelligence products use detail to assess a specific listing's condition and spec.
Market analysts use makes and search to size supply and price ranges across the Korean market.
What Encar data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 184 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/encar/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"Hyundai","size":20}'import requests
r = requests.post(
"https://api.reefapi.com/encar/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"make": "Hyundai",
"size": 20
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Encar.
Get a free key →Does price_manwon 2630 mean 2,630 won?▾
No. 만원 is Korea's ten-thousand-won unit, so price_manwon 2630 is ₩26,300,000, roughly the price of a used Grandeur hybrid, which is what that car was. The API removes the guesswork by returning price_krw alongside it, 26300000 for that car, and the relationship price_manwon x 10,000 = price_krw held on every car sampled. The price_min and price_max search filters are in 만원 as well, so price_min 1000 means ₩10,000,000.
Why does detail return a different id than the one I sent?▾
Encar carries two numbers for one car: the advert id you get from search, and a canonical listing id used by the detail page, its URL and its photo filenames. Sending id 41994544 returned a record whose id was 41991990, with photos at .../41991990_006.jpg. The same happened with 41543563 to 41543552 and 42033010 to 42032424. detail resolves the search id correctly, so the calls work, but if you key a database on id you will fail to match the two responses. Store the search id as your request key and the detail id as the canonical one.
Why is transmission null in search results?▾
The search listing surface does not carry it. transmission came back null on every car in a live Hyundai search on 2026-08-27, even though transmission is a valid search filter. detail resolves it, returning the Korean value "오토" for automatic. So you can filter by transmission, automatic or manual, and get correct results, you just cannot read the value back off a search row. Call detail for the cars you care about.
Why are make, model and fuel_type in Korean?▾
Because they are Encar's own values, kept as-is rather than translated. A Hyundai search returned make "현대", models like "싼타페 DM" and "더 뉴 그랜저 IG 하이브리드", and fuel_type "디젤", "가솔린" and "가솔린+전기". The inputs are friendlier than the outputs: make accepts English names and translates them, and fuel takes English keys such as diesel, gasoline, hybrid and electric. model and trim are the exception and need the exact Korean string from a search result. detail also returns make_en, model_group_en and grade_en, so "현대" comes back with "Hyundai", "그랜저" with "Grandeur" and "르블랑" with "Le Blanc".
What do accident_record_available and seizing_count mean?▾
accident_record_available, accident_resume_available and inspection_available say whether that report exists for the car, not what it says. A car sampled on 2026-08-27 returned accident_record_available false with accident_resume_available true and inspection_available true, so false there means no such record is offered, not that the car is accident-free. seizing_count and pledge_count are the legal encumbrance counts, 압류 and 저당, and 0 for both is the clean case you want. status "ADVERTISE" means the advert is live.
What is the difference between year, year_month and form_year?▾
year is the model year as an integer, year_month is the first-registration month as "YYYY-MM", and form_year is the Korean 연식 returned as a string. They are not always the same: one car returned year 2017, year_month "2017-08" and form_year "2018". The year_min and year_max filters take a plain year, 2020, or a YYYYMM value, 202006, if you want month precision.
How do I find valid make values, and how much inventory does each have?▾
The makes action returns all 25 makes with live counts pulled from the search index, each with make, make_en, car_type and count. On 2026-08-27: Kia (기아) 52,357, Hyundai (현대) 52,149, BMW 17,874, Mercedes-Benz (벤츠) 16,438, Genesis (제네시스) 13,496, Audi (아우디) 4,622, Porsche (포르쉐) 3,221 and Tesla (테슬라) 1,475. car_type separates domestic Korean brands from imported ones and is also a search filter on its own.
What is origin_price_manwon useful for?▾
It is the car's original list price when new, in the same 만원 unit, so it gives you depreciation without a valuation dataset. A 2022 Grandeur hybrid returned origin_price_manwon 4043 against price_manwon 2630, meaning ₩40.43M new and ₩26.3M now. It is a detail-only field; search rows do not carry it. Note that option_codes on the same record are 3-digit numeric strings, "001", "004", "005", rather than option names.
What is the Encar API?▾
Encar API is a ReefAPI endpoint group for encar It returns live JSON through POST requests under /encar/v1.
Is the Encar API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Encar calls use the same shared credit balance as every other ReefAPI engine.
Do I need an Encar login or account?▾
No login to Encar is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Encar data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Encar API use?▾
Encar actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Encar from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call encar actions with the same key, credit pool and JSON envelope used by normal REST requests.
35 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Encar, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-28.