Bobaedream Used Cars Scraper (Korea, new listing & price alert)
Pricing
from $8.40 / 1,000 car listing scrapeds
Bobaedream Used Cars Scraper (Korea, new listing & price alert)
Scrape Bobaedream (보배드림) cyber-store, Korea's dealer used-car listings, domestic and imported: price in won, mileage, year, fuel, dealer and region per car, newest first, labelled new, price_drop, price_rise or unchanged since your last run.
Pricing
from $8.40 / 1,000 car listing scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bobaedream Used Cars Scraper (Korean used cars, new listing & price alert)
Scrape the Bobaedream (보배드림) cyber-store - the dealer used-car showroom of one of Korea's biggest car communities, about 420 domestic and 1,900 imported cars for sale at any time - and get one flat row per car: the asking price in won (Bobaedream prints 만원; the actor converts), first registration year, mileage, fuel, horsepower and drivetrain, the region, the dealer, how many views the listing has, and the date it was listed.
Built as a new-listing and price feed for exporters, dealers and buyers of Korean used cars: schedule the same search every morning, newest first, and each row tells you whether the car is new since the last run, had a price drop or a price rise, or is unchanged. Turn on Only changes and you get - and pay for - just the new cars and the price moves.
What the store holds (measured 2026-10-27)
| domestic (국산차) | imported (수입차) | both | |
|---|---|---|---|
| rows in the date-ordered list | 7,551 (108 pages) | 20,843 (298 pages) | 28,394 (406 pages) |
| of which for sale | 424 | 1,878 | 2,302 |
| new listings a day | about 3 | about 9 | about 12 |
The store keeps every listing it ever held, dated back to 2021. Most rows of the default list are history - sold (팔림), expired (만료) or under contract (계약) - with no price. The actor drops sold and expired rows by default and stops reading once three pages in a row hold nothing for sale (the last for-sale car was on page 15 of 108 domestic, page 49 of 298 imported). Every sort except newest lists only the cars for sale, which makes it the cheapest way to take the whole current inventory: 7 pages domestic, 27 imported.
Input
| field | meaning |
|---|---|
market | domestic (국산차, default), imported (수입차) or all (both together) |
makers | Optional. Makers, one per line, English or Korean: Hyundai, Kia, Genesis, Toyota, Mercedes-Benz, 벤츠... Each maker is its own search sharing the maxItems budget. Names not in Bobaedream's maker list for the market are skipped and logged |
fuels | Optional. gasoline, diesel, lpg, gasoline_lpg, gasoline_cng, gasoline_hybrid, lpg_hybrid, diesel_hybrid, cng, electric, hydrogen, other. Several are OR-ed |
yearMin, yearMax | Optional car-year range (연식), as Bobaedream's own year filter counts it |
priceMin, priceMax | Optional price range in 만원 (3000 = 30,000,000 won). The site's price filter drops every listing with no price on file, including most imported cars listed as 상담 (ask the dealer): 0 to 999,999 keeps 5,691 of 20,843 imported rows |
mileageMin, mileageMax | Optional odometer range in km |
searchUrls | Optional. /cyber/CyberCar.php list URLs copied from your browser after you set filters on the site - model, grade, region, colour, options, body type. Every parameter is kept; page=3 starts on page 3. Single-car pages and other sites are skipped and logged |
sort | newest (default, 최근 등록순), price_asc, price_desc, year_newest, year_oldest, mileage_asc, mileage_desc. Everything but newest lists only cars for sale |
maxItems | Stop after reading this many listings in total, shared by every search, in order. Bobaedream shows 70 per page. For a feed this is the window watched: "the newest 100" |
registeredSince | Optional YYYY-MM-DD (Korean time). Skip listings registered before it; with the newest sort the run stops at the first older one, so a daily feed reads only the pages it needs |
includeSold | Off by default: sold and expired listings are dropped, not charged and not remembered |
changesOnly | Output only listings that are new or whose price moved since the previous run of the same search. Off by default |
proxyConfiguration | Apify datacenter proxy by default - see Proxy |
Paging walks ?page=1, ?page=2, ... and stops on the pager's last page,
when maxItems is reached, when a page brings no listing not already seen, or
(newest sort, sold dropped) after three pages with nothing for sale. Past the
last page Bobaedream answers 200 with the same total and no rows - no 404 - so
the actor stops on the empty page. There is no page cap.
Output
| field | meaning |
|---|---|
change | new, price_drop, price_rise or unchanged against the previous run of this search - see Change tracking |
listing_id, url, market | Bobaedream's listing number (785410), the detail page, and domestic or imported |
title | The full title as printed, Korean: maker, model, trim |
maker, maker_en, model | The maker the title starts with (현대 / Hyundai) and the rest of the title. maker is null when the title starts with a coach-builder's own name (e.g. 유니캠프); model is then the whole title |
subtitle | The dealer's one-line pitch |
price_krw | Asking price in won, a whole number: "1,250 만원" is 12500000 |
price_man_won | The same price as printed, in 만원: 1250 |
price_note, status | When the row prints a word instead of a price: 상담 ask the dealer (negotiable), 계약 under contract (reserved), 팔림 sold (sold), 만료 listing expired (expired), 렌트 for rent (rent), 운용리스 / 금융리스 lease (lease). With a price, status is available |
first_registration_year, first_registration_month, model_year | From the row's "YY/MM" and "(NN년형)". Month is null when the row prints 00 |
fuel, fuel_ko | English (gasoline, diesel, gasoline_hybrid, electric, lpg, hydrogen, ...) and as printed (가솔린+전기) |
mileage_km, mileage_unit | Odometer in km. Bobaedream prints it rounded ("15만km" is 150000, "9천km" is 9000); a few imported rows print miles (만ml) and are converted at 1.609344, mileage_unit: "mi" |
seats, cylinders, horsepower, torque_kgm, drivetrain, transmission | The spec chips under the title. transmission is manual only when the 수동 chip is shown |
badges, has_video | Tag chips as printed (튜닝카 tuned, 캠핑카 camper, 올드카 classic, 희귀차 rare, dealer-group names) and whether the photo has a video |
region, province, district | e.g. 대구 동구 / 대구 / 동구 |
registered_month_day, registered_date, views | When the dealer listed the car (10-26, and with its year 2026-10-26) and its view count when read. See Dates |
seller_name, seller_type, seller_type_ko, seller_id, seller_url | The dealer. seller_type is dealer (딜러) or private (개인), null for other tags such as 반복 (kept in seller_type_ko) |
image_url | Main photo |
query | The market (and maker) or search URL this row came from |
Everything is read off the list page - no detail page is opened - which is what keeps a row cheap.
Dates
Bobaedream prints a registration date as "10.26", with no year. The actor
counts the year down the list: the date-ordered list runs strictly newest to
oldest (walked end to end, 7,551 rows, no row newer than the one before it), so
the first row is this year's and the year drops by one each time the date jumps
back up (five times, back to 2021). That is exact on a newest-first walk
that starts at page 1, which is the default and what a feed does. On any
other walk - a price or year sort, a pasted URL starting on a later page - the
rows have no order to count in, so registered_date is null and
registered_month_day carries the date as printed. registeredSince needs the
newest sort for the same reason.
null is not zero
Every column except change, listing_id, url, market, title, status,
badges, has_video and query can be null, and is null whenever the row
simply does not print that value - never 0 or an empty string, because a 0
reads as a measurement. Measured over about 600 rows on seventeen pages
(2026-10-27):
price_krw,price_man_wonare null on rows with a word instead of a price (price_note); on imported page 1, 53 of 70 are 상담 (ask the dealer);mileage_kmis null for 미등록 (never registered);makeris null for coach-builders;fuelis null for a fuel word outside the mapped list (fuel_kostill carries it);- the spec chips are present on about 2 of 3 rows;
seller_*andregionare null on some sold rows, which Bobaedream prints without a seller block;seller_typeis null for the 반복 tag.
Change tracking
Each run remembers what it saw - listing id and price in won - in a named
key-value store on your account, bobaedream-used-cars-watch, one record
per search (the exact URLs fetched, so a different filter or sort is a
different search). The next run of the same search labels each car:
new- not seen by the previous run of this search;price_drop/price_rise- seen before, and the price moved;unchanged- seen before at the same price. A price unknown on either side (상담, 계약) is never a change.
The first run of a search has nothing to compare with, so every car is
new - the run log says "change tracking: first run". From the second run
on, the labels mean what they say.
With changesOnly on, unchanged cars are skipped: not in the dataset and not
charged. maxItems still bounds how many cars are read, so a run where nothing
changed reads your window and stops.
Proxy
Apify datacenter proxy is the default. Measured 2026-10-27 from inside Apify: 10 of 10 datacenter fetches of a results page returned HTTP 200 with all 70 listings (about 455 KB each). No refusal has been seen. If one does come back - a 403, 429 or 5xx, or a 200 without the result total - the actor switches to a new exit address and retries. A page still refused after the retries is logged as a failure and nothing is charged for it.
Billing
Pay per event: $0.0084 per listing row, plus a fixed actor-start fee per
run. Platform usage - compute and proxy - is included. A listing is charged at
most once per run, even when two of your searches both return it. Sold and
expired listings (unless includeSold) and, with changesOnly, unchanged
cars are not charged. A run that fails on its own input is not charged at all.
Limits
- This is the cyber-store (사이버매장), the dealer showroom, not
Bobaedream's separate
mycarprivate-seller list. - The store is small. About 2,300 cars are for sale at once and about 12 new ones appear a day, so a daily feed of the whole market is a dozen rows and a full inventory pull is one run of about 2,300.
- A page is about 455 KB for 70 listings (about 6.5 KB a listing when the page is full of cars for sale) whatever the filter, because Bobaedream sends its whole page chrome with every list; an empty page is still about 140 KB. The server sends no compression.
- Oldest-first (
order=S12) is not offered: it starts about 90 pages deep in sold history before the first car for sale. - New listings arriving while a long walk is running move older ones one slot down a page; the actor de-duplicates, so a car can be read twice but never charged twice.
makerandmodelare split from the Korean title by matching the maker names Bobaedream lists (plus the aliases its titles use: GM대우, 르노삼성, 쌍용, 도요타); a title starting with anything else keeps no maker.- The change label compares the price only. A new photo or a changed
pitch is
unchanged. - Bobaedream's refusal page has never been observed, so its classification is by elimination: anything without the result total is treated as a refusal and retried.