{
  "openapi": "3.0.1",
  "info": {
    "title": "Zigbang Scraper - Korea Real Estate Listings & Agents",
    "description": "Zigbang scraper & data API for South Korea real estate: search officetels, villas & one-room studios for monthly rent (월세), jeonse (전세) & sale; export price, deposit, size, floor, address, photos plus the listing agent name & phone. Korea property data & lead-gen — fast, no login.",
    "version": "0.1",
    "x-build-id": "8hVARMPeizIpyo4bO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~zigbang-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-zigbang-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/haketa~zigbang-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-zigbang-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/haketa~zigbang-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-zigbang-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": {
          "popularAreas": {
            "title": "Popular areas to scrape",
            "type": "array",
            "description": "Pick one or more popular Korea neighborhoods and districts to pull listings from. This is the easiest way to start — no typing needed. Leave everything empty to get a diverse sample from top Seoul & metro areas.",
            "items": {
              "type": "string",
              "enum": [
                "강남구",
                "역삼동",
                "서초구",
                "마포구",
                "홍대입구역",
                "성동구",
                "송파구",
                "잠실동",
                "용산구",
                "이태원동",
                "종로구",
                "영등포구",
                "여의도동",
                "관악구",
                "신촌",
                "건대입구역",
                "성남시 분당구",
                "수원시",
                "인천 연수구",
                "부산 해운대구",
                "대구 중구",
                "대전 유성구"
              ],
              "enumTitles": [
                "Gangnam-gu, Seoul (강남구)",
                "Yeoksam-dong, Seoul (역삼동)",
                "Seocho-gu, Seoul (서초구)",
                "Mapo-gu, Seoul (마포구)",
                "Hongdae / Hongik Univ. Stn, Seoul (홍대입구역)",
                "Seongdong-gu, Seoul (성동구)",
                "Songpa-gu, Seoul (송파구)",
                "Jamsil-dong, Seoul (잠실동)",
                "Yongsan-gu, Seoul (용산구)",
                "Itaewon-dong, Seoul (이태원동)",
                "Jongno-gu, Seoul (종로구)",
                "Yeongdeungpo-gu, Seoul (영등포구)",
                "Yeouido-dong, Seoul (여의도동)",
                "Gwanak-gu, Seoul (관악구)",
                "Sinchon, Seoul (신촌)",
                "Konkuk Univ. Stn, Seoul (건대입구역)",
                "Bundang-gu, Seongnam (성남시 분당구)",
                "Suwon (수원시)",
                "Yeonsu-gu, Incheon (인천 연수구)",
                "Haeundae-gu, Busan (부산 해운대구)",
                "Jung-gu, Daegu (대구 중구)",
                "Yuseong-gu, Daejeon (대전 유성구)"
              ]
            },
            "default": []
          },
          "salesTypes": {
            "title": "Listing / sales types",
            "type": "array",
            "description": "Which listing types to include. 월세 = monthly rent, 전세 = jeonse (lump-sum deposit), 매매 = sale, 단기 = short-term.",
            "items": {
              "type": "string",
              "enum": [
                "월세",
                "전세",
                "매매",
                "단기"
              ],
              "enumTitles": [
                "Monthly rent (월세)",
                "Jeonse (전세)",
                "Sale (매매)",
                "Short-term rent (단기)"
              ]
            },
            "default": [
              "월세",
              "전세"
            ]
          },
          "searchQueries": {
            "title": "Custom location search (optional)",
            "type": "array",
            "description": "Not in the list above? Type any Korean location — a district (구), a neighborhood (동), a subway station or a building name. Examples: 강남구, 역삼동, 홍대입구역. Each is geocoded and the surrounding area is scraped. Leave empty to just use the picker above.",
            "items": {
              "type": "string"
            }
          },
          "depositMin": {
            "title": "Min deposit (만원 / 10,000 KRW)",
            "type": "integer",
            "description": "Only keep listings with at least this deposit, in 만원 (1 = 10,000 KRW). Leave empty for no minimum."
          },
          "depositMax": {
            "title": "Max deposit (만원 / 10,000 KRW)",
            "type": "integer",
            "description": "Only keep listings up to this deposit, in 만원 (1 = 10,000 KRW). Leave empty for no maximum."
          },
          "rentMin": {
            "title": "Min monthly rent (만원 / 10,000 KRW)",
            "type": "integer",
            "description": "Only keep listings with at least this monthly rent, in 만원. Leave empty for no minimum."
          },
          "rentMax": {
            "title": "Max monthly rent (만원 / 10,000 KRW)",
            "type": "integer",
            "description": "Only keep listings up to this monthly rent, in 만원. Leave empty for no maximum."
          },
          "includeEnglish": {
            "title": "Add English fields",
            "type": "boolean",
            "description": "Add English translations for Korean enum fields (sales type, room type, floor level) so the data is easy to read.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum number of listings to save. Set to 0 for no limit.",
            "default": 0
          },
          "geohashPrecision": {
            "title": "Search tile size (advanced)",
            "minimum": 4,
            "maximum": 7,
            "type": "integer",
            "description": "Advanced. Tile size for location searches. 5 ≈ 4.9 km tile (default), 6 ≈ 1.2 km (finer, more requests).",
            "default": 5
          },
          "gridRadius": {
            "title": "Search grid radius (advanced)",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Advanced. How many tile rings around each search center to cover. 0 = single tile, 1 = 3×3 grid (default, covers a district), 2 = 5×5 (wider).",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Max concurrency (advanced)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Advanced. Maximum parallel detail requests.",
            "default": 10
          },
          "propertyUrls": {
            "title": "Zigbang listing URLs (advanced)",
            "type": "array",
            "description": "Advanced. Paste direct Zigbang listing URLs (e.g. https://www.zigbang.com/home/oneroom/items/48964085) to scrape those exact listings.",
            "items": {
              "type": "string"
            }
          },
          "itemIds": {
            "title": "Item IDs (advanced)",
            "type": "array",
            "description": "Advanced. Direct Zigbang numeric item IDs to scrape.",
            "items": {
              "type": "string"
            }
          },
          "geohashes": {
            "title": "Geohashes (advanced)",
            "type": "array",
            "description": "Advanced. Query item tiles by geohash directly instead of by location search.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. A proxy is strongly recommended. Korean (KR) residential proxies give the best reliability at scale.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}