ActorStack.dev

How to scrape Naver Place, the directory Koreans actually use

Google Maps coverage in Korea is thin; Naver Place is where the data is. A walkthrough of querying it, and of the padding you have to remove before the results mean anything.

By Oswaldo Carabano9 min read

Short answer

Naver Place serves its business and review data to plain HTTP requests from datacenter IPs, so no login, browser or proxy is needed. Two things decide whether the result is usable: query in Korean, because Naver's search is Korean-first, and remove the out-of-area businesses Naver pads its results with — measured on one query, only 162 of 300 results were actually in the area asked for.

Key points

  • No login, no cookies, no browser. Naver Place answers plain HTTP requests from datacenter IPs.
  • Query in Korean: `치과` returns far more than `dentist`, because the search is Korean-first.
  • Naver pads search results with businesses from neighbouring areas, silently and with no marker. The Actor filters them and reports the count it dropped.
  • 300 results per query is the ceiling, so coverage comes from more regions or narrower terms rather than a bigger limit.
  • One entity type per run — businesses, reviews, menu items or photos — so each dataset has a single shape.
On this page9 sections

Korea is one of the few markets where the local data does not live on Google. It lives on Naver, and Naver Place answers plain HTTP requests — no login, no browser, no proxy. The work is not in getting the data; it is in making sure the data is where you think it is.

Why Naver and not Google Maps

Koreans search, review and navigate on Naver. A Korean dentist often has hundreds of Naver reviews and a handful on Google, and the menus with prices in KRW exist on Naver and not elsewhere. A Korea dataset built on Google Maps is not wrong so much as thin — the comparison in full.

Step 1 — query in Korean

This single choice moves coverage more than any other input. 치과 returns far more dentists than dentist, because businesses register their category in Korean and Naver's index is Korean-first. English terms work and undercount.

Choosing terms and regions goes into which administrative level to query and why it changes the padding ratio.

Step 2 — name the regions

Regions are space-separated administrative names, widest level first: 서울 강남구, 부산 해운대구. Leaving the list empty sweeps all 17 first-level regions.

Naming the region does two jobs. It partitions the search, which matters because of the 300-result ceiling — and it gives the Actor something to check each result's address against, which is what removes the out-of-area padding.

Step 3 — pick one entity type

entityType takes businesses, reviews, menus or photos, one per run, so each dataset has a single clean shape. Reviews cost more than businesses to collect, because each business needs its own paginated sweep — start small and see the shape before running wide.

Step 4 — run it and read the log

input.json
{
  "queries": ["치과", "카페"],
  "regions": ["서울 강남구", "서울 마포구"],
  "entityType": "businesses",
  "maxResults": 200,
  "includeReputation": true
}

The run log is not decoration here. It reports, per region, something like:

run log
"역삼동": 162 of 300 results are actually located in this area.
138 were padding from neighbouring areas and were dropped.
Naver reports 638 matches for this query, but that count includes
out-of-area padding and is not an inventory figure.

The padding you have to remove

Naver fills its result pages with businesses from neighbouring areas — silently, with HTTP 200 and no marker in the response. Measured on 역삼동 치과: 638 matches reported, 300 served, 162 actually in 역삼동.

Pass that through and your “dentists in 역삼동” dataset is 46% wrong on geography while looking complete. The Actor filters on the address and reports the dropped count. The full measurement across ten queries.

Reading the output

A business row carries name, translated category with the Korean original, phone with phone_is_virtual, road and jibun addresses, coordinates, opening status, review counts and — if enabled — Naver's own reputation aggregates.

Two fields need reading before you trust the others. phone_is_virtual says whether you got Naver's 0507 relay rather than the real line. And rating is null for verticals where Naver computes none — clinics, academies, pharmacies — rather than a zero that would read as a bad score.

What a run costs

$0.0014 per business, $0.0008 per reputation block, $0.00045 per review, $0.0002 per menu item or photo. Two hundred businesses with reputation is about 44 cents. Failed requests go to the key-value store under ERRORS and are never charged.

Four mistakes that waste a run

  1. Searching in English. You get a fraction of the businesses and no warning.
  2. Leaving regions empty for a city-level job. Without a named region there is nothing to filter padding against.
  3. Setting `maxResults` above 300 for one query. Naver stops at 300; the number above it does nothing.
  4. Treating a null rating as zero. For clinics and pharmacies Naver computes no score at all.

Frequently asked questions

Do I need a proxy to scrape Naver Place?
No. Naver Place answers plain HTTP requests from datacenter IPs, so the proxy input exists but is unused by default. That makes it one of the cheapest local-business sources to run.
Should I search in Korean or English?
Korean. Naver's search is Korean-first, and a Korean category term returns far more businesses than its English equivalent. English works but covers a fraction of the inventory.
Why do results include businesses from other districts?
Because Naver pads its search responses with businesses from neighbouring areas, with HTTP 200 and no marker. The Actor filters on the address and reports how many it dropped — on one measured query, 138 of 300 results were padding.
How many businesses can one query return?
300, which is Naver's own ceiling. The match count it reports is larger and includes padding, so it is not an inventory figure. Add regions to cover more ground.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 19 Aug 2026
    Naver Place Business & Reviews Scraper — Actor README and input schemaActorStack / Apify Store
  2. Site declarationchecked 19 Aug 2026
    map.naver.com/robots.txtNaver
  3. Platform docschecked 18 Aug 2026
    Actors — Apify platform documentationApify
  4. Platform docschecked 18 Aug 2026
    Dataset storageApify
A Seoul street lined with restaurants, their Korean signs stacked up the building fronts.
Naver PlaceGuide

Korean search terms

Naver's search is Korean-first. The choice of term decides coverage more than any other input, and the region list decides whether the results are where you think they are.

6 min
A narrow Seoul street at night, lit by shopfront signage on both sides.
Naver PlaceGuide

The 300 ceiling

Every Naver query stops at 300 results regardless of what it claims to have matched. Coverage is a function of how you partition the map, not of how high you set a limit.

7 min
A narrow Seoul street at night, lit by shopfront signage on both sides.
Naver PlaceComparison

Naver vs Google Maps

In most countries this is not a question. In Korea it is the whole question, because the platform Koreans use is not the one most tooling targets.

7 min