# Naver Real Estate Broker Scraper (`hgservices/naver-real-estate-broker-scraper`) Actor

Extract contact details and coverage metrics for real-estate brokers (공인중개사) actively listing in any Naver Land (South Korea's premium real estate platform) apartment complex, by URL or ID — name, phone, business registration number, and active listing count.

- **URL**: https://apify.com/hgservices/naver-real-estate-broker-scraper.md
- **Developed by:** [Harish Garg](https://apify.com/hgservices) (community)
- **Categories:** Real estate, Lead generation, AI
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 broker records

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### What does Naver Real Estate Broker Directory do?

**Naver Real Estate Broker Directory** builds a deduplicated directory of the real-estate brokers (공인중개사) actively listing homes in any [Naver Land](https://fin.land.naver.com/) apartment complex. Enter a complex by URL or ID and receive one row per broker with brokerage name, contact phone, business registration number, profile image, owner-confirmed sales count, and how many active listings that broker represents in the complex right now.

Use it on the Apify platform to get API access, scheduling, monitoring, proxy rotation, and integrations — so you can keep your broker contact lists current without copy-pasting from Naver's listing pages.

**Coverage caveat, front and center:** this is a **listing-derived** broker directory, not a full replica of Naver's per-complex Broker tab. It surfaces only brokers who have at least one active listing in the complex at scrape time. Brokers who advertise in a complex but currently have no active listing will not appear. See the FAQ for the boundary.

### Why use Naver Real Estate Broker Directory?

Real-estate analysts, lead-generation teams, relocation services, and market researchers use this Actor to assemble broker contact lists scoped to specific apartment complexes — useful for outreach, partnership pipelines, comparative market reporting, or building a CRM of active agents per building.

Each broker is emitted as a single deduplicated row with their **active listing count** in the complex, so you can prioritize brokers by current exposure rather than guesswork. Results are clean JSON, ready to drop into a spreadsheet, database, or downstream automation.

### How to scrape Naver real-estate brokers

1. Open the Actor in Apify and go to the **Input** tab.
2. Add one or more apartment complex targets (see **Input** below).
3. Leave **Include broker contact details** on for the full directory, or turn it off for a fast listing-derived-only pass.
4. Start the Actor and wait for it to collect and deduplicate the brokers.
5. Open the **Dataset** tab to review, filter, or export the directory.
6. Schedule the Actor if you want refreshed broker data automatically.

### Input

Use **Complexes (URL or ID)** to provide a list of targets. Each entry can be any of the following:

- A bare Naver complex ID, for example `174439`.
- A complex page URL, for example `https://fin.land.naver.com/complexes/8928`.
- A Naver map URL after selecting a specific apartment complex.

The **Include broker contact details** toggle fetches public contact details (address, phone, business registration number, profile image) for each discovered broker via Naver's `/article/agent` endpoint. Turning it off skips those calls and yields a faster, listing-derived-only directory.

The optional **Proxy** setting supports Apify Proxy. A Korean residential proxy is recommended for dependable larger runs.

### Output

The Actor produces one dataset item for every deduplicated broker found for each complex.

```json
{
    "complexId": "174439",
    "complexName": "매교역팰루시드",
    "brokerId": "1234567",
    "brokerageName": "Suwon Central Real Estate",
    "brokerName": "Kim Min-su",
    "businessRegistrationNumber": "120-31-00000",
    "address": "Suwon-si, Gyeonggi-do",
    "profileImageUrl": "https://land.naver.com/...",
    "brokeragePhone": "031-123-4567",
    "mobilePhone": "010-1234-5678",
    "ownerConfirmationSaleCount": 8,
    "cpId": "ABCDE",
    "cpOutLinkType": "NAVER_LAND",
    "activeListingCount": 12,
    "sampleListingUrls": [
        "https://fin.land.naver.com/articles/2639084265",
        "https://fin.land.naver.com/articles/2639084266"
    ],
    "detailStatus": "enriched",
    "directoryCoverage": "active_listings_only",
    "scrapedAt": "2026-07-28T10:00:00.000Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field                                                      | Description                                                                         |
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `complexId`, `complexName`                                 | Resolved Naver complex identifier and name                                          |
| `brokerId`                                                 | Naver broker identifier from `/article/agent`, when available                       |
| `brokerageName`, `brokerName`                              | Brokerage (office) and broker (agent) names                                         |
| `businessRegistrationNumber`, `address`, `profileImageUrl` | Public business registration number, address, and profile image from enrichment     |
| `brokeragePhone`, `mobilePhone`                            | Office and mobile phone numbers from enrichment                                     |
| `ownerConfirmationSaleCount`                               | Count of owner-confirmed sales attributed to the broker by Naver                    |
| `cpId`, `cpOutLinkType`                                    | Naver partner-channel identifiers from the listing's `brokerInfo`                   |
| `activeListingCount`                                       | Count of distinct active `articleNumber`s associated with the broker in the complex |
| `sampleListingUrls`                                        | Up to 10 direct `https://fin.land.naver.com/articles/{articleNumber}` URLs          |
| `detailStatus`                                             | `enriched`, `listing_only` (contact details off), or `enrichment_failed`            |
| `directoryCoverage`                                        | Always `active_listings_only` — see the coverage caveat                             |
| `scrapedAt`                                                | ISO timestamp of when the row was produced                                          |

### How much does it cost to scrape Naver real-estate brokers?

This Actor is designed for **pay-per-result** usage: you are charged per **broker row** produced, not per listing. A single complex typically yields single-digit to low-double-digit unique brokers, so a per-row charge aligns cost with the actual deliverable rather than the inflated raw listing count. Your Apify plan and free-tier availability determine the final charge. Start with one complex to estimate the cost for your typical workload.

### Tips and advanced options

- For faster, cheaper runs where contact details don't matter, turn off **Include broker contact details**. Every row is still emitted with `detailStatus: listing_only` and the listing-derived broker identity.
- A complex with hundreds of listings still produces only a few dozen broker rows because rows are deduplicated. Use that to estimate volume before scaling up.
- Run the Actor on a schedule to track which brokers enter or leave a complex over time.
- If your workload covers many complexes, keep the recommended Korean residential proxy and split very large target lists into manageable scheduled runs.

### FAQ, disclaimers, and support

**Why is a broker I see on Naver's Broker tab missing here?** This Actor only surfaces brokers with at least one active listing in the complex at scrape time. Brokers who advertise or are registered against the complex but have no current listing are intentionally out of scope for this version. A future version may merge the complete Broker-tab source.

**Are the contact details always present?** No. Phone numbers, business registration numbers, and profile images come from Naver's `/article/agent` endpoint and are only emitted when Naver returns them. The Actor never infers a phone number, registration number, or identity from matching names — missing values are emitted as `null`.

**Is this legal?** This Actor collects publicly available broker information shown on Naver Land listing pages. You are responsible for ensuring that your use complies with Naver's terms, applicable laws (including any personal-data regulations), and your organization's data policies. Availability and field values can change when Naver updates its website.

For questions, feature requests, or feedback, use the Actor's **Issues** tab. Custom data-collection solutions and integrations can also be arranged on request.

# Actor input Schema

## `startTargets` (type: `array`):

Any mix of: a fin.land.naver.com /map URL with an apartment selected, a /complexes/{id} URL, or a bare complexId.

## `includeAgentDetails` (type: `boolean`):

Fetch available public broker details (address, phone, business registration number, profile image) for each discovered broker via /article/agent. Increases run time. Incurs an additional 'broker-detail' charge per enriched broker.

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

Apify Proxy. Residential, country KR recommended.

## Actor input object example

```json
{
  "startTargets": [
    "https://fin.land.naver.com/complexes/8928",
    "174439"
  ],
  "includeAgentDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}
```

# 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 = {
    "startTargets": [
        "https://fin.land.naver.com/complexes/8928",
        "174439"
    ],
    "includeAgentDetails": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "KR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hgservices/naver-real-estate-broker-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 = {
    "startTargets": [
        "https://fin.land.naver.com/complexes/8928",
        "174439",
    ],
    "includeAgentDetails": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "KR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("hgservices/naver-real-estate-broker-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 '{
  "startTargets": [
    "https://fin.land.naver.com/complexes/8928",
    "174439"
  ],
  "includeAgentDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}' |
apify call hgservices/naver-real-estate-broker-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=hgservices/naver-real-estate-broker-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/tohl52CBHy8gmXk3T/builds/P0bhEXcGuTXth5vgF/openapi.json
