01 Guides

API docs: your first request in five minutes

apiauto.space is a JSON REST API: used-car catalogs of Korea (Encar), China (Che168) and US auctions (Copart, IAAI) in one record format.

South Korea (Encar) — more than 140,000 active cars; China (Che168) — more than 230,000; USA (Copart and IAAI) — more than 80,000. How the markets differ: data boundaries.

Base URL and schema

WhatValue
Base URLhttps://api.apiauto.space/v1
FormatJSON, UTF-8; times in ISO 8601 UTC
KeyX-API-Key — key and headers
Paginationby cursor: next_cursor of the previous page
Schemaopenapi.json · Swagger UI · Redoc

The integration cycle

  1. ImportCopy a market to your side: GET /v1/cars with the cursor, up to 100 cars per request.
  2. Poll the changesOnce an hour ask GET /v1/changes?since=…: new cars, removed cars and price changes.
  3. UpdateFetch new ones by GET /v1/cars/{id}, mark removed ones as sold. In detail: keeping a catalog in sync.

Quick start

  1. Open the bot and take a demo key: one day, 100 data requests, up to 20 cars per request, all three markets.
  2. Save the key in the APIAUTO_KEY environment variable: it is shown once.
  3. Send a request:
curl
curl -s "https://api.apiauto.space/v1/cars?market=kr&brand=Kia&limit=20" \
  -H "X-API-Key: $APIAUTO_KEY"

Ready clients exist: pip install apiauto-space — the Python library, npm i apiauto — the JavaScript and TypeScript library. Their code and Encar examples are on GitHub.

The answer is a page of cars and the cursor of the next page. One record looks like this (shortened: two photo links and the first raw fields):

GET /v1/cars/encar:43123480
{
  "id": "encar:43123480",
  "market": "kr",
  "source": "encar",
  "source_id": "43123480",
  "title": "2024 Volvo V60 Cross Country 2 Gen B5 Ultimate AWD",
  "brand": "Volvo",
  "model": "V60 Cross Country",
  "generation": "V60 Cross Country 2 Gen",
  "trim": "B5 Ultimate AWD",
  "year": 2024,
  "mileage_km": 33375,
  "fuel": "gasoline",
  "transmission": null,
  "engine_cc": null,
  "body_type": null,
  "color": null,
  "vin": null,
  "price": {
    "amount": "40900000.00",
    "currency": "KRW"
  },
  "price_usd": "30101.68",
  "location": {
    "country": "KR",
    "region": "Daegu",
    "city": null
  },
  "photo_count": 4,
  "listing_url": "https://fem.encar.com/cars/detail/43123480",
  "is_active": true,
  "first_seen_at": "2026-11-09T10:07:40.261677Z",
  "last_seen_at": "2026-11-09T10:07:40.261677Z",
  "disappeared_at": null,
  "updated_at": "2026-11-09T10:07:40.261677Z",
  "source_mode": "replica",
  "photos": [
    "https://api.apiauto.space/img/encar:43123480/1.jpg?exp=…&sig=…",
    "https://api.apiauto.space/img/encar:43123480/2.jpg?exp=…&sig=…"
  ],
  "raw": {
    "badge": "B5 얼티메이트 AWD",
    "has_vin": false,
    "form_year": "202405",
    "sell_type": "normal",
    "body_class": null,
    "office_city": "대구",
    "badge_detail": null,
    "has_accident": false
  }
}

Keep the key on your server. The API does not allow browser requests (CORS is off), and a key in page code is visible to every visitor.

Guides

Key and headersHow to send the API key in the X-API-Key header, where to keep it, how to rotate it and what the quota and rate-limit response headers mean.
Keeping a catalog in syncHow to import the Encar, Che168 or Copart and IAAI catalog with a cursor and keep it fresh from the change feed: new and removed cars and prices.
The car record and photosThe car record's fields, the same for Encar, Che168, Copart and IAAI: make, model, price, mileage, place, photos and raw; how the signed photo links work.
Quota and limitsWhat the quota counts — cars and events, not requests; the limits of the four plans, the monthly reset and the key after the paid period.
ErrorsThe error response body and HTTP codes from 400 to 503 with the error field: what each one means, what to do on 402, 429 and 503 and when to retry.
Data boundariesHow the Korea, China and USA data differ in the API: size, refresh, VIN, photos, what each source lacks and how to learn the age of a market copy.
Versions and changelogCompatibility rules within /v1: fields are only added, breaking changes will ship under /v2. What changed in the API, month by month.

Endpoints

GET /v1/cars Car catalogThe GET /v1/cars endpoint: filters by make, model, year, price and mileage, sorting, the cursor and sample answers with real Encar, Che168, Copart and IAAI cars.
GET /v1/cars/{id} Car by idThe GET /v1/cars/{id} endpoint: the full record of one Encar, Che168, Copart or IAAI car by an id like encar:…, including cars taken off sale within 14 days.
GET /v1/changes Change feedThe GET /v1/changes endpoint: new cars, cars taken off sale, price drops and rises with a percentage threshold — since a moment, with a cursor.
GET /v1/us/live Live US searchThe GET /v1/us/live endpoint: search Copart and IAAI lots at the auction data provider when a car is not in the copy. Pro and Max plans, a separate counter.
GET /v1/references/… ReferencesFree references: a market's makes and models with car counts, the allowed values of fuel, gearbox and body, and market freshness. They spend no quota.
GET /v1/usage Quota usageThe GET /v1/usage endpoint: the plan, its term, the period quota and how much of it is spent — in total and per market, live US search included. Free.
MoreWhat it doesQuota
GET /img/{id}/{n}.jpgA car photo by the signed link from the record.free
GET /healthzHealth: 503 when any market is past its freshness threshold.free