# Naver Map Scraper (한국어) (`parsebird/naver-map-scraper-korean`) Actor

네이버 지도 장소를 키워드 또는 URL로 수집: 상호명, 카테고리, 주소, 전화번호, 영업시간, 메뉴, 편의시설, 이미지, 리뷰까지. JSON, CSV, Excel로 내보내기.

- **URL**: https://apify.com/parsebird/naver-map-scraper-korean.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Travel, Real estate, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.29 / 1,000 장소 결과

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Naver Map Scraper (한국어) — 네이버 지도 장소와 리뷰 수집

[네이버 지도](https://map.naver.com/) — 대한민국을 대표하는 지도 및 지역 검색 플랫폼 — 의 장소 데이터를 수집합니다. 키워드로 검색하거나 장소 URL을 붙여넣어 상호명, 카테고리, 주소, 전화번호, 영업시간, 메뉴, 편의시설, 이미지, 지하철 접근성, 방문자·네이버 블로그 리뷰까지 추출합니다. JSON, CSV, Excel로 내보내기 가능합니다.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
키워드로 네이버 지도를 검색하거나 URL로 특정 장소를 직접 수집하세요 — 구조화된 업체 데이터, 영업시간, 메뉴, 리뷰 통계, 방문자·블로그 리뷰까지 분석, 모니터링, 연동에 바로 활용할 수 있습니다.
</td>
</tr></table>

##### AI 어시스턴트에 복사하기

이 블록을 ChatGPT, Claude, Cursor 또는 다른 LLM에 붙여넣어 이 Actor를 바로 사용해 보세요.

```
Apify Actor: parsebird/naver-map-scraper-korean — map.naver.com의 장소와 리뷰를 수집합니다. Free 요금제 기준 장소 1,000건당 $2.99 (Bronze $2.79, Silver $2.59, Gold $2.29), 모든 요금제에서 리뷰 1,000건당 $0.99. ApifyClient로 호출: client.actor("parsebird/naver-map-scraper-korean").call(run_input={"searchKeywords": ["강남 맛집"], "maxResultsPerKeyword": 50, "includeReviews": True}). 입력값: searchKeywords (문자열 배열, 예: ["강남 맛집", "홍대 카페"]), urls (문자열 배열 — 전체/naver.me 단축/모바일 장소 URL), maxResultsPerKeyword (정수, 기본값 100, 최대 10000 — 네이버 자체 검색은 키워드당 약 300건에서 멈춤), includeDetails (불리언, 기본값 true — 영업시간, 메뉴, 편의시설, 이미지, 설명을 가져오며 직접 URL에는 영향 없음, 항상 전체 상세정보 포함), includeReviews (불리언, 기본값 false), maxReviewPages (정수, 기본값 50 — 방문자 리뷰는 페이지당 50개, 블로그 리뷰는 페이지당 10개이며 장소당 약 100개로 제한), reviewCutoffDate (문자열, 기본값 "2024-01-01" — 이 날짜 이후 리뷰만 수집), proxyConfiguration (객체). 출력값: place_id, name, category, categoryCode, address, roadAddress, phone, virtualPhone, homepage, siteUrl, x, y, businessHours, conveniences, facilities, hasMobilePhoneNumber, visitorReviewsTotal, visitorReviewsScore, reviewStats, reviewThemes, reviewMenus, menus, images, subwayStations, description, url를 포함하는 장소 레코드; includeReviews가 켜져 있으면 visitorReviews(review_id, rating, body, author_nickname, visited, created, tags, voted_keywords, media_count)와 blogReviews(title, contents, author_name, url, date)도 포함. API 문서: https://docs.apify.com/api/v2 토큰 발급: https://console.apify.com/settings/integrations
```

### Naver Map Scraper란?

**Naver Map Scraper**는 [네이버 지도](https://map.naver.com/)(map.naver.com)에서 구조화된 업체 데이터와 리뷰를 추출하는 [Apify Actor](https://apify.com/actors)입니다. 네이버 지도는 대한민국에서 압도적인 지역 검색·내비게이션 플랫폼으로, 수백만 개의 음식점, 카페, 미용실, 병원 등 지역 업체를 포괄합니다. 이 Actor는 네이버 지도 자체의 장소 API에서 직접 데이터를 가져오며, 영업시간, 가격과 사진이 포함된 전체 메뉴, 리뷰 통계, 방문자·네이버 블로그 리뷰까지 포함합니다.

**네이버 지도 API 대안**이라고 생각하시면 됩니다 — 네이버는 대량 장소 검색이나 리뷰 추출을 위한 공개 API를 제공하지 않지만, 이 스크레이퍼는 프로그래밍 방식으로 동일한 구조화된 데이터를 제공합니다. 로컬 SEO 대행사, 프랜차이즈·다지점 분석, 경쟁 음식점 조사, 국내 시장 리뷰 모니터링을 위해 만들어졌습니다.

이 버전은 **완전한 한국어 인터페이스**를 제공합니다 — 제목, 설명, 입력 필드, 문서까지 모두 한국어입니다. 추출되는 데이터 자체의 필드명은 대부분의 BI 도구 및 스프레드시트와의 호환성을 위해 영어로 유지됩니다(`name`, `category`, `address` 등). 동일한 Actor의 [영문 버전](https://apify.com/parsebird/naver-map-scraper)도 이용할 수 있습니다.

### Naver Map Scraper로 무엇을 할 수 있나요?

- 🔍 **키워드 검색** — "강남 맛집", "홍대 카페"와 같은 네이버 지도 검색어를 한 번의 실행에서 여러 키워드로 검색
- 🔗 **직접 장소 URL** — 전체 장소 URL, 검색결과 URL, `naver.me` 단축 링크, 모바일 `m.place.naver.com` 링크를 붙여넣으면 단축 링크도 자동으로 해석
- 🏢 **완전한 업체 프로필** — 영업시간(매장, 드라이브스루, 배달별 별도 일정 포함), 가격이 포함된 메뉴, 설명과 사진, 편의시설, 지하철역 접근성, 홈페이지 및 예약 링크
- ⭐ **리뷰 통계** — 평균 평점, 총 리뷰 수, 사진 리뷰 수, 네이버 자체의 리뷰 테마 및 인기 메뉴 분석
- 💬 **방문자 및 블로그 리뷰** — 네이버 플레이스의 방문자 리뷰(평점, 본문, 태그, 방문일)와 연결된 네이버 블로그 게시글을 함께 수집
- 📅 **리뷰 날짜 필터링** — 기준일을 설정해 최근 리뷰만 수집, 오래 운영된 장소에서도 시간과 비용 절감
- ⚡ **고속 모드** — 검색 결과의 상세 페이지 조회를 건너뛰고 검색 수준 데이터(상호명, 카테고리, 전화번호, 주소, 좌표, 리뷰 수)만 약 2배 빠르고 저렴하게 수집
- ⏱️ **예약 실행 및 API 접근** — [Apify Schedules](https://docs.apify.com/platform/schedules)로 자동화하고 [Apify API](https://docs.apify.com/api/v2)나 클라이언트 라이브러리로 결과를 가져오기
- 📊 **다양한 내보내기 형식** — JSON, CSV, Excel, XML, HTML, RSS로 다운로드

### 네이버 지도에서 추출할 수 있는 데이터

| 필드 | 설명 |
|------|------|
| `name` | 상호명 |
| `category` | 네이버 지도 카테고리 라벨 (예: 중식당, 카페) |
| `address` / `roadAddress` | 지번 주소와 도로명 주소 |
| `phone` / `virtualPhone` | 직통 전화번호와 네이버 스마트콜 가상번호 |
| `businessHours` | 명칭이 붙은 일정(예: 매장, 배달, 드라이브스루)과 요일별 영업시간 |
| `menus` | 이름, 가격, 설명, 이미지, 추천 여부가 포함된 메뉴 항목 |
| `conveniences` / `facilities` | 장소 페이지와 정보 탭에 표시되는 편의시설 태그 |
| `visitorReviewsTotal` / `visitorReviewsScore` | 총 리뷰 수와 평균 평점 |
| `reviewThemes` / `reviewMenus` | 네이버가 리뷰에서 도출한 테마 분석(맛, 서비스, 분위기 등)과 가장 많이 언급된 메뉴 |
| `images` | 업체 사진 URL |
| `subwayStations` | 가장 가까운 지하철역과 도보 거리 |
| `description` | 사업주가 작성한 업체 설명 |
| `visitorReviews` | 개별 방문자 리뷰 텍스트, 평점, 태그, 방문일(리뷰 포함 시) |
| `blogReviews` | 해당 장소에 대한 연결된 네이버 블로그 게시글(리뷰 포함 시) |

### 네이버 지도 수집 방법

1. [Apify Store](https://apify.com/parsebird/naver-map-scraper-korean)에서 \*\*Naver Map Scraper (한국어)\*\*로 이동해 **Try for free**를 클릭하세요
2. **검색 키워드를 입력**하세요 — 예: "강남 맛집", 또는 네이버 지도 장소 URL을 직접 붙여넣으세요
3. **키워드당 최대 결과 수**를 설정하세요 — 빠른 테스트는 20~50으로 시작하는 것을 권장합니다
4. 방문자·블로그 리뷰가 필요하면 **리뷰 포함**을 켜고 리뷰 기준일을 설정하세요
5. **Actor를 실행**하세요 — **Start**를 클릭하고 결과를 기다리세요
6. **데이터를 내보내세요** — JSON, CSV, Excel로 다운로드하거나 [Apify API](https://docs.apify.com/api/v2)로 접근하세요

### 입력 파라미터

| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|----------|------|------|--------|------|
| `searchKeywords` | 문자열 배열 | 아니요\* | — | 네이버 지도 검색어, 예: `["강남 맛집", "홍대 카페"]` |
| `urls` | 문자열 배열 | 아니요\* | — | 네이버 지도 장소 URL — 전체, `naver.me` 단축, 모바일 링크 |
| `maxResultsPerKeyword` | 정수 | 아니요 | 100 | 키워드당 수집할 최대 장소 수 (1~10,000; 네이버 검색 자체는 약 300건에서 멈춤) |
| `includeDetails` | 불리언 | 아니요 | true | 각 장소의 상세 페이지를 가져와 메뉴, 영업시간, 편의시설, 이미지, 설명을 수집 |
| `includeReviews` | 불리언 | 아니요 | false | 방문자 및 네이버 블로그 리뷰 수집 |
| `maxReviewPages` | 정수 | 아니요 | 50 | 장소당 최대 리뷰 페이지 수(방문자: 페이지당 50개; 블로그: 페이지당 10개, 장소당 약 100개로 제한) |
| `reviewCutoffDate` | 문자열 | 아니요 | `2024-01-01` | 이 날짜(`YYYY-MM-DD`) 이후 리뷰만 수집 |
| `proxyConfiguration` | 객체 | 아니요 | `{"useApifyProxy": true}` | Apify Proxy 설정, 대규모 실행 시 권장 |

\* `searchKeywords` 또는 `urls` 중 최소 하나는 필요합니다.

### 출력 예시

```json
{
    "place_id": "38239053",
    "name": "스타벅스 압구정점",
    "category": "카페",
    "categoryCode": "restaurant",
    "address": "서울 강남구 신사동 609",
    "roadAddress": "서울 강남구 압구정로30길 17 (신사동)",
    "phone": "1522-3232",
    "virtualPhone": null,
    "homepage": "http://www.starbucks.co.kr/",
    "siteUrl": "https://m.booking.naver.com/booking/6/bizes/392658/search",
    "x": "127.02956",
    "y": "37.526283",
    "businessHours": [
        {
            "name": "매장",
            "status": "영업 중",
            "description": "22:00에 영업 종료",
            "schedule": [{ "day": "화", "start": "06:30", "end": "22:00" }]
        }
    ],
    "conveniences": ["주차"],
    "facilities": [],
    "hasMobilePhoneNumber": false,
    "visitorReviewsTotal": 4149,
    "visitorReviewsScore": 4.44,
    "reviewStats": { "avgRating": 4.44, "totalCount": 4149, "imageReviewCount": 469, "authorCount": 1203 },
    "reviewThemes": [{ "code": "taste", "label": "맛", "count": 267 }],
    "reviewMenus": [{ "label": "커피", "count": 103 }],
    "menus": [{ "name": "카페 아메리카노", "price": "4700", "description": "강렬한 에스프레소 샷", "images": [], "recommend": false }],
    "images": ["https://ldb-phinf.pstatic.net/..."],
    "subwayStations": [{ "name": "압구정역", "typeDesc": "3번 출구에서 75m" }],
    "description": null,
    "url": "https://map.naver.com/p/entry/place/38239053"
}
```

JSON, CSV, Excel, XML, HTML, RSS로 결과를 다운로드하거나 [Apify API](https://docs.apify.com/api/v2)로 접근할 수 있습니다.

### 활용 사례

- 📊 **로컬 SEO 및 경쟁사 조사** — 특정 카테고리와 지역 내 모든 경쟁업체의 구조화된 데이터를 수집
- 🏪 **프랜차이즈 및 다지점 추적** — 체인점 모든 지점의 영업시간, 메뉴, 평점을 모니터링
- ⭐ **리뷰 모니터링** — 정기적으로 신규 방문자·블로그 리뷰를 수집해 여론을 추적하고 이슈를 조기에 파악
- 🍽️ **메뉴 및 가격 인텔리전스** — 시장 세그먼트 전반의 메뉴 항목, 가격, 추천 메뉴를 추적
- 🎯 **리드 생성** — 전화번호, 주소, 카테고리 필터가 포함된 지역 업체 잠재고객 목록 구축
- 🔌 **파이프라인 연동** — [Apify Integrations](https://docs.apify.com/platform/integrations)를 통해 Google Sheets, Slack, Zapier, Make, 또는 자체 시스템으로 장소·리뷰 데이터 전송

### 작동 방식

1. 각 검색 키워드에 대해 Actor는 네이버 지도 자체 검색 API를 호출해 일치하는 장소 ID를 수집하고, URL의 경우 단축 링크를 해석해 장소 ID를 직접 추출합니다
2. 상세정보가 포함된 경우, 각 장소 ID로 네이버 지도의 전체 상세 데이터(영업시간, 메뉴, 편의시설, 이미지, 지하철 접근성, 설명, 리뷰 통계)를 가져옵니다
3. 리뷰가 포함된 경우, 방문자 리뷰와 네이버 블로그 리뷰를 장소별로 최신순으로 페이징하며, 리뷰가 `reviewCutoffDate`보다 오래되면 멈춥니다
4. 모든 장소와 리뷰는 수집되는 즉시 데이터셋에 저장되므로, 실행이 중간에 중단되어도 부분 결과를 확인할 수 있습니다

### API로 사용하기 — Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/naver-map-scraper-korean").call(run_input={
    "searchKeywords": ["강남 맛집"],
    "maxResultsPerKeyword": 50,
    "includeReviews": True,
    "maxReviewPages": 10,
    "reviewCutoffDate": "2025-01-01",
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if "place_id" in item and "name" in item:
        print(f"{item['name']} — {item['category']} — {item['visitorReviewsScore']}")
```

### API로 사용하기 — JavaScript

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('parsebird/naver-map-scraper-korean').call({
    searchKeywords: ['강남 맛집'],
    maxResultsPerKeyword: 50,
    includeReviews: true,
    maxReviewPages: 10,
    reviewCutoffDate: '2025-01-01',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    if (item.place_id && item.name) {
        console.log(`${item.name} — ${item.category} — ${item.visitorReviewsScore}`);
    }
});
```

### 네이버 지도 수집 비용은 얼마인가요?

Naver Map Scraper는 [이벤트당 결제(pay-per-event)](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event) 방식을 사용하며, 장소용과 리뷰용 두 가지 이벤트로 나뉘어 있어 실제로 수집한 데이터에 대해서만 비용을 지불합니다.

**리뷰 없이 장소 1,000건을 수집하면 비용은 얼마인가요?**

Free 요금제 기준 $2.99이며, Gold 요금제에서는 $2.29까지 낮아집니다.

**리뷰 1,000건을 수집하면 비용은 얼마인가요?**

모든 요금제에서 $0.99입니다. 신규 사용자는 무료 체험 크레딧으로 결제 전에 Actor를 먼저 사용해 볼 수 있습니다.

### 요금

| 이벤트 | Free | Bronze | Silver | Gold |
|--------|------|--------|--------|------|
| `result-scraped` (장소당) | $0.00299 | $0.00279 | $0.00259 | $0.00229 |
| `review-scraped` (리뷰당) | $0.00099 | $0.00099 | $0.00099 | $0.00099 |

검색 키워드에서 나왔든 직접 URL에서 나왔든, 장소 하나는 `result-scraped` 이벤트 1건으로 계산됩니다. 방문자 리뷰 또는 네이버 블로그 리뷰 하나는 `review-scraped` 이벤트 1건으로 계산됩니다.

### 네이버 지도 수집은 합법인가요?

이 Actor는 네이버 지도의 공개 장소·검색 페이지에서 데이터를 추출합니다 — 로그인 없이 누구나 볼 수 있는 것과 동일한 업체 및 리뷰 데이터입니다.

공개적으로 접근 가능한 데이터의 웹 스크레이핑은 [hiQ Labs v. LinkedIn 판례](https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn)에서 확립된 바와 같이 미국과 유럽연합에서 일반적으로 합법입니다. 자세한 내용은 Apify의 [웹 스크레이핑 합법성 가이드](https://blog.apify.com/is-web-scraping-legal/)를 참고하세요.

수집한 데이터의 사용이 관할 지역의 관련 법률 및 네이버의 이용약관을 준수하는지 확인하는 것은 사용자의 책임입니다.

### 관련 Actor

더 많은 네이버 데이터 추출 도구를 찾고 계신가요? 다음 ParseBird Actor를 확인해 보세요:

- [Naver Map Scraper (English)](https://apify.com/parsebird/naver-map-scraper) — 동일한 도구의 영문 인터페이스 버전
- [Naver Place Review Scraper](https://apify.com/parsebird/naver-place-review-scraper) — 특정 네이버 플레이스의 방문자·블로그 리뷰 수집

[Apify Store의 모든 ParseBird Actor](https://apify.com/parsebird)를 둘러보세요.

### FAQ

**왜 `maxResultsPerKeyword`가 요청보다 적은 장소를 반환하나요?**
네이버 지도 자체 검색 결과는 `maxResultsPerKeyword`를 아무리 높게 설정해도 키워드당 약 300건에서 멈춥니다. 더 구체적인 키워드(지역명이나 카테고리 추가)를 사용하면 다른 결과 집합에 도달할 수 있습니다.

**`conveniences`와 `facilities`의 차이는 무엇인가요?**
`conveniences`는 장소 페이지 상단에 표시되는 편의시설 아이콘(예: 주차, 예약)입니다. `facilities`는 네이버의 별도 정보 탭에서 가져온 것으로 추가적인 세부정보를 포함할 수 있습니다. 두 목록은 자주 겹치지만 각각 독립적으로 수집됩니다.

**`includeDetails: false`가 `urls`로 추가한 장소에도 영향을 주나요?**
아니요. `urls`로 추가한 장소는 항상 전체 상세정보를 가져옵니다. 직접 요청한 장소에는 대체할 검색 수준 요약이 없기 때문입니다.

**왜 일부 장소는 `businessHours`나 `menus`가 없나요?**
모든 네이버 플레이스 등록 업체가 구조화된 영업시간이나 메뉴를 게시하는 것은 아닙니다 — 소규모이거나 새로 등록된 업체는 네이버 자체에서도 이 필드를 비워두는 경우가 많으며, Actor는 이를 그대로 반영합니다.

**리뷰 기준일은 어떻게 작동하나요?**
리뷰는 최신순으로 반환되므로, Actor는 `reviewCutoffDate`보다 오래된 리뷰에 도달하는 즉시 해당 장소의 리뷰 페이징을 멈춥니다. 이미 수집한 리뷰를 다시 가져오지 않기 때문에 모니터링 작업을 반복 실행해도 비용이 저렴합니다.

**방문자 리뷰의 `tags`와 `voted_keywords`는 어떤 차이가 있나요?**
`tags`는 리뷰에 표시되는 사람이 읽기 쉬운 키워드 배지입니다(예: "음식이 맛있어요"). `voted_keywords`는 동일한 키워드를 네이버 내부 코드로 표현한 것으로(예: `food_good`), 언어에 관계없이 프로그래밍 방식으로 매칭할 때 유용합니다.

**검색이나 URL이 장소를 반환하지 않으면 어떻게 되나요?**
Actor는 빈 데이터셋으로 정상 종료되며 경고 로그를 남깁니다 — 이는 오류로 처리되지 않습니다.

**정기 실행을 예약할 수 있나요?**
네. [Apify Schedules](https://docs.apify.com/platform/schedules)를 사용해 매일, 매주 또는 원하는 간격으로 실행하고, `reviewCutoffDate`와 함께 사용하면 신규 리뷰만 추적할 수 있습니다.

**API로 데이터에 접근할 수 있나요?**
네. [Apify API](https://docs.apify.com/api/v2) 또는 공식 [Python](https://docs.apify.com/api/client/python) 및 [JavaScript](https://docs.apify.com/api/client/js) 클라이언트 라이브러리를 사용해 Actor를 실행하고 결과를 프로그래밍 방식으로 가져올 수 있습니다.

**어떤 내보내기 형식을 지원하나요?**
JSON, CSV, Excel(XLSX), XML, HTML, RSS입니다. Apify Console에서 직접 다운로드하거나 API로 가져올 수 있습니다.

**무료 체험이 있나요?**
네. 신규 Apify 사용자는 유료 요금제 결정 전 Naver Map Scraper를 사용해 볼 수 있는 무료 플랫폼 크레딧을 받습니다.

**문제를 발견했거나 기능 요청이 있습니다.**
Actor 페이지의 [Issues 탭](https://apify.com/parsebird/naver-map-scraper-korean/issues)에 등록하거나 Apify Console을 통해 ParseBird에 문의해 주세요.

# Actor input Schema

## `searchKeywords` (type: `array`):

강남 맛집, 홍대 카페와 같은 네이버 지도 검색어입니다. Actor는 각 키워드에 일치하는 장소를 수집합니다.

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

직접 수집할 네이버 지도 장소 URL을 한 줄에 하나씩 입력합니다. 전체 장소 URL, 검색결과 장소 URL, naver.me 단축 링크, m.place.naver.com 모바일 링크를 모두 지원합니다.

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

각 검색 키워드에서 수집할 최대 장소 수입니다. 네이버 자체 검색결과는 값이 더 높게 설정되어도 약 300개 장소에서 멈춥니다.

## `includeDetails` (type: `boolean`):

각 장소의 상세 페이지를 가져와 메뉴, 영업시간, 편의시설, 이미지, 설명을 수집합니다. 검색 수준 데이터(상호명, 카테고리, 전화번호, 주소, 좌표, 리뷰 수)만 필요하면 더 빠르고 저렴한 실행을 위해 꺼두세요. 장소 URL로 추가된 항목에는 영향이 없으며, 이 경우 항상 전체 상세정보가 포함됩니다.

## `includeReviews` (type: `boolean`):

각 장소의 방문자 리뷰와 네이버 블로그 리뷰를 수집합니다.

## `maxReviewPages` (type: `integer`):

리뷰가 포함된 경우 장소당 가져올 리뷰 페이지 수입니다. 방문자 리뷰는 페이지당 50개, 블로그 리뷰는 페이지당 10개이며 이 설정과 무관하게 장소당 약 100개로 제한됩니다.

## `reviewCutoffDate` (type: `string`):

이 날짜(YYYY-MM-DD) 이후에 작성된 리뷰만 수집합니다. 리뷰는 최신순으로 반환되므로 Actor는 이보다 오래된 리뷰에 도달하면 페이징을 멈춥니다.

## `proxyConfiguration` (type: `object`):

Apify Proxy 설정입니다. 요청 제한을 피하려면 대규모 실행 시 사용을 권장합니다.

## Actor input object example

```json
{
  "searchKeywords": [
    "강남 맛집"
  ],
  "urls": [],
  "maxResultsPerKeyword": 20,
  "includeDetails": true,
  "includeReviews": false,
  "maxReviewPages": 2,
  "reviewCutoffDate": "2025-01-01",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "searchKeywords": [
        "강남 맛집"
    ],
    "urls": [],
    "maxResultsPerKeyword": 20,
    "maxReviewPages": 2,
    "reviewCutoffDate": "2025-01-01",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/naver-map-scraper-korean").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 = {
    "searchKeywords": ["강남 맛집"],
    "urls": [],
    "maxResultsPerKeyword": 20,
    "maxReviewPages": 2,
    "reviewCutoffDate": "2025-01-01",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/naver-map-scraper-korean").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 '{
  "searchKeywords": [
    "강남 맛집"
  ],
  "urls": [],
  "maxResultsPerKeyword": 20,
  "maxReviewPages": 2,
  "reviewCutoffDate": "2025-01-01",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/naver-map-scraper-korean --silent --output-dataset

```

## MCP server setup

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

```

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/cpBRJ9VRUblE7UQts/builds/4ZJJgrtlhOhsh0UIg/openapi.json
