Naver Map Scraper icon

Naver Map Scraper

From $1/1K. Scrape Naver Map places by keyword or URL: names, categories, ratings, phones, addresses, GPS, menus, opening hours, facilities, subway and…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Naver Map Scraper at a glance

Naver Map Scraper is a ready-to-run Apify actor from abotapi for collecting travel data. Its documented output includes name, change type (incremental mode), category, rating and reviews, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Travel, Lead Generation, Ecommerce
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
24 options

From $1/1K. Scrape Naver Map places by keyword or URL: names, categories, ratings, phones, addresses, GPS, menus, opening hours, facilities, subway and bus transit, photos, plus visitor and blog reviews. 70+ fields, full pagination, three sort orders, fast and low cost.

What Naver Map Scraper $1💰 Places, Menus, Reviews can do

  • 50+ fields per place. GPS coordinates, place id, road and lot addresses, virtual phone, facilities, payment options, transit stops, photos, and both review types.
  • Two ways to find places. Search by keyword, or paste a Naver Map place or search URL, including short naver.me links.
  • Optional full place-page enrichment. Menus, opening hours, facilities, payment methods, and nearby subway and bus stops, added with one extra request per place.
  • Two kinds of reviews. Visitor star reviews (rating, text, author, visit date, photos, keyword tags) collected on demand, and blog reviews that arrive with the place details at no extra request.
  • Built for monitoring. Incremental mode remembers a saved search across scheduled runs and tags every place as new, updated or unchanged, so a recurring run only bills for what changed.
  • Full Korean text support. Keywords, names, addresses, menus and reviews are read and returned in Korean without any special configuration.

Choose what to collect

These inputs let you configure Naver Map Scraper $1💰 Places, Menus, Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredHow to choose what to scrape. 'search' runs the keywords you enter; 'url' scrapes specific Naver Map place or search URLs you paste.

Choices: search, url

keywordsarrayOne or more Naver Map search terms, for example 만두집, 강남 카페, or 서울 호텔. Each keyword is paginated to its full result count (capped by Max records). Only applies in 'search' mode.
sortstringOrder applied to the ~50 places Naver's results page returns per keyword (re-ordered by this actor; Naver's own deeper pages are not reachable). 'distance' needs Search centre; 'popular' and 'reviews' rank by visitor-review count; 'saved' by save count when Naver exposes it. Only applies in 'search' mode.

Choices: relevance, distance, popular, reviews, saved

searchCoordinatesstringOptional 'latitude,longitude' (for example 37.4979,127.0276 for Gangnam). Used as the reference point for the 'distance' sort and the radius filter; it does not move Naver's own search area, which follows the keyword. Only applies in 'search' mode.
newlyOpenedbooleanKeep only places Naver flags as newly opened. Applied to the ~50 places per keyword.
naverPaybooleanKeep only places that accept Naver Pay. Applied to the ~50 places per keyword.
hasCouponbooleanKeep only places with at least one coupon, when Naver reports coupons for the place.
Show 17 more inputs
More input fields
InputWhat it controls
wheelchairAccessiblebooleanKeep only places flagged with a wheelchair-accessible entrance.
searchRadiusKmnumberKeep only places within this distance of Search centre. Filters the ~50 places per keyword; it is not an area sweep. 0 or empty disables it.
reviewCutoffDatestringWhen collecting visitor reviews, drop reviews dated before this day. Empty keeps all.
startUrlsarrayNaver Map URLs to scrape: a place page (map.naver.com/p/entry/place/1234567, m.place.naver.com/restaurant/1234567/home), a short naver.me link, or a search page (map.naver.com/p/search/만두집). Multiple URLs supported. Only applies in 'url' mode.
includeDetailsbooleanFetch the full place page for each result: menus, opening hours, facilities, payment options, exact coordinates, nearby subway and bus stops, photos, and blog reviews. This makes one extra request per place, so it is slower and billed separately. Turn off for a fast, cheap list-only run.
includeReviewsbooleanCollect star-rated visitor reviews for each place (rating, text, author, visit date, photos, keyword tags), paginated up to Max reviews per place. Adds extra requests per place.
maxReviewsintegerUpper bound on visitor reviews collected per place when Include visitor reviews is on. 0 disables review collection. Capped at 1000 per place.
maxItemsintegerStop after this many places across the whole run. The default (20) keeps a trial run small and cheap; set 0 for no limit. Naver's results page carries about 50 places per keyword, so use several keywords for more coverage.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large keyword pull without returning or charging for places already collected there. Use this after an interrupted run. For recurring daily/weekly monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching places as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED places, tagged with changeType/changedFields/firstSeenAt/lastSeenAt. A place is UPDATED when any returned field changes (name, category, address, coordinates, phone, hours, menu, photos, ratings, review counts and review texts, and so on); fields you list under "Ignore fields when detecting changes" are compared as unchanged, and integral numbers such as 4.0 and 4 count as equal. Everything stays in the output either way. Turn on "Emit unchanged" or "Emit expired" only when you also want those places returned (and billed). EXPIRED is only produced after a search that was fully walked, never when Max records, the per-search result cap or Resume cut it short. State is kept separately per search + sort + coordinates + detail settings; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/sort/coordinates and detail settings, different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return places that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return places that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max records capped it, Resume was used, or a search could not be reached. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Field names that must not trigger UPDATED or appear in changedFields in incremental mode. Use a top-level name such as visitorReviewCount, or a dotted path for a nested field such as visitorReviews.created (lists are searched element by element). The fields stay in the output; they are only left out of the comparison. Editing this list never re-flags places that did not otherwise change.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

nameName (text)
changeTypeChange type (incremental mode) (text)
categoryCategory (text)
visitorReviewScoreRating (number)
visitorReviewCountReviews (number)
addressAddress (text)
roadAddressRoad Address (text)
phonePhone (text)
latitudeLat (number)
longitudeLng (number)
searchKeywordKeyword (text)
placeUrlURL (link)
Show 23 more fields
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
placeIdPlace ID (text)
businessCategoryBusiness category (text)
fullAddressAddress (text)
virtualPhoneVirtual phone (text)
homepageHomepage (text)
openingHoursOpening hours (object)
conveniencesConveniences (array)
paymentInfoPayment (array)
menusMenus (array)
subwayStationsSubway (array)
busStationsBus (array)
topPhotosPhotos (array)
blogReviewsBlog reviews (array)
visitorReviews.idReview ID (text)
visitorReviews.ratingRating (number)
visitorReviews.createdCreated (text)
visitorReviews.visitedVisited (text)
visitorReviews.authorNicknameAuthor (text)
visitorReviews.bodyReview (text)
visitorReviews.votedKeywordsKeywords (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordType": "place",
  "id": "11724463",
  "placeId": "11724463",
  "name": "Sample Dumpling House",
  "category": "Korean restaurant",
  "businessCategory": "restaurant",
  "placeUrl": "https://map.naver.com/p/entry/place/11724463",
  "latitude": 37.5,
  "longitude": 127,
  "distance": null,
  "phone": "02-000-0000",
  "virtualPhone": "0507-0000-0000",
  "address": "Sample-dong 000-0",
  "roadAddress": "Sample-ro 000",
  "fullAddress": "Seoul Sample-gu Sample-dong 000-0",
  "visitorReviewScore": 4.4,
  "visitorReviewCount": 128,
  "totalReviewCount": 340,
  "blogCafeReviewCount": 212,
  "imageUrls": [
    "https://example.com/photo-000.jpg"
  ],
  "conveniences": [
    "Parking",
    "Wi-Fi"
  ],
  "paymentInfo": [
    "Card",
    "Mobile pay"
  ],
  "openingHours": {
    "status": "Open",
    "description": "11:00 - 21:00"
  },
  "menus": [
    {
      "name": "Sample Menu",
      "price": "8000",
      "recommend": false,
      "images": []
    }
  ],
  "subwayStations": [
    {
      "displayName": "Sample Station",
      "nearestExit": "3",
      "walkTime": 2,
      "walkingDistance": 130
    }
  ],
  "busStations": [
    {
      "name": "Sample Stop",
      "walkTime": 1,
      "walkingDistance": 20
    }
  ],
  "topPhotos": [
    "https://example.com/photo-001.jpg"
  ],
  "blogReviews": [
    {
      "title": "Sample blog title",
      "url": "https://example.com/blog/000",
      "authorName": "blogger000"
    }
  ],
  "visitorReviews": [
    {
      "rating": 5,
      "body": "Sample review text",
      "authorNickname": "user000",
      "visited": "0.0"
    }
  ],
  "searchKeyword": "만두집"
}

Ways to use this data

  • Local SEO and business audits: pull ratings, review counts, categories and contact details for every business matching a keyword or area.
  • Sales and lead generation: build prospect lists of local businesses with phone numbers, addresses and review volume.
  • Food delivery and dining apps: collect restaurant and cafe details, menus and opening hours for a city or neighborhood.
  • Competitive and market research: track how a chain's locations, ratings and reviews change over time with Incremental mode.
  • Real estate and travel planning: gather nearby points of interest, transit access and photos for a given area.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Naver Map Scraper return?

The documented output for Naver Map Scraper includes name, change type (incremental mode), category, rating, reviews, address, road address and phone. Availability of each field depends on the source page and the selected mode.

How much does Naver Map Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed places on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then tags every place NEW, UPDATED or UNCHANGED against the previous run of the same search, and unchanged places are not returned or billed unless you also turn on Emit unchanged.

What is the difference between Resume and Incremental mode?

Resume from a previous run continues ONE interrupted crawl: paste a run or dataset id and this run skips every place it already collected. Incremental mode is for running the same search again and again on a schedule: it remembers the previous run itself, with no id to paste, and classifies every place as new, updated, unchanged, reappeared or expired. Turning on Incremental mode together with a resumeFromRunId that already has saved state for the same search stops the run with a message asking you to remove one of the two.

Why did my run fail instead of returning an empty dataset?

A run fails when Naver's place search could not be reached for any keyword and no place URLs were given to fall back on, when the resumeFromRunId you pasted cannot be read, or when Incremental mode and Resume are combined for a search that already has saved state. A search that genuinely matches nothing, or an Incremental mode run where nothing changed since last time, still succeeds, it just returns zero records.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Naver Map Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.