{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Real Estate Scraper - Korea Property Listings",
    "description": "Scrape Naver Real Estate (부동산) listings across South Korea: sale, jeonse and monthly-rent prices, floors, areas, brokerages and verified-owner badges. Apartments, officetels, villas, shops and land — in Korean.",
    "version": "1.0",
    "x-build-id": "GvzYuf3SZZjS4yw8u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~naver-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-naver-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~naver-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-naver-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~naver-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-naver-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": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Pick one per run. Property Search walks Naver Real Estate's own listing feed for any Korean city, district or neighbourhood and returns 30 listings per page; Property Detail takes Naver listing numbers and returns the full record — features, facilities, parking, rooms and baths, photos, coordinates and the brokerage behind the advert.",
            "default": "search"
          },
          "locations": {
            "title": "📍 Regions",
            "type": "array",
            "description": "Which parts of South Korea to read. A district name (강남구, 수원시장안구) covers that district; a neighbourhood name (역삼동, 개포동) or a pasted Naver region code (10 digits) narrows further; a province or city (서울시, 경기도) reads the whole of it — wide, and best split by district for big sweeps. Names are matched against Naver's own region index, so spelling must match the Korean site. Naver counts 14,700+ active listings in 강남구 alone for sale and jeonse apartments, so a whole province is a long run.",
            "default": [
              "강남구"
            ],
            "items": {
              "type": "string"
            }
          },
          "dealType": {
            "title": "🤝 Deal type",
            "enum": [
              "sale",
              "jeonse",
              "monthly",
              "shortterm"
            ],
            "type": "string",
            "description": "Which side of the market to read. Sale rows carry an asking price in won; jeonse rows carry the deposit (보증금) in the same price field; monthly rows carry the deposit and a monthly rent in separate fields. Naver keeps the four kinds separate, so a run reads one of them — run four times to compare a neighbourhood across the market.",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "🏠 Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Which kinds of property to read — apartments (아파트), officetels (오피스텔), villas and row houses (빌라/연립), one-rooms, shops, offices, land and more; leave empty for every type in one sweep. Picking types is also how a wide search stays deep: each type is read as its own feed, so 강남구 apartments and 강남구 shops each get their own full pagination. The values are Naver's own property-type codes (A01 = 아파트 and so on), matched against the list below.",
            "items": {
              "type": "string",
              "enum": [
                "A01",
                "A02",
                "A04",
                "A05",
                "A06",
                "A07",
                "B01",
                "B02",
                "C01",
                "C02",
                "C03",
                "C04",
                "C06",
                "D01",
                "D02",
                "D03",
                "D04",
                "D05",
                "E01",
                "E02",
                "E03",
                "E04",
                "G01",
                "F01",
                "Z00"
              ],
              "enumTitles": [
                "🏢 Apartments — 아파트 (A01)",
                "🏙️ Officetels — 오피스텔 (A02)",
                "🏗️ Reconstruction — 재건축 (A04)",
                "🏘️ Row houses — 연립 (A05)",
                "🏘️ Multi-family — 다세대 (A06)",
                "🏙️ Urban lifestyle housing — 도시형생활주택 (A07)",
                "🎟️ Apartment pre-sale rights — 아파트분양권 (B01)",
                "🎟️ Officetel pre-sale rights — 오피스텔분양권 (B02)",
                "🚪 One-rooms — 원룸 (C01)",
                "🏡 Villas & row houses — 빌라/연립 (C02)",
                "🏡 Detached & multi-family — 단독/다가구 (C03)",
                "🌄 Country houses — 전원주택 (C04)",
                "⛩️ Hanok — 한옥주택 (C06)",
                "💼 Offices — 사무실 (D01)",
                "🏪 Shops — 상가점포 (D02)",
                "🏬 Buildings — 빌딩/건물 (D03)",
                "🏢 Commercial buildings — 상가건물 (D04)",
                "🏘️ Mixed-use houses — 상가주택 (D05)",
                "🏨 Accommodation & condos — 숙박/콘도 (E01)",
                "🏭 Factories & warehouses — 공장/창고 (E02)",
                "🌳 Land — 토지/임야 (E03)",
                "🏗️ Knowledge industry centers — 지식산업센터 (E04)",
                "🛏️ Gosiwon — 고시원 (G01)",
                "🚧 Redevelopment — 재개발 (F01)",
                "📦 Other — 기타 (Z00)"
              ]
            },
            "default": [
              "A01"
            ]
          },
          "maxResults": {
            "title": "🔢 Max listings",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many listings across the whole run, not per region. Naver serves 30 listings per feed page, so a run ends on the first page that crosses your limit.",
            "default": 100
          },
          "includeDetails": {
            "title": "📄 Add full details",
            "type": "boolean",
            "description": "Open each listing's own record to add the untruncated feature text, the facility list, exact room and bath counts, parking totals, moving-in terms, photos and precise coordinates. Costs one extra request per listing and bills the Property Detail event on top of the listing row.",
            "default": false
          },
          "minPrice": {
            "title": "💵 Min price (₩)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings priced below this, in whole won. 0 means no lower bound. Naver quotes in won — a ₩4.4B apartment is 4400000000 here; for a jeonse row this is the deposit, and for a monthly row the deposit.",
            "default": 0
          },
          "maxPrice": {
            "title": "💰 Max price (₩)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings priced above this, in whole won. 0 means no upper bound. Pairing a band with a property type is the usual way to carve a wide district into slices that each stay inside Naver's pagination.",
            "default": 0
          },
          "minArea": {
            "title": "📐 Min area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings with an exclusive-use area (전용면적) below this, in square metres. 0 means no minimum. Korea quotes both exclusive and supply area; the exclusive figure is what a Korean buyer means by the size of the flat.",
            "default": 0
          },
          "maxArea": {
            "title": "📏 Max area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings with an exclusive-use area above this, in square metres. 0 means no maximum.",
            "default": 0
          },
          "onlyOwners": {
            "title": "👤 Only owner-verified",
            "type": "boolean",
            "description": "Keep only listings Naver itself marks as owner-verified (집주인 매물 — the site confirms the poster is the owner of the home). The badge is Naver's own judgement stored on the listing, not a guess from comparing text.",
            "default": false
          },
          "listingUrls": {
            "title": "🏠 Listing numbers",
            "type": "array",
            "description": "Used by the Property Detail operation: listing addresses of the shape https://fin.land.naver.com/articles/2648398022 (one per row). The 10-digit number at the end identifies the listing; the retired land.naver.com/article/… and m.land.naver.com/article/info/… addresses of the same number work too. A bare number without an address is rejected by the platform's URL-list validation.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}