# Bobaedream Used Cars Scraper (`bovi/bobaedream-usedcars-scraper`) Actor

Scrape Bobaedream (bobaedream.co.kr) used cars in Korea. Get price (KRW), year, mileage, fuel, transmission, plate number, seller phone, options, photos and description. Pay per result. No login needed.

- **URL**: https://apify.com/bovi/bobaedream-usedcars-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.64 / 1,000 used cars

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Bobaedream Used Cars Scraper

Collect publicly available **Bobaedream (bobaedream.co.kr)** used-car
listings in Korea as clean, structured records. Feed the actor a listing page
and/or direct vehicle detail pages; it returns one rich record per vehicle —
price, mileage, spec, plate number, seller phone, options and photos.

### Input

| field | description |
|---|---|
| `startUrls` | Bobaedream URLs to scrape. **Listing** pages (e.g. `https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20`) — the actor follows every detail link on them, plus pagination. **Direct detail** pages (e.g. `https://www.bobaedream.co.kr/mycar/mycar_view.php?no=2252344&gubun=K`) — scraped straight away. You can mix both. |
| `maxItems` | Cap on total vehicles returned (`0` = no cap). |
| `maxPagesPerListing` | Cap on paginated listing pages followed per start URL (`0` = no cap). |
| `proxyConfiguration` | Uses Apify Residential (Korea) by default — **no external proxy key needed**. |

### What you get (one record per vehicle)

| field | description |
|---|---|
| `sourceId` | Bobaedream listing number (`no=`) |
| `url` | detail page URL |
| `title` | vehicle title |
| `priceKrw` | asking price, in won (computed from the site's own 만원 units); `null` when the listing is price-on-request |
| `currency` | always `KRW` |
| `year` | model year |
| `mileageKm` | odometer reading |
| `fuel` | fuel type |
| `transmission` | e.g. automatic |
| `plateNumber` | vehicle registration plate — rare among Korean used-car neighbours |
| `sellerPhone` | seller contact number (real mobile or the site's own privacy-safe virtual number) |
| `region` | seller region, when disclosed |
| `options` / `optionCount` | fitted-equipment list actually equipped on this vehicle |
| `photos` / `photoCount` | gallery photo URLs |
| `description` | short vehicle summary |
| `viewCount` | listing view count |
| `scrapedAt` | UTC timestamp |

There is no VIN field — Bobaedream doesn't expose one; we don't invent it.

### How it works

Bobaedream is a plain server-rendered site with no bot defence detected, so
the scraper reads the page's own stable HTML structure directly: the basic
spec table (`th`/`td` label→value pairs), the price block, the plate-number
and view-count row, the equipped-options list (filtered against the site's
checkbox-`checked` marker, not its full master option catalogue), and the
photo gallery. This is resilient to cosmetic markup changes, unlike scraping
off hashed utility class names. Listing pages are parsed for their detail
links and the site's own page-number pager, which are then followed.
Requests use a residential proxy for reliable access; you only supply the
URLs.

### Pricing

Pay per result — you are charged once per vehicle record written to the
dataset. Compute runs on your own Apify account.

### Notes

This tool collects publicly available vehicle listing data for research and
aggregation.

# Actor input Schema

## `startUrls` (type: `array`):

Bobaedream URLs to scrape. Two shapes are accepted: (1) a listing page such as https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20 — the actor follows every detail link on it (and paginates, see Max listing pages); (2) a direct detail page such as https://www.bobaedream.co.kr/mycar/mycar_view.php?no=2252344&gubun=K — scraped straight away. You can mix both.
## `maxItems` (type: `integer`):

Maximum number of vehicle records to return across all start URLs. Set 0 for no cap. The default of 10 returns a first batch quickly.
## `maxPagesPerListing` (type: `integer`):

Maximum number of paginated listing pages to follow per listing start URL (each page carries ~20 vehicles). Set 0 for no cap. The default of 1 returns a first batch quickly.
## `proxyConfiguration` (type: `object`):

Proxy used to reach bobaedream.co.kr. Apify RESIDENTIAL (Korea) is recommended and used by default — no external proxy key required.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20"
  ],
  "maxItems": 10,
  "maxPagesPerListing": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}
````

# Actor output Schema

## `results` (type: `string`):

Dataset of scraped vehicle records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20"
    ],
    "maxItems": 10,
    "maxPagesPerListing": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "KR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/bobaedream-usedcars-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20"],
    "maxItems": 10,
    "maxPagesPerListing": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "KR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/bobaedream-usedcars-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20"
  ],
  "maxItems": 10,
  "maxPagesPerListing": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}' |
apify call bovi/bobaedream-usedcars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=bovi/bobaedream-usedcars-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bobaedream Used Cars Scraper",
        "description": "Scrape Bobaedream (bobaedream.co.kr) used cars in Korea. Get price (KRW), year, mileage, fuel, transmission, plate number, seller phone, options, photos and description. Pay per result. No login needed.",
        "version": "0.1",
        "x-build-id": "IJkepqYBOMU5Gnz4m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/bovi~bobaedream-usedcars-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-bovi-bobaedream-usedcars-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/bovi~bobaedream-usedcars-scraper/runs": {
            "post": {
                "operationId": "runs-sync-bovi-bobaedream-usedcars-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/bovi~bobaedream-usedcars-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-bovi-bobaedream-usedcars-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Bobaedream URLs to scrape. Two shapes are accepted: (1) a listing page such as https://www.bobaedream.co.kr/mycar/mycar_list.php?gubun=K&page=1&view_size=20 — the actor follows every detail link on it (and paginates, see Max listing pages); (2) a direct detail page such as https://www.bobaedream.co.kr/mycar/mycar_view.php?no=2252344&gubun=K — scraped straight away. You can mix both.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max vehicles",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of vehicle records to return across all start URLs. Set 0 for no cap. The default of 10 returns a first batch quickly."
                    },
                    "maxPagesPerListing": {
                        "title": "Max listing pages per start URL",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of paginated listing pages to follow per listing start URL (each page carries ~20 vehicles). Set 0 for no cap. The default of 1 returns a first batch quickly."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach bobaedream.co.kr. Apify RESIDENTIAL (Korea) is recommended and used by default — no external proxy key required.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "KR"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
