Naver Maps Scraper avatar

Naver Maps Scraper

Pricing

from $1.99 / 1,000 search results

Go to Apify Store
Naver Maps Scraper

Naver Maps Scraper

Scrape points-of-interest (POI) from Naver Maps (map.naver.com). Extracts business names, addresses, phones, ratings, reviews, hours, coordinates, and categories. Supports pagination. Ideal for local business discovery in the Korean market.

Pricing

from $1.99 / 1,000 search results

Rating

0.0

(0)

Developer

Search API

Search API

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Share

Fast, query-driven Naver Maps extraction for Korean local-business data. Version 3 uses the public Naver Maps search UI, intercepts safe response metadata, and maps the page's structured Apollo state into a stable dataset. It does not store raw API or Apollo payloads.

Modes

Use query for one search or queries for several. Multiple-query output is selected round-robin so an early query cannot consume the entire global maxItems limit.

{
"mode": "search",
"queries": ["강남 맛집", "서울 카페"],
"maxItems": 20,
"maxItemsPerQuery": 20,
"maxPages": 2,
"sortBy": "relevance",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Naver currently preloads up to 70 structured results for a query. maxPages exposes these in ten-record logical pages and is capped at seven.

Details

Use placeId for one place or placeIds for several. Details mode can return menus, photos, facilities, accepted payments, review excerpts, seating, and nearby transit when Naver publishes them.

{
"mode": "details",
"placeIds": ["18485199", "1427134948"],
"maxItems": 2,
"maxConcurrency": 2,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Naver Maps search and place URLs remain accepted through startUrls for backward compatibility, but search terms and place IDs are simpler.

Filters and sorting

Search mode supports:

  • minRating
  • minReviewCount (visitor plus blog/cafe reviews)
  • categories
  • sortBy: relevance, rating, reviewCount, or distance

Missing source fields are omitted instead of filled with placeholders. The Actor preserves numeric counts and coordinates as numbers, removes empty strings/arrays/objects, deduplicates by Naver place ID, and rejects signed or credential-bearing URLs.

Main output fields

All records include a Naver place ID, name, canonical detail URL, provider/source fields, locale, retrieval method, timestamp, positions, and run metadata. Depending on mode and source availability, records can also include:

  • Categories, road/lot/common address, coordinates, phones, and distance
  • Visitor rating; visitor, blog/cafe, booking, and combined review counts
  • Images, public review snippets, facilities, hours, booking, Naver Pay, delivery, pickup, coupons, and directions
  • Detail-mode menus, photo metadata, payment options, blog excerpts, seating, subway stations, and bus stations
  • Search-card weeklyPopularMenuLabel and weeklyPopularMenuText when Naver visibly renders the weekly-menu button

Search-card menu values are read from the visible result-card button in the embedded Naver Place list. The button displays the exact label 주간 인기 많은 메뉴 followed by the menu text; the Actor preserves the displayed text as one string instead of splitting it into assumed menu records. The menu is attached only when the visible button can be paired with one place name in the same card. Cards without a rendered menu button or an unambiguous place-name match omit these fields. This is page-rendered DOM enrichment, so records not rendered in the current result list may not carry the menu fields.

No authorization headers, cookies, proxy credentials, CAPTCHA pages, challenge payloads, raw transport objects, Apollo cache IDs, or signed URLs are written to the dataset.

Proxy, sessions, and browser compatibility

proxyConfiguration supports Apify Proxy and custom proxy URLs. The Actor uses a bounded session pool, persistent cookies per session, and one internally consistent desktop browser fingerprint per session. GOOGLE_SERP is rejected because that proxy group supports specific Google HTTP traffic and is not compatible with Naver Maps HTTPS browser navigation.

The Actor does not solve or bypass CAPTCHAs. A visible challenge marks the session bad, retries within the configured limit, and fails without storing the challenge page.

Performance

The default 50-record local QA run completed in about 24 seconds on the test host. A 70-record, seven-page logical search completed in about 24 seconds. Multiple searches run concurrently up to maxConcurrency; actual cloud timing depends on cold start, proxy latency, and Naver.

Images, media, and fonts are blocked by default while scripts and structured-data requests remain enabled. Set blockResources to false if Naver changes its rendering requirements.

Local development

npm ci
npm test
npm run validate:dataset
apify run --purge --input-file ./INPUT.json
npm run audit:dataset

For an expected empty filtered result, run node scripts/audit-dataset.js --allow-empty.

Known limitations

  • Search results and fields are limited to what Naver publishes in the public UI for the selected query and locale.
  • Naver may omit ratings, direct phone numbers, booking information, menus, or transit data for individual places; omitted values are not fabricated.
  • One query currently exposes at most 70 preloaded structured records.
  • Highly automated or unusual traffic can trigger Naver's access challenge. Use authorized Apify Proxy configuration and conservative concurrency, but do not attempt to solve or bypass the challenge.