{
  "openapi": "3.0.1",
  "info": {
    "title": "Kakao Map Scraper - Places Extractor (Official API, No 45 Cap)",
    "description": "Get every Kakao Map place for a keyword or category in a Korean area via the official Kakao Local API, run with your own key. Grid splitting beats the 45-result limit. English categories, romanized names, coordinates, dedup.",
    "version": "0.0",
    "x-build-id": "ZiiP8cqxh7TavcRvK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/koreadata-lab~kakao-map-places-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-koreadata-lab-kakao-map-places-api",
        "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/koreadata-lab~kakao-map-places-api/runs": {
      "post": {
        "operationId": "runs-sync-koreadata-lab-kakao-map-places-api",
        "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/koreadata-lab~kakao-map-places-api/run-sync": {
      "post": {
        "operationId": "run-sync-koreadata-lab-kakao-map-places-api",
        "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",
        "required": [
          "restApiKey"
        ],
        "properties": {
          "query": {
            "title": "Keyword",
            "type": "string",
            "description": "What to search, e.g. 카페, 올리브영, 돈까스, 'Seongsu bakery'. Leave empty to search by category only.",
            "default": ""
          },
          "categoryGroupCode": {
            "title": "Category filter",
            "enum": [
              "",
              "MT1",
              "CS2",
              "PS3",
              "SC4",
              "AC5",
              "PK6",
              "OL7",
              "SW8",
              "BK9",
              "CT1",
              "AG2",
              "PO3",
              "AT4",
              "AD5",
              "FD6",
              "CE7",
              "HP8",
              "PM9"
            ],
            "type": "string",
            "description": "Kakao category group. Required when no keyword is given.",
            "default": ""
          },
          "autoCategory": {
            "title": "Auto category for generic keywords",
            "type": "boolean",
            "description": "When the keyword is a generic place type (카페, 맛집, 약국, 호텔...) and no category is chosen, add the matching Kakao category so places that only have the word in their name (e.g. a hair salon called '...카페') are left out.",
            "default": true
          },
          "areaMode": {
            "title": "Area",
            "enum": [
              "circle",
              "rect"
            ],
            "type": "string",
            "description": "How the search area is defined.",
            "default": "circle"
          },
          "centerLat": {
            "title": "Center latitude",
            "type": "string",
            "description": "For circle mode, e.g. 37.5446 (Seongsu-dong).",
            "default": "37.5446"
          },
          "centerLng": {
            "title": "Center longitude",
            "type": "string",
            "description": "For circle mode, e.g. 127.0557.",
            "default": "127.0557"
          },
          "radiusMeters": {
            "title": "Radius (m)",
            "minimum": 50,
            "maximum": 20000,
            "type": "integer",
            "description": "For circle mode. Up to 20,000 m.",
            "default": 1000
          },
          "rect": {
            "title": "Bounding box",
            "type": "string",
            "description": "For rect mode: minLng,minLat,maxLng,maxLat (e.g. 127.03,37.53,127.07,37.56).",
            "default": ""
          },
          "splitIfCapped": {
            "title": "Split area to get past the 45-result cap",
            "type": "boolean",
            "description": "Kakao returns at most 45 places per search. When a search hits the cap, the area is split into 4 tiles recursively until each tile is complete.",
            "default": true
          },
          "maxSplitDepth": {
            "title": "Max split depth",
            "minimum": 0,
            "maximum": 6,
            "type": "integer",
            "description": "Each level multiplies tiles by 4. Depth 4 = up to 256 tiles.",
            "default": 4
          },
          "maxPlaces": {
            "title": "Max places",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many unique places.",
            "default": 1000
          },
          "maskMobilePhones": {
            "title": "Drop mobile phone numbers",
            "type": "boolean",
            "description": "Drop numbers starting with 010/011/016-019 because they may belong to an individual (Korean PIPA). Business lines are kept.",
            "default": true
          },
          "restApiKey": {
            "title": "Kakao REST API key",
            "type": "string",
            "description": "Your own REST API key from https://developers.kakao.com (My Application > App Keys). Enable 'Kakao Map' for the app. Daily quota applies per app. Stored encrypted by Apify; sent only in the Authorization header, never logged."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}