# disco.re Scraper — South Korea Property Data & API (`sian.agency/disco-property-scraper`) Actor

disco.re (디스코) scraper & real estate data API for South Korea. Sale, jeonse & monthly-rent listings nationwide: price, deposit, area, floor, building, GPS, agent contact, photos + parcel registry & recent real-transaction history — clean JSON/CSV. Fast overview or full detail. No API key.

- **URL**: https://apify.com/sian.agency/disco-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 overview listing extracteds

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

## disco.re Scraper 🇰🇷 — South Korea Property Data & Real Estate API 🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Naver Land Scraper](https://img.shields.io/badge/Store-Naver%20Land%20Scraper-1AE392)](https://apify.com/sian.agency/naver-land-property-scraper?fpr=sian) [![Dabang Scraper](https://img.shields.io/badge/Store-Dabang%20Scraper-1AE392)](https://apify.com/sian.agency/dabang-property-scraper?fpr=sian) [![Zigbang Scraper](https://img.shields.io/badge/Store-Zigbang%20Scraper-1AE392)](https://apify.com/sian.agency/zigbang-property-scraper?fpr=sian)

#### 🎉 Turn disco.re (디스코) listings into clean structured data — sale, jeonse & monthly rent, nationwide, no API key
##### Built for real-estate analysts, proptech teams, investors and lead-gen agencies who need South Korea property data at scale

---

### 📋 Overview

**Scrape disco.re (디스코) — a popular South Korean property platform — into ready-to-use datasets.** Pull tens of thousands of listings with price, deposit, monthly rent, area, floor, building, structure, full address, GPS coordinates, agent contact, photos — plus parcel-registry numbers and recent real-transaction (실거래) history — as JSON, CSV or Excel.

**Why proptech teams and investors choose us:**
- ✅ **Complete listings**: price, deposit, monthly rent, area, floor, building name, structure, parking, GPS, agent name & phone, photos, registry and transaction history
- ⚡ **Fast & affordable Overview mode**: harvest the full nationwide map dataset in seconds — the cheapest way to grab listing volume
- 🎯 **All three deal types**: sale (매매), jeonse (전세) **and** monthly rent (월세), across every region of Korea
- 💸 **Pay-per-result**: only pay for listings you actually extract — generous FREE tier, no credit card to start
- 💎 **Detail mode with everything**: title, floor, structure, agent contact, photos, parcel-registry land/floor area and recent real (실거래) transactions — each detail row is also enriched with the overview fields, so you always get a complete record
- ✨ **Investor KPIs built in**: automatic price-per-m² (KRW) and dual KRW / 만원 values, plus a thumbnail-first row for instant gallery views

---

### ✨ Features

- 🏠 **Sale, jeonse & monthly rent**: 매매, 전세 and 월세 in one actor
- 🎛️ **Filter by property type & deal type, or paste a URL**: pick apartment, officetel, land, factory and more, or paste a disco.re map URL — or fetch specific listing ids
- 💵 **Full pricing breakdown**: sale price, deposit and monthly rent in both 만원 and absolute KRW
- 📐 **Rich specs**: supply / floor / land / building area (m²), floor and total floors, rooms, bathrooms, direction, structure, parking
- 🧭 **Geo data**: full jibun address, parcel number (PNU), latitude & longitude
- 🧑‍💼 **Agent contact**: agent name, brokerage office, phone, registration number and tier
- 📸 **Full photo gallery**: every listing image URL, plus a cover thumbnail
- 🗺️ **Registry & transaction history**: parcel-registry land/floor area and recent real (실거래) transactions per parcel
- 📊 **Computed KPIs**: price-per-m² in KRW, ready for comparables and yield models
- 🔢 **Filters & limits**: narrow by property type and deal type, cap each run with Max results
- 📤 **Clean exports**: JSON, CSV and Excel directly from the dataset

---

### 🎬 Quick Start

Pick a mode (Overview for speed, Detail for full data), choose your filters (a property/deal type, a search URL, or specific listing ids), and run. Results stream into your dataset as clean rows you can export to JSON, CSV or Excel.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~disco-property-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byFilter","dealType":"0","maxResults":100}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your mode

Pick **Overview** (fast & cheap — compact listings from the nationwide dataset) or **Detail** (full fields per listing).

#### Step 2: Choose your filters

Pick a property type and/or deal type, paste a disco.re map URL, or — in Detail mode — paste specific listing ids (suids).

#### Step 3: Run it

Click **Start** (or call the API). Listings stream into your dataset in real time.

**That's it! In under a minute, you'll have:**

- A clean table of disco.re listings with prices and specs
- Address, PNU, GPS, agent contact and full photos (Detail mode)
- Parcel-registry and recent real-transaction history (Detail mode)
- A JSON / CSV / Excel export ready for your model or CRM

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (fast & cheap) or `detail` (full fields). Default `overview`. |
| searchMode | string | No | `byFilter`, `bySearchUrl`, or `bySuid` (detail only). Default `byFilter`. |
| estateType | string | No | Property-type code: `3` apartment, `4` officetel, `0` detached, `2` multiplex, `5` commercial, `7` store/office, `8` factory/warehouse, `1` land, `12` lodging, `90` pre-sale right. |
| dealType | string | No | `0` sale (매매), `1` jeonse (전세), `2` monthly rent (월세). |
| searchUrls | array | No | disco.re map URLs — their filters are honoured. |
| suids | array | No | Detail mode: specific listing ids (e.g. `ecfww3di`). |
| withRegistry | boolean | No | Detail mode: also fetch parcel registry + recent real transactions. Default `true`. |
| maxResults | integer | No | Cap listings per run. FREE: 25. PAID: unlimited. Default 100. |
| proxyCountry | string | No | Empty = direct (default). `KR` routes through a Korean residential proxy for very large runs. |

**Example — by filter (apartments for sale):**

```json
{
  "scrapeMode": "overview",
  "searchMode": "byFilter",
  "estateType": "3",
  "dealType": "0",
  "maxResults": 200
}
```

**Example — detail by listing id:**

```json
{
  "scrapeMode": "detail",
  "searchMode": "bySuid",
  "suids": ["ecfww3di"],
  "withRegistry": true
}
```

***

### 📤 Output

Results are saved to the Apify dataset. Key fields include:

| Field | Type | Description |
|-------|------|-------------|
| listingId | string | disco.re listing identifier (suid) |
| url | string | Canonical listing data endpoint |
| propertyTitle | string | Listing title (Detail mode) |
| deal\_type\_label | string | 매매 / 전세 / 월세 |
| estate\_type\_label | string | Property kind (아파트, 오피스텔, …) |
| price / deposit / monthly | integer | Price, deposit, monthly rent (만원) |
| price\_krw / deposit\_krw / monthly\_krw | integer | Same values in absolute KRW |
| price\_per\_sqm\_krw | integer | Computed price per m² (KRW) |
| area / supply\_area / floor\_area / land\_area | number | Areas (m²) |
| floor / floor\_total / rooms / bathrooms | integer | Property specs |
| building\_name / structure\_type / car\_cnt | — | Building details (Detail mode) |
| address / pnu / latitude / longitude | — | Location & parcel |
| agent\_name / agent\_office / agent\_phone | string | Agent contact (Detail mode) |
| images / image\_count / thumbnail | — | Photos (Detail mode) |
| parcel\_land\_area / parcel\_floor\_area | number | Parcel-registry areas (Detail mode) |
| recent\_transactions | array | Recent real (실거래) transactions (Detail mode) |

**Example:**

```json
{
  "listingId": "ecfww3di",
  "url": "https://www.disco.re/sale/get_for_sale_info/?suid=ecfww3di",
  "source": "detail",
  "propertyTitle": "E실35 코너호실 발코니확장 룸1 싱크대등 풀인테리어 선유도역 초역세권 지산",
  "deal_type_label": "매매",
  "estate_type_label": "공장·창고",
  "building_name": "선유도역2차아이에스비즈타워",
  "price": 99000,
  "price_krw": 990000000,
  "price_per_sqm_krw": 9295598,
  "supply_area": 209.54,
  "floor_area": 106.51,
  "floor": 6,
  "floor_total": 15,
  "structure_type": "철근콘크리트",
  "car_cnt": 281,
  "address": "서울특별시 영등포구 양평동4가 80",
  "latitude": 37.536219384753,
  "longitude": 126.894988306442,
  "agent_name": "임정은",
  "agent_office": "마스터자이타워공인중개사사무소",
  "agent_phone": "01022753744",
  "image_count": 8,
  "currency": "KRW"
}
```

***

### 💼 Use Cases & Examples

#### 1. Rental Yield & Investment Analysis

**Investors and proptech analysts modelling returns across Seoul, Busan and beyond.**

**Input:** A property/deal-type filter, sale and rent runs.
**Output:** Price, deposit, monthly rent and computed KRW/m² per listing.
**Use:** Build gross-yield and jeonse-to-sale models for whole districts.

#### 2. Price & Rent Comparables (CMA)

**Brokers and appraisers needing fast comparables.**

**Input:** A disco.re search URL for a specific area and property type.
**Output:** Comparable listings with price, area and KRW/m².
**Use:** Produce a comparative market analysis in minutes, not hours.

#### 3. Agent & Lead Generation

**Agencies sourcing seller and landlord inventory plus agent contacts.**

**Input:** Filter-based runs in Detail mode.
**Output:** Listings with address, specs and agent name, office & phone.
**Use:** Feed a CRM with fresh, qualified property and agent leads.

#### 4. Market Research & Trend Dashboards

**Data teams tracking Korea's housing market.**

**Input:** Scheduled daily runs across property types.
**Output:** A time series of prices, deposits and inventory.
**Use:** Power BI / Looker dashboards on supply and pricing trends.

#### 5. Powering a Real-Estate Data API

**Proptech startups building products on Korea listings.**

**Input:** Programmatic API calls per property type.
**Output:** Structured JSON ready to ingest.
**Use:** Back a search app or valuation API with live disco.re data.

#### 6. Valuation with Real-Transaction History

**Appraisers and lenders verifying market value.**

**Input:** Detail mode with registry enrichment.
**Output:** Listings plus parcel-registry areas and recent real (실거래) transactions.
**Use:** Cross-check asking prices against actual recorded sales.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/disco-property-scraper').call({
  scrapeMode: 'overview',
  searchMode: 'byFilter',
  estateType: '3',
  dealType: '0',
  maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/disco-property-scraper').call(
    run_input={
        'scrapeMode': 'overview',
        'searchMode': 'byFilter',
        'estateType': '3',
        'dealType': '0',
        'maxResults': 100,
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~disco-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byFilter","dealType":"0","maxResults":100}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet, push to a CRM, or send an alert

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Pay-per-result: only charged for listings successfully extracted
- Ideal for dashboards, comparables and data APIs

💰 **Transparent pay-per-result pricing** — the fast Overview event is the cheapest way to harvest Korea property data at volume; upgrade to Detail only when you need address, GPS, agent contact, photos and transaction history.

🔗 [View current pricing](https://apify.com/sian.agency/disco-property-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many listings can I extract?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Does it cover sale, jeonse and monthly rent?**
A: Yes — set `dealType` to `0` (매매/sale), `1` (전세/jeonse) or `2` (월세/monthly rent). Leave it empty for all three.

**Q: What is the difference between Overview and Detail?**
A: Overview is the fast, cheap path — it pulls the nationwide map dataset and emits compact listings (type, price, area, address, GPS). Detail fetches each listing for the title, floor, structure, agent contact, photos and — when enabled — parcel-registry areas and recent real (실거래) transactions. Each detail row is also enriched with the overview fields, so every record is complete.

**Q: What currency are prices in?**
A: Korean Won (KRW). disco.re stores money in 만원 (10,000 KRW) units; we keep that raw value and also expose absolute KRW (`*_krw`) fields.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Do I need a disco.re account or API key?**
A: No. The actor works straight out of the box.

**Q: Is this legal?**
A: We only extract publicly available listing data. See the legal note below.

***

### 🐛 Troubleshooting

**No results returned**

- Check your filter combination — some property/deal-type combinations have few listings. Leave a filter empty to broaden the search.
- If you pasted a search URL, open it on disco.re first to confirm it returns listings.

**A specific listing id was skipped**

- Sold or removed listings return an empty record and are skipped automatically. Try a currently-live listing id (suid).

**Fewer rows than expected in Overview**

- FREE runs are capped at 25 listings. Raise Max results on a PAID run to gather more.

**Large runs slowing down**

- Set `proxyCountry` to `KR` to route through a Korean residential proxy and avoid IP rate-limits at scale.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

> **Disclaimer:** This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by disco.re or 디스코. "disco.re", "디스코" and related marks are trademarks of their respective owners. Use this actor in compliance with disco.re's terms and all applicable laws.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

**Overview** = fast & cheap. Pulls the full nationwide map dataset and emits compact listings (type, price, area, address, GPS). **Detail** = full record per listing (title, floor, structure, agent contact, photos + parcel registry & recent real-transaction history).

## `searchMode` (type: `string`):

**By filter** = use the property-type / deal-type pickers below (Overview, or Detail when you want to enrich discovered listings). **By search URL** = paste a disco.re map URL and its filters are honoured. **By listing ids** = (Detail only) paste specific listing ids (suids).

## `estateType` (type: `string`):

Narrow to one property kind (applies to By-filter mode). Leave empty for all kinds.

## `dealType` (type: `string`):

Narrow to one transaction kind. Leave empty for all.

## `searchUrls` (type: `array`):

(By-search-URL mode) Paste one or more disco.re map URLs — their query filters are honoured. Click "Bulk edit" to paste one per line.

## `suids` (type: `array`):

(Detail / By-listing-ids mode) Paste specific disco.re listing ids (suids) such as "ecfww3di". Click "Bulk edit" to paste one per line.

## `withRegistry` (type: `boolean`):

(Detail mode) Also fetch parcel-registry land/floor area and recent real (실거래) transactions for each listing's parcel. Adds depth at no extra event charge.

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

Maximum listings to extract this run. FREE users are capped at 25; PAID users are unlimited.

## `proxyCountry` (type: `string`):

Leave empty to run DIRECT (recommended — disco.re is not anti-bot protected). Set to a 2-letter country code (e.g. KR) to route through a residential proxy only if you hit an IP rate-limit at very large scale. Requires the WEBSHARE\_API\_KEY secret.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "byFilter",
  "withRegistry": true,
  "maxResults": 100,
  "proxyCountry": ""
}
```

# Actor output Schema

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

Clean structured disco.re listings (JSON/CSV/Excel).

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/disco-property-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/disco-property-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 '{}' |
apify call sian.agency/disco-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "disco.re Scraper — South Korea Property Data & API",
        "description": "disco.re (디스코) scraper & real estate data API for South Korea. Sale, jeonse & monthly-rent listings nationwide: price, deposit, area, floor, building, GPS, agent contact, photos + parcel registry & recent real-transaction history — clean JSON/CSV. Fast overview or full detail. No API key.",
        "version": "1.0",
        "x-build-id": "NjXS2AElbcGl1vRHy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~disco-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-disco-property-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/sian.agency~disco-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-disco-property-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/sian.agency~disco-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-disco-property-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": {
                    "scrapeMode": {
                        "title": "🧭 Scrape mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "**Overview** = fast & cheap. Pulls the full nationwide map dataset and emits compact listings (type, price, area, address, GPS). **Detail** = full record per listing (title, floor, structure, agent contact, photos + parcel registry & recent real-transaction history).",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🔀 Search mode",
                        "enum": [
                            "byFilter",
                            "bySearchUrl",
                            "bySuid"
                        ],
                        "type": "string",
                        "description": "**By filter** = use the property-type / deal-type pickers below (Overview, or Detail when you want to enrich discovered listings). **By search URL** = paste a disco.re map URL and its filters are honoured. **By listing ids** = (Detail only) paste specific listing ids (suids).",
                        "default": "byFilter"
                    },
                    "estateType": {
                        "title": "🏘️ Property type",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "7",
                            "8",
                            "12",
                            "90"
                        ],
                        "type": "string",
                        "description": "Narrow to one property kind (applies to By-filter mode). Leave empty for all kinds."
                    },
                    "dealType": {
                        "title": "🏷️ Deal type",
                        "enum": [
                            "0",
                            "1",
                            "2"
                        ],
                        "type": "string",
                        "description": "Narrow to one transaction kind. Leave empty for all."
                    },
                    "searchUrls": {
                        "title": "🔗 Search URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "(By-search-URL mode) Paste one or more disco.re map URLs — their query filters are honoured. Click \"Bulk edit\" to paste one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "suids": {
                        "title": "🆔 Listing ids (suids)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "(Detail / By-listing-ids mode) Paste specific disco.re listing ids (suids) such as \"ecfww3di\". Click \"Bulk edit\" to paste one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "withRegistry": {
                        "title": "🗺️ Include registry + real transactions",
                        "type": "boolean",
                        "description": "(Detail mode) Also fetch parcel-registry land/floor area and recent real (실거래) transactions for each listing's parcel. Adds depth at no extra event charge.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum listings to extract this run. FREE users are capped at 25; PAID users are unlimited.",
                        "default": 100
                    },
                    "proxyCountry": {
                        "title": "🌐 Proxy country (optional)",
                        "type": "string",
                        "description": "Leave empty to run DIRECT (recommended — disco.re is not anti-bot protected). Set to a 2-letter country code (e.g. KR) to route through a residential proxy only if you hit an IP rate-limit at very large scale. Requires the WEBSHARE_API_KEY secret.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
