Back to blog

How to Search Encar Listings with a REST API

June 2, 2026·XAPI Korea Team

Encar.com lists hundreds of thousands of used cars in South Korea, but it doesn't offer a public API. Anyone wanting that data has to scrape HTML, deal with Korean-only fields, and keep up with layout changes. XAPI Korea wraps Encar's current inventory in a clean REST API with optional English translation for supported fields, so this post walks through the one endpoint you'll use the most: GET /v1/search.

Authentication

Authenticated data requests such as /v1/search need an API key in the X-API-Key header. You get one free (500 requests/month across your account) the moment you sign up, no credit card required. Public discovery endpoints such as /v1/filters and /v1/makes do not require a key.

curl "https://api.xapikorea.com/v1/search?brand=hyundai&year_from=2020&price_max=30000000&limit=5&lang=en" \
  -H "X-API-Key: enc_your_key_here"

Filtering

/v1/search accepts the filters you'd expect from a car marketplace, all as query parameters:

ParameterExampleNotes
brandhyundai, bmw, mercedes-benzEnglish or Korean brand name
modeltucson, sonata
year_from / year_to2020 / 2024
price_min / price_max10000000 / 30000000Always in KRW
fuel_typegasoline, diesel, electric, hybrid, lpg
transmissionauto, manual
body_stylesuv, van, truck, sports carOnly these four body styles can be filtered through Encar's search category mapping
car_typeY (domestic) or N (imported)
is_accident_freetrueExcludes any car with recorded accident history
sortPrice, Mileage, Year, ModifiedDate (default)

Not sure what values are accepted for a given field? GET /v1/filters (no auth required) returns manufacturers, fuel types, transmissions, the exact searchable body styles and sort options. Its body_styles values are suv, van, truck and sports car; /v1/search returns 422 for other body styles.

Reading the response

{
  "total_count": 15234,
  "page": 1,
  "limit": 5,
  "results": [
    {
      "id": 40907726,
      "manufacturer": "Hyundai",
      "model": "Tucson",
      "badge": "Diesel 2.0 2WD Modern",
      "year": "202103",
      "mileage_km": 45000,
      "price_krw": 23500000,
      "fuel_type": "Diesel",
      "transmission": "Automatic",
      "location": "Seoul",
      "thumbnail": "https://ci.encar.com/.../001.jpg",
      "encar_url": "https://fem.encar.com/cars/detail/40907726"
    }
  ],
  "next_page": 2
}

next_page is null once you've reached the last page. That's a simple way to drive a "load more" button or a scraping loop without guessing at total pages up front.

Supported textual fields are translated to English by default (lang=en); pass lang=ko if you'd rather get the original Korean values back.

Identical search responses are cached for 60 seconds, so a listing change at Encar may take up to a minute to appear. Cached responses still consume one monthly request and are still subject to the normal per-minute rate limit.

Just counting, not listing

If you're building a filter UI and only need the result count (e.g. "1,204 cars found" next to a filter panel), GET /v1/search/count accepts brand, model, year_from, year_to, price_min, price_max, fuel_type, transmission, car_type and is_accident_free. It does not accept body_style, pagination, sorting or language controls. The response contains only the count rather than result rows.

A count request consumes one monthly request and one rate-limit slot, the same as a normal search request; a cache hit still counts. Count responses use the same 60-second cache duration as search responses.

Getting the full picture

/v1/search returns the fields you need for a results grid. For a single car's extended specifications, photo gallery and available inspection fields, fetch GET /v1/cars/{id}. That's covered in the next post.

Free plan gets you 500 requests/month across your account to try this out; Starter and Pro raise the ceiling to 10,000 and 100,000 with higher rate limits. See the pricing page or the full API reference for everything else the API exposes.