{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Maps Scraper",
    "description": "Extract business/place data from thousands of Naver Maps locations and businesses (map.naver.com), including name, category, address, map coordinates, phone, opening hours, menus with prices and photos, amenities, payment info, visitor and blog reviews, review counts and rating score.",
    "version": "0.1",
    "x-build-id": "oyNgef7YUI7fXc0Ax"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hgservices~naver-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hgservices-naver-maps-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/hgservices~naver-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hgservices-naver-maps-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/hgservices~naver-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hgservices-naver-maps-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": {
          "searchStrings": {
            "title": "🔍 Search term(s)",
            "type": "array",
            "description": "What you'd type into the Naver Maps search bar, e.g. 삼겹살 (pork BBQ), 카페 (cafe). Korean terms match best. One term per line.",
            "items": {
              "type": "string"
            }
          },
          "locationQuery": {
            "title": "📍 Location",
            "type": "string",
            "description": "Free-text area to search within, e.g. \"Gangnam, Seoul\" or \"강남구\". Resolved to a bounding box via OpenStreetMap, then tiled to exceed Naver's 300-results-per-query cap. Leave empty for a plain keyword search (hard-capped at 300)."
          },
          "province": {
            "title": "🗺 Province / Metropolitan city (시·도)",
            "type": "string",
            "description": "Korea's top administrative tier (시/도) — a special/metropolitan city or a province. e.g. \"Seoul\" (서울특별시), \"Busan\" (부산광역시), \"Gyeonggi-do\" (경기도)."
          },
          "municipality": {
            "title": "🏙 City / County / District (시·군·구)",
            "type": "string",
            "description": "Korea's municipal tier (시/군/구) — a district (구), city (시) or county (군), all the same level. e.g. \"Gangnam-gu\" (강남구), \"Suwon-si\" (수원시), \"Yangpyeong-gun\" (양평군)."
          },
          "neighborhood": {
            "title": "📍 Town / Neighborhood (읍·면·동)",
            "type": "string",
            "description": "Korea's sub-municipal tier (읍/면/동) — a neighborhood (동), town (읍) or township (면). e.g. \"Yeoksam-dong\" (역삼동)."
          },
          "postalCode": {
            "title": "📮 Postal code (우편번호)",
            "type": "string",
            "description": "5-digit Korean postal code (우편번호). e.g. \"06236\"."
          },
          "customBounds": {
            "title": "🛰 Custom search area",
            "type": "array",
            "description": "Exact bounding box as [minLng, minLat, maxLng, maxLat]. Highest priority — overrides both 📍 Location and the structured fields when set. Coordinate order is longitude first."
          },
          "placeUrls": {
            "title": "🔗 Naver place URLs",
            "type": "array",
            "description": "Scrape specific places directly instead of searching. Paste Naver Maps place URLs — e.g. https://map.naver.com/p/entry/place/1005495070 — or naver.me share links (resolved automatically). When any URL or place ID is given, the search term and search area above are ignored (direct input takes priority). Each place is fetched with full details.",
            "items": {
              "type": "string"
            }
          },
          "placeIds": {
            "title": "🆔 Naver place IDs",
            "type": "array",
            "description": "Raw numeric Naver place IDs (e.g. 1005495070) — the number at the end of a place URL. Combined with any URLs above.",
            "items": {
              "type": "string"
            }
          },
          "maxPlacesPerSearch": {
            "title": "💯 Max places per search term",
            "minimum": 1,
            "type": "integer",
            "description": "Upper bound on unique places collected per search term (across all tiles). Set high with a Location to sweep an entire area.",
            "default": 100
          },
          "language": {
            "title": "🌍 Language",
            "enum": [
              "ko",
              "en",
              "ja",
              "zh"
            ],
            "type": "string",
            "description": "Response language for place details.",
            "default": "ko"
          },
          "scrapeDetails": {
            "title": "Scrape place detail pages (slower)",
            "type": "boolean",
            "description": "Fetch each place's detail record: virtual phone, conveniences, business hours, full menu (name/price/description/images) and review totals. Adds one request per place.",
            "default": false
          },
          "maxReviewsPerPlace": {
            "title": "Reviews per place",
            "minimum": 0,
            "type": "integer",
            "description": "When Scrape place detail pages is on, include up to this many visitor reviews and blog reviews per place (full text, rating, dates). 0 = review totals only, no review bodies.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}