The Complete Developer Guide to Encar API: Querying 320,000+ Korean Cars with Python & Node.js
Step-by-step technical tutorial on querying South Korea’s largest automotive portal (Encar.com) using the Rinevo REST API with translated options and accident history.

Introduction to the Korean Automotive Domestic Market
South Korea's domestic vehicle market is one of the highest-velocity automotive hubs globally. Portals like **Encar (encar.com)**, **KB ChaChaCha**, and **K Car** list over 320,000 live dealer vehicles at any given time.
However, extracting reliable data directly from Encar presents three critical engineering challenges: 1. **Aggressive Anti-Bot Protection:** Datacenter IP ranges (AWS, GCP, DigitalOcean) are blocked instantly with Cloudflare Managed Challenges and custom Korean WAF signatures. 2. **Untranslated Domestic Options:** Manufacturer options are encoded in Korean domestic dealer slang (e.g., 통풍시트 for ventilated seats, 후측방 경보 for blind-spot monitoring). 3. **Complex Inspection Sheets:** Official structural frame inspection sheets (KIDI) are embedded in dynamic canvas / image overlays.
The **Rinevo API** normalizes this entire pipeline into a clean REST endpoint. In this guide, we will write runnable Python and Node.js scripts to search live inventory, filter by specifications, and retrieve normalized options.
1. Authentication & Base Endpoint
All requests require your Rinevo API key passed in the `X-API-Key` header:
X-API-Key: drx_live_your_key_hereBase URL: ``` https://api.rinevoapi.com ```
2. Searching Live Encar Inventory with Python
Here is a complete, runnable script using Python’s `requests` library to search 2022+ Hyundai Genesis G80 vehicles:
API_KEY = "drx_live_your_key_here" BASE_URL = "https://api.rinevoapi.com"
headers = { "X-API-Key": API_KEY, "Accept": "application/json" }
params = { "source": "encar", "brand": "Genesis", "model": "G80", "yearFrom": 2022, "fuel": "gasoline", "limit": 10, "page": 1 }
response = requests.get(f"{BASE_URL}/api/v2/vehicles/search", headers=headers, params=params) data = response.json()
print(f"Total matching listings: {data.get('total', 0)}")
for car in data.get("vehicles", []): print("--------------------------------------------------") print(f"ID: {car['id']} | {car['year']} {car['title']}") print(f"Price: KRW {car['price_krw']:,} (~USD {car.get('price_usd', 'N/A')})") print(f"Mileage: {car['mileage_km']:,} km | Fuel: {car['fuel']}") print(f"Frame Status: {'Accident-Free' if not car.get('has_accident') else 'Repaired'}") print(f"Photos: {len(car.get('images', []))} unwatermarked gallery URLs") ```
3. Resolving Full 68-Field Vehicle Specifications
When a buyer or client clicks on a specific car, query the detail endpoint using the vehicle ID:
// Node.js (Node 18+ native fetch)
const API_KEY = "drx_live_your_key_here";async function fetchCarDetails() { const response = await fetch(`https://api.rinevoapi.com/api/v2/vehicles/${carId}`, { headers: { "X-API-Key": API_KEY, "Accept": "application/json" } });
const car = await response.json(); console.log("Vehicle Title:", car.title); console.log("Transmission:", car.transmission); console.log("Options (Normalized EN):", car.equipment_flags); console.log("Seller Location:", car.seller?.region_en); }
fetchCarDetails(); ```
4. Error Handling & Rate Limits
- **Starter Tier:** 100 requests / day (Zero charge, ideal for local testing).
- **Pro Tier:** 50,000 requests / month with sub-250ms latency SLAs.
- **Enterprise:** Unlimited parallel scraping with direct residential proxy tunnels.
Ready to Integrate the Live Korean Vehicle Feed?
Get an instant API key with 100 free requests per day. Full 68-point KIDI structural audits, translated options, and high-resolution photo carousels normalized into clean JSON.
