{
  "openapi": "3.0.1",
  "info": {
    "title": "Kakao Map Scraper",
    "description": "Scrape Kakao Map (카카오맵) places by keyword, area and category: name, category, phone, address, coordinates, rating, reviews, photos, opening hours, menu and facilities. Export JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "4rHQrJbweiKvT5WbB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parsebird~kakao-map-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parsebird-kakao-map-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/parsebird~kakao-map-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parsebird-kakao-map-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/parsebird~kakao-map-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parsebird-kakao-map-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Type what you would type into Kakao Map, in Korean or English: a place or area plus a business type (강남역 카페, 역삼동 미용실, 제주 맛집), a brand (스타벅스) or a place name. Each query runs as its own search.",
            "items": {
              "type": "string"
            }
          },
          "areas": {
            "title": "Areas",
            "type": "array",
            "description": "Pick popular Korean areas. Each area is searched with every category you pick below (for example Hongdae + Cafés searches 홍대 카페). Use Search queries for any other area.",
            "items": {
              "type": "string",
              "enum": [
                "서울",
                "강남",
                "강남역",
                "신사동 가로수길",
                "압구정",
                "청담동",
                "역삼동",
                "삼성동",
                "잠실",
                "홍대",
                "합정",
                "연남동",
                "망원동",
                "신촌",
                "이태원",
                "한남동",
                "경리단길",
                "용산",
                "명동",
                "종로",
                "을지로",
                "익선동",
                "북촌",
                "성수동",
                "서울숲",
                "건대입구",
                "여의도",
                "영등포",
                "노량진",
                "혜화",
                "서울대입구",
                "부산",
                "해운대",
                "광안리",
                "서면",
                "남포동",
                "전포동",
                "기장",
                "인천",
                "송도",
                "부평",
                "경기",
                "수원",
                "판교",
                "분당",
                "일산",
                "가평",
                "대구",
                "동성로",
                "대전",
                "광주",
                "울산",
                "세종",
                "제주",
                "제주시",
                "서귀포",
                "애월",
                "성산읍",
                "경주",
                "전주",
                "전주 한옥마을",
                "강릉",
                "속초",
                "양양",
                "춘천",
                "평창",
                "여수",
                "포항",
                "창원",
                "청주",
                "천안"
              ],
              "enumTitles": [
                "Seoul (all) (서울)",
                "Gangnam-gu (강남)",
                "Gangnam Station (강남역)",
                "Sinsa-dong Garosu-gil (신사동 가로수길)",
                "Apgujeong (압구정)",
                "Cheongdam-dong (청담동)",
                "Yeoksam-dong (역삼동)",
                "Samseong-dong (삼성동)",
                "Jamsil (잠실)",
                "Hongdae (홍대)",
                "Hapjeong (합정)",
                "Yeonnam-dong (연남동)",
                "Mangwon-dong (망원동)",
                "Sinchon (신촌)",
                "Itaewon (이태원)",
                "Hannam-dong (한남동)",
                "Gyeongnidan-gil (경리단길)",
                "Yongsan-gu (용산)",
                "Myeongdong (명동)",
                "Jongno-gu (종로)",
                "Euljiro (을지로)",
                "Ikseon-dong (익선동)",
                "Bukchon Hanok Village (북촌)",
                "Seongsu-dong (성수동)",
                "Seoul Forest (서울숲)",
                "Konkuk Univ. Station (건대입구)",
                "Yeouido (여의도)",
                "Yeongdeungpo-gu (영등포)",
                "Noryangjin (노량진)",
                "Hyehwa (혜화)",
                "Seoul Nat'l Univ. Station (서울대입구)",
                "Busan (all) (부산)",
                "Busan Haeundae (해운대)",
                "Busan Gwangalli (광안리)",
                "Busan Seomyeon (서면)",
                "Busan Nampo-dong (남포동)",
                "Busan Jeonpo-dong (전포동)",
                "Busan Gijang (기장)",
                "Incheon (all) (인천)",
                "Incheon Songdo (송도)",
                "Incheon Bupyeong (부평)",
                "Gyeonggi-do (all) (경기)",
                "Suwon (수원)",
                "Pangyo (판교)",
                "Bundang (분당)",
                "Ilsan (일산)",
                "Gapyeong (가평)",
                "Daegu (all) (대구)",
                "Daegu Dongseong-ro (동성로)",
                "Daejeon (all) (대전)",
                "Gwangju (all) (광주)",
                "Ulsan (all) (울산)",
                "Sejong (세종)",
                "Jeju-do (all) (제주)",
                "Jeju City (제주시)",
                "Seogwipo (서귀포)",
                "Jeju Aewol (애월)",
                "Jeju Seongsan (성산읍)",
                "Gyeongju (경주)",
                "Jeonju (전주)",
                "Jeonju Hanok Village (전주 한옥마을)",
                "Gangneung (강릉)",
                "Sokcho (속초)",
                "Yangyang (양양)",
                "Chuncheon (춘천)",
                "Pyeongchang (평창)",
                "Yeosu (여수)",
                "Pohang (포항)",
                "Changwon (창원)",
                "Cheongju (청주)",
                "Cheonan (천안)"
              ]
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Pick business types to search in every area above. With no area, each category is searched across all of Korea.",
            "items": {
              "type": "string",
              "enum": [
                "맛집",
                "카페",
                "베이커리",
                "디저트",
                "술집",
                "이자카야",
                "와인바",
                "한식",
                "고기집",
                "일식",
                "중식",
                "양식",
                "치킨",
                "브런치",
                "호텔",
                "모텔",
                "펜션",
                "게스트하우스",
                "캠핑장",
                "미용실",
                "네일샵",
                "피부관리",
                "마사지",
                "병원",
                "피부과",
                "성형외과",
                "치과",
                "한의원",
                "약국",
                "동물병원",
                "헬스장",
                "필라테스",
                "요가",
                "학원",
                "부동산",
                "편의점",
                "마트",
                "꽃집",
                "노래방",
                "PC방",
                "관광명소",
                "주차장",
                "주유소"
              ],
              "enumTitles": [
                "Restaurants (맛집)",
                "Cafés (카페)",
                "Bakeries (베이커리)",
                "Desserts (디저트)",
                "Bars & pubs (술집)",
                "Izakaya (이자카야)",
                "Wine bars (와인바)",
                "Korean food (한식)",
                "Korean BBQ (고기집)",
                "Japanese food (일식)",
                "Chinese food (중식)",
                "Western food (양식)",
                "Fried chicken (치킨)",
                "Brunch (브런치)",
                "Hotels (호텔)",
                "Motels (모텔)",
                "Pensions (펜션)",
                "Guesthouses (게스트하우스)",
                "Campsites (캠핑장)",
                "Hair salons (미용실)",
                "Nail salons (네일샵)",
                "Skin care (피부관리)",
                "Massage (마사지)",
                "Hospitals & clinics (병원)",
                "Dermatology (피부과)",
                "Plastic surgery (성형외과)",
                "Dentists (치과)",
                "Korean medicine (한의원)",
                "Pharmacies (약국)",
                "Veterinarians (동물병원)",
                "Gyms (헬스장)",
                "Pilates (필라테스)",
                "Yoga (요가)",
                "Academies (학원)",
                "Real estate agents (부동산)",
                "Convenience stores (편의점)",
                "Supermarkets (마트)",
                "Florists (꽃집)",
                "Karaoke (노래방)",
                "PC bangs (PC방)",
                "Tourist attractions (관광명소)",
                "Parking lots (주차장)",
                "Gas stations (주유소)"
              ]
            }
          },
          "startUrls": {
            "title": "Kakao Map URLs",
            "type": "array",
            "description": "Add Kakao Map place URLs (https://place.map.kakao.com/27254228) to scrape specific places, or Kakao Map search URLs (https://map.kakao.com/?q=홍대 맛집) to run their search.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max places",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of places to save in total, across all searches and URLs. Kakao Map shows up to 500 places per search; above that the Actor splits the search into smaller map areas to get more.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "accuracy",
              "popularity"
            ],
            "type": "string",
            "description": "Order of the search results, as on Kakao Map. Searches split into map areas past 500 places are saved area by area.",
            "default": "accuracy"
          },
          "includeDetails": {
            "title": "Scrape place details",
            "type": "boolean",
            "description": "Open each place's page to add opening hours, break times, menu with prices, facilities, parking, payments, nearest subway, KakaoTalk channel, all phone numbers and links, review keywords and photo counts.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per place",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Number of Kakao Map reviews (star rating, text, date) to add to each place. Needs Scrape place details. 0 = no reviews.",
            "default": 0
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "recommended",
              "latest"
            ],
            "type": "string",
            "description": "Which reviews to take first.",
            "default": "recommended"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Kakao Map works without a proxy, so none is used by default. If Kakao starts refusing requests, the Actor switches to Apify datacenter proxy and then Korean residential proxy by itself.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}