Encar Used Car Listings Scraper
Pricing
from $2.40 / 1,000 vehicle listings
Encar Used Car Listings Scraper
Export Encar used car listings from public search-page snapshots with Korean vehicle names, year, mileage, source asking prices and region for sourcing and downstream comparison.
Pricing
from $2.40 / 1,000 vehicle listings
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export Encar used car listings from public first-page search snapshots for Korean vehicle sourcing and asking-price comparisons. Supply Encar search URLs and receive unique vehicle IDs, source links, Korean model and trim names, registration/model years, mileage, raw asking-price values and regions.
This Actor collects only records exposed in each page's embedded search response. It does not crawl the full inventory, fetch vehicle details or maintain history. Use scheduled runs and your own database to compare snapshots over time.
Who is it for?
- Vehicle sourcing teams reviewing publicly advertised Korean stock.
- Automotive analysts comparing mileage, model year and source asking-price values.
- Data teams joining repeated exports by stable Encar vehicle ID.
Why use this Actor?
The output distinguishes registration YYYYMM from model year, preserves Korean vehicle labels, and removes duplicate IDs across normal and promoted search sections and across input URLs. It retains the original search URL so downstream analysts can trace the selection.
There is no browser or proxy configuration to tune. The Actor reads anonymous search-page state through Apify's automatic datacenter proxy selection for the running account (no private named group required) and fails visibly if the expected state or filter expression is missing. Residential proxies and browser fallbacks are not enabled. This is a bounded snapshot tool, not a completeness guarantee.
Get started
- Open a public Encar vehicle search on
car.encar.com/list/car. - Copy its first-page URL. The URL must use HTTPS and the supported
searchJSON described below. - Enter one to five URL objects under
startUrls, or omit the field to try the domestic-car example. - Set
maxItems(100 by default). - Run and inspect the default dataset. Download JSON, CSV, Excel or other dataset formats through Apify.
The smallest example is:
{"maxItems": 100}
An explicit domestic-car search:
{"startUrls": [{"url": "https://car.encar.com/list/car?page=1&search=%7B%22type%22%3A%22car%22%2C%22action%22%3A%22(And.Hidden.N._.CarType.Y.)%22%7D"}],"maxItems": 100}
Input parameters
| Field | Behavior |
|---|---|
startUrls | Array of 1–5 objects containing url only. Omitted: domestic-car example. An empty array is invalid. |
maxItems | Global unique-ID output cap, 1–1000 inclusive; default 100 when omitted; Console prefill 20 for a small first run. Zero/unlimited is unsupported. |
Only https://car.encar.com/list/car is supported. The URL may have one page parameter, which must be 1, and one search parameter. Search JSON must have type: "car" and a nonempty Encar action string up to 2000 characters. An optional sort: "MobileModifiedDate" is accepted, including when Encar adds it during redirection. Other search keys, sorting modes, URL parameters, fragments, credentials, ports, hosts and detail URLs are rejected rather than silently ignored.
Filters are interpreted by Encar, not by an Actor-side text matcher. The Actor verifies that returned search state uses the exact requested action expression. It does not build filter expressions, translate labels or apply additional local model/price filters. Domestic and imported-car actions were verified; arbitrary source filter semantics are not independently guaranteed.
What data is returned?
| Field | Meaning |
|---|---|
vehicleId, url | Vehicle ID and canonical Encar detail link; details are not fetched. |
sourceUrl | Original input search URL. |
manufacturer, model, modelGroup | Source vehicle labels, normally Korean. |
trim, trimDetail | Source Badge and BadgeDetail labels. |
registrationYearMonth | Unmodified numeric Year value, normally YYYYMM. |
modelYear | Numeric FormYear; distinct from registration date. |
mileageKm | Source mileage in kilometres. |
askingPriceSource | Raw, unscaled source Price number. |
priceUnit | Always null: price scaling has not been independently verified. |
region | Source OfficeCityState label, not a seller street address. |
fuel, transmission | Source text labels. |
scrapedAt | UTC extraction timestamp, not source listing-update time. |
Optional unavailable attributes are null. Identity and model must be present; malformed records cause a visible failure rather than a misleading incomplete export.
Example output
This representative record illustrates the current source shape; values change as inventory changes:
{"vehicleId": "42563709","url": "https://fem.encar.com/cars/detail/42563709","sourceUrl": "https://car.encar.com/list/car?page=1&search=%7B%22type%22%3A%22car%22%2C%22action%22%3A%22(And.Hidden.N._.CarType.Y.)%22%7D","manufacturer": "제네시스","model": "G80","modelGroup": "G80","trim": "3.3 GDI AWD","trimDetail": "프리미엄 럭셔리","registrationYearMonth": 201610,"modelYear": 2017,"mileageKm": 114719,"askingPriceSource": 1350,"priceUnit": null,"region": "경기","fuel": "가솔린","transmission": "오토","scrapedAt": "2026-10-28T07:11:49.731Z"}
Do not interpret 1350 as 1,350 KRW. The Actor deliberately does not multiply prices or label them as converted currency. Confirm the source's displayed price convention before performing monetary comparisons.
Coverage, ordering and limits
Normal search results are read first, followed by available premium and preferential sections. At verification time these exposed 200, 10 and 40 rows respectively. Those are observations, not guaranteed upstream limits. Duplicate IDs retain the first encountered record.
URLs are processed sequentially. maxItems applies after deduplication across the entire run; later URLs are not fetched once the cap is reached. If snapshots expose fewer matching unique rows, the dataset is smaller than the cap. Source match-count totals do not mean all those listings were collected. There is no automatic pagination and no exhaustive-inventory promise.
The Actor bounds transport retries and same-host redirects. It retries transient network faults, 429 and 5xx responses, but does not blindly retry permanent blocks. An unavailable page or changed state fails the run; a recognized fulfilled zero-match search may succeed with zero rows. If a later URL fails, earlier dataset rows remain partial and the failed run must not be treated as a complete export.
How much does it cost to export Encar used car listings?
Pay-per-event pricing consists of one $0.005 start event per valid run, plus an item event for each saved unique listing. Invalid input is rejected before the start event. Empty valid searches still incur the start event. Rejected or duplicate records have no item charge.
| Apify tier | Per listing |
|---|---|
| FREE | $0.0046 |
| BRONZE | $0.004 |
| SILVER | $0.00312 |
| GOLD | $0.0024 |
| PLATINUM | $0.0024 |
| DIAMOND | $0.0024 |
Example total run invoices, including the start event: BRONZE n=1 → $0.009; n=25 → $0.105; n=100 → $0.405. FREE n=100 → $0.465. This Actor adds no separate detail, history, photo or contact charges. Check the active pricing panel before running; platform limits and your account conditions still apply. A billing budget stop can yield fewer records than the requested collection cap.
Integrations and recurring comparisons
Schedule repeated runs with the same search input, export the default dataset and store each extraction timestamp. Join on vehicleId to compare observed price values, mileage or presence between snapshots. Absence from a bounded snapshot does not prove a vehicle was sold or removed.
Send rows to Google Sheets for sourcing review, a warehouse for cohort analysis, or an Apify webhook workflow for downstream processing. The Actor itself does not send alerts, maintain a previous-run cache, detect changes or perform export transactions.
API examples
Use an Apify API token through your environment, never in a public URL.
cURL
curl -X POST \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"maxItems":25}' \'https://api.apify.com/v2/acts/automation-lab~encar-used-car-listings-scraper/run-sync-get-dataset-items'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/encar-used-car-listings-scraper').call({ maxItems: 25 });const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 25 });console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/encar-used-car-listings-scraper').call(run_input={'maxItems': 25})print(client.dataset(run['defaultDatasetId']).list_items(limit=25).items)
Use with MCP
Select the stable Actor-specific subset:
claude mcp add --transport http apify \'https://mcp.apify.com?tools=automation-lab/encar-used-car-listings-scraper'
For Claude Desktop, Cursor and VS Code, use the equivalent HTTP-client configuration (authentication support depends on your client):
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/encar-used-car-listings-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Discover actual names and argument schemas with read-only tools/list. Actor selection also exposes run/storage helper tools; it does not expose exactly one tool. Example prompt: “Export up to 25 listings from this supported Encar search URL and show model, mileage, raw asking price and source link. Do not convert currency.”
For an authorized invocation, start once and retain the returned run ID and storage IDs. They are metadata, not result rows. A call-actor wait is at most 45 seconds (default 30). If nonterminal, follow the same run with get-actor-run using bounded 2/4/8-second backoff capped at 10 seconds and a 120-second total deadline. Set the client timeout above the selected wait plus transport margin. On a client timeout recover the known run, never restart to poll; if its ID is unknown, report uncertainty. At the deadline report pending with the run ID. Terminal failures may have partial rows, not a successful full result.
After success use get-dataset-items with the returned dataset ID, explicit offset, limit and fields. An example consumer budget is pages of 20 source rows, at most 100 rows and 64 KiB of serialized UTF-8 content admitted to model context, whichever comes first. Enforce the byte ceiling host-side, disclose omitted oversized content, track source offsets and report continuation offset and partial/truncated status. If your client cannot intercept oversized responses, do not claim a hard byte guarantee. Keep full downloads outside model context. These are consumer limits, not changes to Actor collection behavior. Tool discovery/caching behavior depends on the client; no numeric context-saving claim is made.
Source links and data interpretation
Always retain sourceUrl, url and scrapedAt when loading rows into another system. Recheck the linked public listing before a purchasing decision: a snapshot can be stale, promoted inventory can repeat, and an advertised price is not a completed-sale value. Model labels and region text are kept as supplied rather than translated or standardized.
Legality and responsible use
Use public listing data responsibly and comply with applicable laws and source terms. Public visibility does not grant unrestricted reuse or establish export eligibility. This Actor is independent of Encar and does not provide legal, valuation or vehicle-condition advice.
The runtime uses no AI or external data-enrichment service. No seller personal contacts, VINs, history reports, dealer photos or raw page bodies are emitted. Raw pages are processed in memory only; there is no cross-run cache or session store. Dataset and log retention follow your Apify storage settings; you control deletion of run storage. Company-managed diagnostic reports expire after 30 days. Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days.
FAQ and troubleshooting
Why are there fewer rows than requested? The cap is an upper bound. Each page exposes only a bounded snapshot; duplicates and smaller source results reduce the count.
Can I use page 2 or a URL with browser-only fragments? No. The Actor rejects unsupported pagination and fragments. Use a supported first-page URL; do not assume all browser filter states are encoded in a fragment-free URL.
Why did the run fail instead of returning zero rows? A permanent HTTP block, missing SSR state, changed action expression or malformed record is not an empty search. Check the run log and retry later only if the upstream condition changed. Report persistent failures with the run link, not credentials.
Can I fetch contacts, VIN or accident history? No. Those are outside this listing-snapshot contract.
Can I normalize the price? Only after independently confirming the source price convention. Keep raw values and priceUnit alongside your own conversion metadata.
Related marketplace workflows
For separate marketplace coverage, see Carzone Used Cars Scraper and Blocket Sweden Vehicle Listings. Their Irish and Swedish inventories do not replace Encar coverage. Join cross-market datasets only after independently reconciling source units and attributes.