{
  "openapi": "3.0.1",
  "info": {
    "title": "Naver Map Reviews Scraper (Naver Place Reviews)",
    "description": "Give Naver Map (Naver Place) place IDs or URLs and get visitor reviews of Korean restaurants, cafes, clinics and shops: rating, text, visit date, keywords, menu, photos, owner reply, plus a rating summary per place. Reviewer identity is never collected.",
    "version": "0.2",
    "x-build-id": "ZgoPQpbe1KThj7zZm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/magenta_courser~naver-place-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-magenta_courser-naver-place-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/magenta_courser~naver-place-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-magenta_courser-naver-place-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/magenta_courser~naver-place-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-magenta_courser-naver-place-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",
        "required": [
          "places"
        ],
        "properties": {
          "places": {
            "title": "Places (IDs or URLs)",
            "type": "array",
            "description": "Naver Place IDs or Naver Map place URLs, one per line. Accepted formats: a numeric ID such as 1922651675; https://map.naver.com/p/entry/place/1922651675; https://pcmap.place.naver.com/restaurant/1922651675/home; https://m.place.naver.com/hairshop/2005275293/review. The \"id\" field from Naver Place Search Scraper works directly. Short naver.me links are not supported.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of visitor reviews to save for each place, in Naver's \"recent\" order (newest visit first). Integer from 1 to 100000. Default 100. Example: 1000. With \"Only new reviews since last run\" on, this limits the new reviews saved per place.",
            "default": 100
          },
          "reviewsNewerThan": {
            "title": "Only reviews visited on or after (visit date)",
            "type": "string",
            "description": "Optional date in YYYY-MM-DD format, e.g. 2026-09-01. Filters by the VISIT date (visitedAt), not by when the review was written, read as 00:00 Korea time (KST, UTC+9). Paging stops shortly after the list passes this date. A review written today about a visit before this date is NOT returned - to get reviews written since your last run, use \"Only new reviews since last run\" instead. Leave empty for no date filter. API alias: visitedAfter."
          },
          "onlyNewSinceLastRun": {
            "title": "Only new reviews since last run",
            "type": "boolean",
            "description": "true or false. Default false. When true, the Actor remembers, per place, the IDs of reviews it actually saved (in a named key-value store in your account) and returns only reviews it has not saved before. The first run for a place saves the newest reviews up to the limit and sets the starting point. Later runs re-check recent pages with an overlap, so reviews written late about an earlier visit are still found if the visit is within the lookback window. Reviews cut off by your max cost per run are not remembered and come back next run. Pricing in this mode: per review saved plus one place check per place checked, even with no new reviews (see the Pricing tab). Places not found, failed on the first page, or not started are not charged.",
            "default": false
          },
          "newReviewLookbackDays": {
            "title": "New reviews: visit-date lookback (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Used only with \"Only new reviews since last run\". How many days before the previous completed run to keep re-checking by visit date. A review written after the last run about a visit older than this is not found. Default 30. Larger values make each run read more pages (no extra review charges).",
            "default": 30
          },
          "historyStoreName": {
            "title": "New reviews: history name",
            "type": "string",
            "description": "Used only with \"Only new reviews since last run\". Name of the key-value store in your Apify account that keeps the saved review IDs. Default naver-place-reviews-history. Use a different name for each independent schedule that monitors the same places, otherwise one schedule's run marks reviews as already seen for the other. Letters, digits and \"-\" only."
          },
          "includePlaceSummary": {
            "title": "Include place summary row",
            "type": "boolean",
            "description": "true or false. Default true. Adds free (not charged) rows: one \"placeSummary\" row per place (status, stopReason, reviewsSaved, newReviewCount, average rating, review counts, star distribution, themes, menu mentions, keyword votes) and one \"runSummary\" row per run. Filter rows by the \"type\" field. The same status is always saved in the run's key-value store as RUN_SUMMARY.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Keep the default Apify Proxy (datacenter); Naver rate-limits repeated requests from one IP.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}