Naver Place Scraper (Korean Maps: Businesses + Reviews) avatar

Naver Place Scraper (Korean Maps: Businesses + Reviews)

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Naver Place Scraper (Korean Maps: Businesses + Reviews)

Naver Place Scraper (Korean Maps: Businesses + Reviews)

Scrape Korean business listings and reviews from Naver Place / Naver Maps by search query. Returns place details (name, category, address, phone, rating, review count) plus review text, rating and keywords. Privacy-safe: no reviewer names/IDs collected.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Seok June Park

Seok June Park

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Share

Naver Place Scraper — Korean Business Listings & Reviews

Scrape business listings and reviews from Naver Place / Naver Maps — Korea's dominant local-search and maps platform — by keyword. Give it a Korean search query like 강남역 카페 ("Gangnam Station cafe") and get back clean, structured JSON for every business: name, category, address, phone, rating, review count, plus the review text, rating, date and keywords.

Naver is where Korean consumers actually find and review local businesses (Google Maps has minimal coverage in Korea). If you need Korean local-business data, this is the source.

Privacy-first. This actor never collects reviewer names, IDs, or profile links. Reviews contain only text, rating, date, and keywords. Business phone numbers and addresses are public business-registration information and are included.


What it does

  • Takes a Naver Maps search query (location + category works best).
  • Pages through Naver's public, server-rendered search results.
  • Extracts each business and its attached visitor reviews.
  • Emits one record per business, with a nested reviews array, matching a stable schema.

Input

FieldTypeDefaultDescription
searchQuerystring— (required)Naver Maps query, e.g. 강남역 카페, 홍대 맛집, 제주 흑돼지.
maxPlacesinteger20Max businesses to scrape.
includeReviewsbooleantrueAttach visitor reviews to each business.
maxReviewsPerPlaceinteger20Max reviews per business.
proxyConfigurationobjectRESIDENTIAL / KRProxy settings (see Proxy & rate limits).

Input example

{
"searchQuery": "강남역 카페",
"maxPlaces": 20,
"includeReviews": true,
"maxReviewsPerPlace": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "KR"
}
}

Output

One dataset item per business. Reviews are nested under reviews. This is real output from a live run for 강남역 카페 (see samples/sample-output.json for 27 full records):

{
"source": "naver_place",
"place_id": "1668757640",
"name": "퍼스트커피랩 강남점",
"category": "카페,디저트",
"address": "서울 강남구 역삼동",
"road_address": "봉은사로6길 39 1층",
"phone": "0507-1315-7680",
"rating": null,
"review_count": 2792,
"url": "https://m.place.naver.com/place/1668757640/home",
"scraped_at": "2026-07-07T12:00:00+09:00",
"reviews": [
{
"place_id": "1668757640",
"rating": null,
"text": "디저트들이 다양하고 커피가 맛있어요 :) 베이커리부터 구움과자 마들렌하고 휘낭시에까지 라인업 완벽!",
"date": null,
"keywords": ["디저트", "커피", "베이커리", "구움과자", "마들렌", "휘낭시에"]
}
]
}

Field notes

  • place_id — Naver's stable business identifier; use it to build the URL or re-fetch.
  • phone — the business's public number (Naver's public safe-number is used when a raw landline is not exposed). Public business info.
  • rating — Naver has deprecated the visible 1–5 star average for many businesses, so this is frequently null. review_count is the reliable popularity signal.
  • keywords — salient tokens Naver highlights in each review snippet; a ready-made signal for sentiment/topic analysis.
  • date — populated when the review source exposes a visit date; null for search-embedded snippets.

Use cases

  • Local SEO monitoring — track how your (or a client's) business ranks for target queries on Naver, and monitor review volume/velocity over time.
  • Review sentiment analysis for Korean market entry — pull thousands of real Korean-language reviews and keywords for a category or district before launching, and feed them straight into an LLM or NLP pipeline. No PII to scrub — reviewer identity is never collected.
  • Competitor research — snapshot every competitor in a district (address, phone, category, review counts) in one run.
  • AI agents & lead lists — structured Korean local-business data for RAG, enrichment, or outreach.

Proxy & rate limits

Naver aggressively rate-limits and CAPTCHA-gates datacenter IPs. This actor uses two paths:

  1. Search-page path (primary). Reads Naver's public server-rendered search results. This works from many IPs and returns the businesses plus a few embedded reviews each — this is what produced the samples in this repo, with no proxy.
  2. Per-place GraphQL path (deep reviews). pcmap-api.place.naver.com/graphql, used when you request more reviews than the search page embeds. This endpoint returns a CAPTCHA challenge for datacenter IPs (HTTP 405 + title="captcha"; evidence in samples/graphql-block-evidence.html). The actor detects this and gracefully falls back to the search-embedded reviews.

For reliable, high-volume runs and deep per-place review pagination, use Apify Proxy with the RESIDENTIAL group and country KR (the default in the input schema). The actor honours proxyConfiguration throughout. Without a residential IP you will still get businesses and a handful of reviews each, but review depth and total place coverage are limited by Naver's anti-bot.

The actor runs politely: effectively concurrency 1 with ≥600 ms between requests.

Legality & data ethics

  • Only public data is collected — no login, no private endpoints.
  • No personal data. Reviewer names, IDs, and profiles are never read or stored. Reviews carry only text, rating, date, and keywords. Business phone/address are public business-registration details.
  • You are responsible for using the output in compliance with Naver's terms and applicable law (e.g. PIPA, GDPR). Because no personal data is emitted, output is safe to feed directly into analytics and LLM pipelines.

Local development

npm install
# put input in ./storage/key_value_stores/default/INPUT.json, then:
npm start # results land in ./storage/datasets/default