# Naver Map Search Results Scraper (`delicious_zebu/naver-map-search-results-scraper`) Actor

Scrape Naver Map business listings by keyword or URL: names, categories, ratings, reviews, phone numbers, addresses, coordinates, hours, menus and more. A fast, no-code Naver Place API alternative.

- **URL**: https://apify.com/delicious_zebu/naver-map-search-results-scraper.md
- **Developed by:** [Zebu Data](https://apify.com/delicious_zebu) (community)
- **Categories:** Lead generation, SEO tools, Other
- **Stats:** 377 total users, 43 monthly users, 100.0% runs succeeded, 47 bookmarks
- **User rating**: 4.95 out of 5 stars

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Naver Map Search Results Scraper do?

**Naver Map Search Results Scraper** extracts business listings from [Naver Map](https://map.naver.com) — South Korea's most-used map and local search platform. Type any keyword, exactly as you would search on Naver, and get clean, structured data for every matching place: restaurants, cafés, hospitals, hotels, salons, shops and more.

It works as an unofficial **Naver Place / Naver Map API alternative**, so you can pull Korean local business data at scale without writing a scraper or reverse-engineering Naver's private API.

### Why use Naver Map Search Results Scraper?

- 🔎 **Keyword search, just like Naver** — search "강남 맛집", "부산 애견 펜션" or any brand name and get every result.
- ⭐ **Rich data in one run** — ratings, review counts, review keywords, menus with prices, photos, coordinates, business hours, and more.
- ⚡ **Fast & low cost** — a list-first design pulls up to 70 places per request; place details are fetched in parallel. Turn details off for even faster, cheaper runs.
- 🧩 **Every business type** — restaurants, cafés, hospitals/clinics, accommodations and general places are all supported automatically.
- 🧑‍💻 **No-code and API-friendly** — run it from the Apify Console or call it from your own code; export to JSON, CSV, Excel or via API.

#### How this Actor compares

| Feature | This Actor | Typical alternatives |
|---|---|---|
| Pricing | $1.50 / 1,000 results | $3.00 / 1,000 results |
| Method | Direct API (list-first) | Browser-based (slower) |
| Rating + review keywords | ✅ | Often missing |
| Menus, photos, coordinates | ✅ | Partial |
| Cheap list-only mode | ✅ | ❌ |

### What data can you extract from Naver Map?

| Field | Type | Description |
|---|---|---|
| `Name` | text | Business name |
| `Category` | text | Naver category (e.g. 돼지고기구이) |
| `OverallRating` | text | Visitor review score (0–5), when Naver publishes one |
| `ReviewCount` | number | Total reviews (visitor + blog) |
| `VisitorReviewCount` / `BlogReviewCount` | number | Review counts by source |
| `SaveCount` | text | How many users saved/bookmarked the place (popularity) |
| `PriceRange` | text | Naver price band (e.g. 5만원 대) |
| `Address` / `FullAddress` | text | Road address and full address |
| `Contact` | text | Phone number |
| `BusinessStatus` / `BusinessHours` | text | Open/closed status and summary hours |
| `BusinessHoursDetail` | array | Structured weekly opening hours with break times |
| `Latitude` / `Longitude` | text | GPS coordinates |
| `Images` / `ImageCount` | array / number | Photo URLs and photo count |
| `PlaceId` / `NaverMapUrl` | text / link | Naver place ID and a ready-to-open map link |
| `BookingUrl` | link | Naver reservation link (when available) |
| `Coupons` | array | Discount coupons (title + description) |
| `MenuItems` | array | Menu names, prices and images |
| `Reviews` | array | Blog reviews (author, title, body) |
| `VisitorReviews` | array | Visitor review text (restaurants & cafés) |
| `VisitorReviewKeywords` | array | Review theme keywords with counts (e.g. 맛: 826) |
| `Keywords` | array | Business keywords |
| `SubwayStations` / `NearbyTransportation` | array / text | Nearest stations and walking distance |
| `Website` / `Amenities` / `PaymentInfo` | link / text / array | Homepage, facilities and payment methods |
| `MichelinGuide` / `TVAppearance` / `BroadcastInfo` | object / text / array | Michelin status and TV appearances |
| `Description` | text | Full place description |

### How to scrape Naver Map

1. **Open the Actor** on Apify and click **Try for free**.
2. **Enter keywords** — add one or more search terms (include a region for local searches, e.g. `강남 맛집`).
3. **Choose options** (optional) — set a max results per keyword, or turn off **Scrape full place details** for faster, cheaper runs.
4. **Click Start** — the Actor searches Naver Map and collects every matching place.
5. **Download results** — export as JSON, CSV, Excel, XML or via the Apify API.

### How much does it cost?

This Actor uses **pay-per-result** pricing at **$1.50 per 1,000 results** — you only pay for the data you collect. New Apify accounts include monthly free usage credits, so you can try it at no cost.

Because it talks to Naver's data API directly (instead of driving a full browser), runtime is low and predictable. Running with **Scrape full place details turned off** is the cheapest and fastest option when you only need the core listing data.

### Input

Configure the run on the **Input** tab, or pass JSON via the API:

| Input | Type | Default | Description |
|---|---|---|---|
| `keywords` | array | — | Search terms, as typed on Naver Map |
| `urls` | array | — | Scrape specific places by full URL or `naver.me` short link (place ID auto-extracted) |
| `scrapePlaceDetails` | boolean | `true` | Add menus, reviews, website, amenities, keywords, full hours and transit. Turn off for faster, cheaper keyword runs |
| `maxResultsPerKeyword` | integer | all | Max places per keyword (Naver returns up to 300) |

Provide `keywords`, `urls`, or both.

```json
{
  "keywords": ["강남 맛집", "만두집"],
  "urls": ["https://map.naver.com/p/entry/place/11724463", "https://naver.me/xxxxxxxx"],
  "scrapePlaceDetails": true,
  "maxResultsPerKeyword": 100
}
```

### Output

Each place becomes one dataset item. Real example (some long fields trimmed with `...`):

```json
{
  "Name": "냉325",
  "Category": "돼지고기구이",
  "BusinessCategory": "restaurant",
  "OverallRating": "4.85",
  "ReviewCount": 1416,
  "VisitorReviewCount": 1125,
  "BlogReviewCount": 291,
  "PriceRange": "5만원 대",
  "Address": "언주로81길 8 1층 2호",
  "Contact": "0507-1310-0468",
  "BusinessStatus": "영업 종료",
  "BusinessHours": "영업 종료 11:00에 영업 시작",
  "Latitude": "37.5003443",
  "Longitude": "127.0428175",
  "Images": ["https://ldb-phinf.pstatic.net/.../DSC02789.jpg", "..."],
  "PlaceId": "2065894706",
  "NaverMapUrl": "https://map.naver.com/p/entry/place/2065894706",
  "MichelinGuide": {},                       // Michelin data; empty {} if not listed
  "NearbyTransportation": "역삼역 1번 출구에서 667m",
  "SubwayStations": [
    { "name": "역삼역", "exit": "1", "walkTime": 10, "walkingDistance": 667 }
  ],
  "Website": "https://www.instagram.com/naeng325_seoul",
  "Amenities": "단체 이용 가능,예약,무선 인터넷",
  "PaymentInfo": ["지역화폐 (카드형)", "고유가 피해지원금 (신용·체크카드)"],
  "Keywords": ["역삼역육회", "제육볶음쌈밥", "선릉역한식모임단체회식"],
  "TVAppearance": "",                        // Empty "" if the place has no TV appearances
  "BroadcastInfo": [],                       // TV broadcast details; empty [] if none
  "MenuItems": [
    { "name": "냉삼만 세트 [2~3인 추천]", "price": "49000", "images": ["https://.../DSC02782.jpg"] }
  ],
  "Reviews": [
    { "Name": "비밀정원", "Author": "초록새록", "Date": "4일 전",
      "ReviewTitle": "역삼동 동네 고깃집 냉325, 넉넉한 세트 솔직 후기!", "Content": "안녕하세요! ..." }
  ],
  "VisitorReviewKeywords": [
    { "label": "맛", "count": 826 }, { "label": "만족도", "count": 541 }
  ],
  "Description": "강남에서 이 가격에, 이 퀄리티가 진짜 가능하다고? ...",
  "SearchKeyword": "강남 맛집"
}
```

### Tips

- **Add a region to your keyword** for local searches (e.g. `부산 애견 펜션`) — results are ranked exactly as on Naver Map.
- **Naver returns up to ~300 results per keyword.** To gather more, split a broad search into several narrower keywords (by district, neighborhood or category).
- **`OverallRating` can be empty.** Naver no longer publishes a numeric score for every place; when a score exists, it is included. Review counts are always provided.
- **Detail-only fields** (menus, blog reviews, website, amenities, keywords, transit, description) are filled in only when **Scrape full place details** is on.
- **Schedule runs** to keep your local business dataset fresh, or connect the output to Google Sheets, Make, Zapier and other [Apify integrations](https://apify.com/integrations).

### Related Naver Actors

1. [Naver Search Scraper](https://apify.com/delicious_zebu/naver-search-scraper): collect Naver search results from the 통합, blog, cafe, news, 지식iN and video tabs, with the same filters as the website.
2. [Naver Shopping Product Scraper](https://apify.com/delicious_zebu/naver-shopping-product-scraper): search Naver Shopping by keyword and collect product listings with price, seller and ratings.
3. [Naver Product Detail Scraper](https://apify.com/delicious_zebu/naver-product-detail-scraper): get the full record for a SmartStore or Brand Store product: price, stock for each option, images, review stats, delivery and the seller's business profile.
4. [Naver Shopping Reviews Scraper](https://apify.com/delicious_zebu/naver-shopping-reviews-scraper): collect customer reviews for any product, with rating, text, photos and videos, the option bought, seller replies and an AI review summary.

### FAQ and support

**Which business types are supported?** Restaurants, cafés, hospitals/clinics, accommodations (pensions/hotels) and general places — the Actor detects the type automatically from your keyword.

**Can I use direct Naver place URLs?** Yes. Paste full place URLs (`https://map.naver.com/p/entry/place/...`) or `naver.me` short links into the **Place URLs** input — the place ID is extracted automatically. You can use keywords, URLs, or both.

**Is scraping Naver Map legal?** This Actor collects only publicly available business information. Please review the disclaimer below.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the business has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Need help or have a feature request? Reach out via Apify support or leave feedback on the Actor's page.

# Actor input Schema

## `keywords` (type: `array`):

Search terms to look up on Naver Map, exactly as you would type them into the Naver Map search box. Include a region for local searches (e.g. '강남 맛집', '부산 애견 펜션'). Each keyword returns up to 300 places.

## `urls` (type: `array`):

Scrape specific places directly by URL. Supports full URLs (e.g. https://map.naver.com/p/entry/place/1234567890) and short links (e.g. https://naver.me/xxxxxxxx). The place ID is extracted automatically. Use this instead of, or together with, keywords.

## `scrapePlaceDetails` (type: `boolean`):

When enabled, each place is visited to add menus, blog reviews, website, amenities, payment methods, review keywords, transit info, full opening hours and the description. Turn this OFF for much faster, cheaper keyword runs that still return all core listing data (name, category, rating, reviews, address, phone, coordinates, hours, images, price range). Place URLs always include full details.

## `maxResultsPerKeyword` (type: `integer`):

Maximum number of places to collect for each keyword. Naver Map returns at most 300 results per keyword. Leave empty to collect all available results. Does not apply to Place URLs.

## Actor input object example

```json
{
  "keywords": [
    "강남 맛집",
    "만두집"
  ],
  "urls": [
    "https://map.naver.com/p/entry/place/11724463"
  ],
  "scrapePlaceDetails": true,
  "maxResultsPerKeyword": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table view of Naver Map results using the 'overview' view from dataset_schema.json.

## `rawResults` (type: `string`):

All Naver Map items from the default dataset without a specific view.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "강남 맛집"
    ],
    "maxResultsPerKeyword": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("delicious_zebu/naver-map-search-results-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["강남 맛집"],
    "maxResultsPerKeyword": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("delicious_zebu/naver-map-search-results-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "강남 맛집"
  ],
  "maxResultsPerKeyword": 100
}' |
apify call delicious_zebu/naver-map-search-results-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,delicious_zebu/naver-map-search-results-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UCpUxFUNcdKdbBdYg/builds/s7lFgM5yws1qs0qcs/openapi.json
