Encar API & Scraper
The Encar API returns used-car listings from South Korea's largest car marketplace as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary search endpoint returns cars with id, make, model, trim, year, mileage in km, price in manwon and KRW, fuel type and transmission, and you can pull a detail and the makes tree. It is built for automotive pricing, dealer tools and Korean car-market analytics that need Encar data without a scraper. One ReefAPI key, one shared credit pool, the standard { ok, data, meta, error } envelope.
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.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/encar/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"make": "Hyundai",
"size": 20
}
}{
"ok": true,
"meta": {
"api": "encar",
"endpoint": "search",
"mode": "live",
"latency_ms": 1153.7,
"record_count": 20,
"bytes": 19917,
"cache_hit": false,
"completeness_pct": 0.04,
"stop_reason": "limit_reached",
"pagination": {
"page": 1,
"size": 20,
"has_more": true,
"next_page": 2
},
"total_results": 49709,
"charged_credits": 1,
"version": "1.0.0"
},
"data": {
"cars": [
{
"id": "41341562",
"make": "현대",
"model": "LF 쏘나타",
"trim": "2.0 스마트",
"year": 2015,
"year_month": "2015-08",
"form_year": "2016",
"mileage_km": 114327,
"price_manwon": 1090,
"price_krw": 10900000,
"fuel_type": "가솔린",
"transmission": null,
"ev_type": null,
"green_type": "N",
"region": "부산",
"sell_type": "일반",
"trust_flags": [
"HomeService"
],
"condition_flags": [
"Inspection",
"Record",
"Resume"
],
"service_marks": [
"EncarMeetgo",
"EncarDiagnosisP1"
],
"thumbnail": "https://ci.encar.com/carpicture03/pic4133/41333162_001.jpg",
"photos": [
"https://ci.encar.com/carpicture03/pic4133/41333162_001.jpg",
"https://ci.encar.com/carpicture03/pic4133/41333162_003.jpg",
"https://ci.encar.com/carpicture03/pic4133/41333162_004.jpg"
],
"url": "https://www.encar.com/dc/dc_cardetailview.do?carid=41341562"
},
{
"id": "42722047",
"make": "현대",
"model": "코나",
"trim": "1.6 터보 2WD",
"year": 2020,
"year_month": "2020-08",
"form_year": "2020",
"mileage_km": 69527,
"price_manwon": 1670,
"price_krw": 16700000,
"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",
"EncarDiagnosisP1"
],
"thumbnail": "https://ci.encar.com/carpicture01/pic4271/42719480_001.jpg",
"photos": [
"https://ci.encar.com/carpicture01/pic4271/42719480_001.jpg",
"https://ci.encar.com/carpicture01/pic4271/42719480_003.jpg",
"https://ci.encar.com/carpicture01/pic4271/42719480_004.jpg"
],
"url": "https://www.encar.com/dc/dc_cardetailview.do?carid=42722047"
},
{
"id": "42739724",
"make": "현대",
"model": "아반떼 AD",
"trim": "1.6 GDI 밸류 플러스",
"year": 2018,
"year_month": "2018-03",
"form_year": "2018",
"mileage_km": 51548,
"price_manwon": 1240,
"price_krw": 12400000,
"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",
"EncarDiagnosisP1"
],
"thumbnail": "https://ci.encar.com/carpicture03/pic4273/42737804_001.jpg",
"photos": [
"https://ci.encar.com/carpicture03/pic4273/42737804_001.jpg",
"https://ci.encar.com/carpicture03/pic4273/42737804_003.jpg",
"https://ci.encar.com/carpicture03/pic4273/42737804_004.jpg"
],
"url": "https://www.encar.com/dc/dc_cardetailview.do?carid=42739724"
}
]
}
}What the Encar API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search live Encar used-car listings by structured filters: make, model, trim, car_type (domestic/imported), fuel, transmission, region, price_min/max (in 만원 = 10,000 KRW), year_min/max and mileage_min/max. Sortable + paginated. Returns rich cards with price (native 만원 + KRW), year, mileage, fuel, transmission, region, trust/condition flags, thumbnail and photos. | Pricing teams call search to search live Encar used-car listings by structured filters. | make, model, trim, car_type, fuel, ... |
| detail | Full detail for one car by `id`: price (만원 + KRW), make/model/grade (Korean + English), year, mileage, displacement, transmission, fuel, color, seats, body type, options, warranty, inspection & accident-record availability, seizing/pledge counts, VIN (when public), all photos, view count, free-text description and the selling dealer's firm. Dealer personal data (name/phone/id/address) is redacted unless include_pii is set. | Marketplace operators call detail to get full detail for one car by `id`. | id |
| makes | Browse all Korean (domestic) and imported makes available on Encar, each with its live listing count. Use a returned make name with `search`'s `make` filter. Counts are pulled live from the search API (not a stale list). | Catalog enrichment teams call makes to get browse all Korean (domestic) and imported makes available on Encar, each with its live listin…. | car_type |
Call search from your stack
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"])const res = await fetch("https://api.reefapi.com/encar/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"make": "Hyundai",
"size": 20
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.encar.search with {"make":"Hyundai","size":20}.Who uses this API and why
- 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.
Questions developers ask before integrating
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. 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.