# Dabang Property Scraper (`bovi/dabang-scraper`) Actor

Scrape public Dabang room and officetel listing cards. Get displayed prices, card details, photos, and approximate coordinates. Run with place, category, and maxResults; no buyer API key or Dabang login. Pricing: $0.00315 per result + $0.00005 per Actor Start event.

- **URL**: https://apify.com/bovi/dabang-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.15 / 1,000 dabang property scrapers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Dabang Property Scraper for Korean Listings

Scrape public Dabang room and officetel listing cards by Korean district or neighborhood, including displayed prices, card details, neighborhoods, photos, and approximate map coordinates; no buyer API key or Dabang login is required. Live Free-plan pricing is stated in Pricing.

- Research Korean property inventory by neighborhood.
- Compare displayed prices, transaction types and card-level inventory across neighborhoods.
- Review area, floor, maintenance-fee text, photos, and approximate coordinates from cards.
- Choose rooms or officetels, set a unique-listing limit, and optionally configure an Apify proxy.

### What you get

Each returned listing becomes one dataset item. Fields are included only when the source card supplies the relevant value.

| Field | Type | Description | Availability |
|---|---|---|---|
| `listing_id` | string | Dabang listing identifier | Accepted cards |
| `listing_sequence` | integer | Source listing sequence | When numeric |
| `url` | string | Dabang listing URL | Each accepted card |
| `category` | string | Selected `one-two` or `officetel` category | Each result |
| `title` | string | Listing card title | Required for acceptance |
| `room_type` | string | Displayed room type | When supplied |
| `summary` | string | Card summary text | When supplied |
| `price_type` | string | Displayed transaction type | When supplied |
| `price_text` | string | Displayed transaction and price text in Dabang’s format | When supplied |
| `complex_name` | string | Complex name | When supplied |
| `district` | string | Neighborhood, or matched region as fallback | When available |
| `region_gid` | integer | Region identifier | When available |
| `floor_description` | string | First comma-separated part of the card summary (for example floor level) | When summary is present |
| `area_sqm` | number | Area in square metres | When present in summary |
| `maintenance_fee_text` | string | Maintenance-fee text from the summary | When present in summary |
| `location_lat` | number | Approximate latitude | When Dabang returns a map location |
| `location_lng` | number | Approximate longitude | When Dabang returns a map location |
| `photo_urls` | array of strings | Photo URLs from the listing card | When present |
| `is_panoramic` | boolean | Panoramic listing flag | When supplied |
| `is_quick` | boolean | Quick listing flag | When supplied |
| `is_direct` | boolean | Direct listing flag | When supplied |
| `is_naver_verified` | boolean | Naver-verified listing flag | When supplied |
| `is_lh_lease` | boolean | LH lease flag | When supplied |

### Sample output

The sample below is shortened to one real record and omits its optional photo, region, `floor_description`, maintenance-fee, and badge fields. The `170/170` value is Dabang’s own deposit/monthly-rent text.

```json
{
  "listing_id": "6acca72c322aa674568106f2",
  "title": "ㅡ 신축급 초대박 럭셔리 ㅡ 사이즈 좋은 투룸",
  "category": "one-two",
  "url": "https://www.dabangapp.com/room/6acca72c322aa674568106f2",
  "listing_sequence": 59346476,
  "room_type": "투룸 • 단기",
  "summary": "중층, 35.43m², 관리비 7만",
  "price_type": "월세",
  "price_text": "170/170",
  "district": "논현동",
  "area_sqm": 35.43,
  "location_lat": 37.5128063613262,
  "location_lng": 127.039165686633
}
```

### Pricing

The `apify-actor-start` event is charged once per GB of run memory, with a minimum of one event.

You pay only for the events listed below. This Actor does not use the Pay per event + usage option, so the platform usage of your runs (compute, proxy traffic and storage) is not billed to you separately.

Prices on the Free plan:

| Event | Unit | Free-plan price |
|---|---|---:|
| `apify-actor-start` | Per event | $0.00005 |
| `apify-default-dataset-item` | Per event | $0.00315 |

On the Free plan, `apify-actor-start`: 1,000 × $0.00005 = $0.05; 10,000 × $0.00005 = $0.5.\
On the Free plan, `apify-default-dataset-item`: 1,000 × $0.00315 = $3.15; 10,000 × $0.00315 = $31.5.

The Apify Free plan includes **$5 of monthly platform usage credit**. The Free plan's $5 credit covers 1,587 results with one start event: `1,587 × $0.00315 + $0.00005 = $4.9991`.

### How to use

1. Open the Dabang Property Scraper in Apify and start a run.
2. Enter a Korean city, district, or neighborhood in `place`, such as `강남구` or `역삼동`.
3. Select `one-two` for rooms or `officetel` for officetel listings.
4. Set `maxResults` to the maximum number of unique listing cards you want.
5. Run the Actor and inspect the dataset containing one item per returned listing.
6. Repeat the run through Apify Schedules.

Example input:

```json
{
  "place": "역삼동",
  "category": "one-two",
  "maxResults": 50
}
```

Export the dataset as JSON or CSV, or read it through the Apify dataset API.

### Input parameters

| Parameter | What it does | Default |
|---|---|---|
| `place` | Required Korean city, district, or neighborhood name searched through Dabang’s public region endpoint. | — |
| `category` | Selects `one-two` rooms or `officetel` listings. | `one-two` |
| `maxResults` | Maximum number of unique listing cards; must be positive. | `50` |
| `proxyConfiguration` | Apify proxy configuration. The Actor runs without a proxy only when this field is disabled or removed. | Apify Residential proxy |

### Limits and edge cases

| Condition | What the buyer sees | What to do |
|---|---|---|
| `place` is missing or blank, or `category` is unsupported | The Actor stops without cards. | Provide a Korean region and use `one-two` or `officetel`. |
| No Dabang region matches `place` | The Actor logs that no regions matched and returns no listings. | Check spelling or try a broader or more specific region. |
| Several matched regions contain the same listing | Duplicate listing IDs are skipped; the limit applies to unique listings. | Use a larger `maxResults` if more unique cards are needed. |
| A card lacks area, floor, maintenance-fee, coordinates, photos, or a badge, or the card response lacks a full address, nearest subway, or long description | The corresponding optional field is absent. | Use the fields supplied by the card. |
| Dabang returns map coordinates | `location_lat` and `location_lng` are approximate because Dabang randomizes card locations. | Use them for approximate map review, not an exact address. |
| More than 1,000 pages would be needed for one matched region | Pages after 1,000 are not requested, so fewer results may be returned. | Narrow the place or category, or run separate searches. |
| A request receives HTTP 429 or a server error | It is retried up to three attempts; after the final failure, the run stops. Another HTTP error, non-JSON response, or invalid API response stops the run at once. | Review the error and try again with a valid place and category. |
| A later request fails after earlier cards were pushed | Each accepted card is pushed to the dataset as it is processed. Earlier cards remain in the dataset, but the run may stop before `maxResults`. | Check for partial results and rerun if needed. |

### FAQ

#### How much does it cost to scrape Dabang listings?

On the Free plan, a result costs **$0.00315** and the Actor Start event costs **$0.00005**. See Pricing for the worked example.

#### What happens if my search returns no listings?

The Actor can return an empty dataset when no region matches `place`, the selected category has no cards, or the response has no usable cards. Check the Korean spelling, try another region scope, and confirm the category.

#### What should I do if the run is not working?

Check that `place` is non-empty, `category` is `one-two` or `officetel`, and `maxResults` is positive. See Limits and edge cases for request errors and retries.

#### Is it legal to collect public Dabang listing data?

The Actor accesses Dabang’s public region endpoint and returns public card-level data. Public availability alone is not a legal guarantee: source terms and applicable law depend on the buyer’s use case, so review them before collecting or using the data.

### Related actors

- [At Home Japan Rental Listings](https://apify.com/bovi/athome-scraper) — another bovi rental-listings Actor for Japan.
- [ChavesNaMão Property Scraper](https://apify.com/bovi/chavesnamao-scraper) — another bovi property-data scraper.
- [Portalinmobiliario Scraper — Chile Property Data & API](https://apify.com/bovi/portalinmobiliario-scraper) — another bovi property-data Actor for Chile.

### Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as `USAGE_STATS` in your own Apify key-value store.

To opt out, set `disableUsageStats` to `true` in the input. Nothing is sent then.

[Full list of collected fields](https://api.apify.com/v2/key-value-stores/v9rgHjMKLDGtHf8tD/records/index.html)

# Actor input Schema

## `place` (type: `string`):

Korean city, district, or neighborhood name, for example 강남구 or 역삼동.

## `category` (type: `string`):

Select the public Dabang listing category.

## `maxResults` (type: `integer`):

Maximum number of unique listing cards to return.

## `proxyConfiguration` (type: `object`):

Optional proxy configuration. Leave disabled to connect directly.

## Actor input object example

```json
{
  "place": "역삼동",
  "category": "one-two",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset with the collected Dabang listing cards.

# 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 = {
    "place": "강남구",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/dabang-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 = {
    "place": "강남구",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "place": "강남구",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call bovi/dabang-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bovi/dabang-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1bSGUScNHnJpVIaX0/builds/jzTu6OuEFcMApyUyd/openapi.json
