{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Maps Reviews Scraper",
    "description": "Extract all reviews of a place from Naver Maps. Scrape visitor reviews (방문자 리뷰) and blog/café reviews (블로그·카페 리뷰) from any Naver Maps place — full review text, rating, visit keywords, dates, photos, owner replies and reviewer info. One row per review.",
    "version": "0.1",
    "x-build-id": "NpGuPIJ2Zbj3gezq2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hgservices~naver-maps-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hgservices-naver-maps-reviews-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-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hgservices-naver-maps-reviews-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-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hgservices-naver-maps-reviews-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": {
          "placeUrls": {
            "title": "🔗 Naver place URLs",
            "type": "array",
            "description": "The places whose reviews you want. Paste Naver Maps place URLs — e.g. https://map.naver.com/p/entry/place/1005495070 — or naver.me share links (resolved automatically). This is the simplest way to target exact places.",
            "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"
            }
          },
          "searchStrings": {
            "title": "🔍 Search term(s)",
            "type": "array",
            "description": "Instead of listing places, find them by search: enter what you'd type into the Naver Maps search bar, e.g. 삼겹살 (pork BBQ), 강남 카페 (Gangnam cafe). Reviews are then scraped from every matching place. Korean terms match best. One term per line.",
            "items": {
              "type": "string"
            }
          },
          "locationQuery": {
            "title": "📍 Location",
            "type": "string",
            "description": "Optional area to restrict the search to, e.g. \"Gangnam, Seoul\" or \"강남구\". Resolved to a map area via OpenStreetMap. Leave empty to search all of Naver Maps for the term."
          },
          "province": {
            "title": "🗺 Province / Metropolitan city (시·도)",
            "type": "string",
            "description": "Korea's top administrative tier (시/도) — a special/metropolitan city or a province. e.g. \"Seoul\" (서울특별시), \"Busan\" (부산광역시)."
          },
          "municipality": {
            "title": "🏙 City / County / District (시·군·구)",
            "type": "string",
            "description": "Korea's municipal tier (시/군/구) — a district (구), city (시) or county (군). e.g. \"Gangnam-gu\" (강남구), \"Suwon-si\" (수원시)."
          },
          "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 for search — overrides 📍 Location and the structured fields. Coordinate order is longitude first."
          },
          "maxPlacesPerSearch": {
            "title": "💯 Max places per search term",
            "minimum": 1,
            "type": "integer",
            "description": "When discovering places by search, the maximum number of places to collect per term (reviews are then scraped from each). Ignored in URL / ID mode.",
            "default": 20
          },
          "maxReviewsPerPlace": {
            "title": "⭐ Max reviews per place",
            "minimum": 1,
            "type": "integer",
            "description": "The maximum number of reviews to scrape from each place. Reviews come newest-first. Set high to pull a place's entire review history. Split across the enabled review sources below.",
            "default": 100
          },
          "reviewSources": {
            "title": "Review type",
            "enum": [
              "both",
              "visitor",
              "blog"
            ],
            "type": "string",
            "description": "Which Naver reviews to scrape. Naver has two kinds: Visitor reviews (방문자 리뷰) written on the place page, and Blog & café reviews (블로그·카페 리뷰) — external Naver Blog/Café posts linked to the place.",
            "default": "both"
          },
          "includePersonalData": {
            "title": "Include reviewer personal data",
            "type": "boolean",
            "description": "Include the reviewer's identity — nickname, profile URL and photo (and the blog author's name / blog for blog reviews). Personal data may be protected by law (e.g. GDPR); turn this off to omit reviewer identity from the output.",
            "default": true
          },
          "language": {
            "title": "🌍 Language",
            "enum": [
              "ko",
              "en",
              "ja",
              "zh"
            ],
            "type": "string",
            "description": "Preferred response language for review content and place info, where Naver provides it.",
            "default": "ko"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}