Naver Map Scraper — Korean Places, Phones & Hours
Pricing
from $2.49 / 1,000 valid business results
Naver Map Scraper — Korean Places, Phones & Hours
Naver map scraper to extract Korean business listings, phone numbers, addresses, opening hours & menus by keyword or URL. Fast, no browser, pay per result.
Pricing
from $2.49 / 1,000 valid business results
Rating
0.0
(0)
Developer
Axery
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Naver Map Scraper — Korean Business Places, Phone Numbers & Opening Hours
Extract rich, structured data from Naver Map (네이버 지도) — South Korea's dominant mapping and local business search platform. Search by Korean keywords or provide direct place URLs to extract verified business names, categories, full street addresses, direct and virtual phone numbers, GPS coordinates, opening hours, menus with prices, and amenities.
Fast, lightweight, and built for scale over direct HTTP without the memory overhead of headless browsers.
What Is Naver Map Scraper?
In South Korea, international mapping services like Google Maps have severe data export restrictions due to national spatial data regulations. As a result, over 80% of local consumers and businesses rely on Naver Map for discovery, contact information, operating hours, and menus.
Naver Map Scraper is a production-grade Apify Actor designed as a no-code, cost-effective Naver Map API alternative. It lets you collect comprehensive Korean local business data at scale without reverse-engineering Naver's internal GraphQL endpoints or dealing with browser automation overhead.
Key Highlights
- No Login or Account Required: Collects public data directly without requiring Korean phone verification or a Naver account.
- Direct HTTP Engine: Consumes only 256 MB of RAM, executing significantly faster and cheaper than browser-based scrapers.
- Verifiable Data Integrity: Strictly captures verified fields. Virtual forwarding phones (
0507-xxxx) and direct landlines (02-xxxx) are cleanly separated, and missing data is never fabricated. - Pay Per Result: Transparent pricing with zero Actor start fees. You only pay for valid unique businesses written to your dataset.
Features
- Korean Keyword Search: Query any term, region, or category (e.g.,
강남 맛집,홍대 카페,제주 렌트카,부산 호텔) with automatic pagination. - Direct Place URLs & Shortlink Support: Process canonical URLs (
map.naver.com,pcmap.place.naver.com,m.place.naver.com) and shortened links (naver.me) with automatic redirect resolution. - Phone Number Extraction: Distinguishes direct business landlines/mobile numbers from Naver virtual forwarding numbers (
0507). - Complete Business Schedules: Extracts daily opening hours, break times, last order schedules, and holiday announcements.
- Menu & Price Data: Captures restaurant and cafe menu items, exact displayed prices, and dish descriptions.
- Precise Geolocation: High-accuracy latitude and longitude coordinates alongside full Korean road addresses and land-lot addresses.
- Smart Deduplication: Built-in Place ID deduplication ensures you never pay for duplicate entries across multiple keywords or URLs.
- Lightweight List-Only Mode: Set
includeDetails: falseto skip secondary detail fetches for ultra-fast and budget-friendly list collection.
How to Scrape Naver Map
- Set Search Inputs: Enter Korean search keywords (e.g.,
["강남 치과", "성수동 카페"]) or paste specific Naver place URLs intosearchKeywordsorplaceUrls. - Configure Run Limits: Define
maxResults(e.g., 50 or 500) to control total volume and avoid budget overruns. - Select Data Depth: Keep
includeDetails: truefor full menus, hours, and amenities, or switch tofalsefor basic business cards. - Run the Actor: Click Start in the Apify Console or trigger it via the Apify REST API.
- Download Dataset: Export your results in JSON, CSV, Excel, XML, or connect directly via webhooks and integrations.
Input Configuration
The Actor accepts input in JSON format:
{"searchKeywords": ["강남 맛집", "홍대 카페"],"placeUrls": ["https://map.naver.com/p/entry/place/1068275528","https://naver.me/5XXXXXXX"],"maxResults": 100,"includeDetails": true,"proxyConfiguration": {"useApifyProxy": false}}
Parameter Reference
| Parameter | Type | Default | Description |
|---|---|---|---|
searchKeywords | Array of Strings | [] | List of Korean search queries or location + business terms (e.g. ["서울 게스트하우스", "부산 서면 카페"]). |
placeUrls | Array of Strings | [] | Specific Naver Map URLs or naver.me shortlinks to scrape directly. |
maxResults | Integer | 100 | Maximum number of unique businesses to extract across the entire run (up to 1,000). |
includeDetails | Boolean | true | When true, fetches secondary home endpoints for menus, schedules, and website links. Set false for faster list extraction. |
proxyConfiguration | Object | { "useApifyProxy": false } | Optional proxy settings. Direct connections work out of the box; Apify Residential Proxy can be enabled for large batches. |
Note: At least one
searchKeywordsentry orplaceUrlslink must be provided.
Output Data Fields
Each dataset record represents a single unique Korean business:
| Field Name | Type | Description | Example |
|---|---|---|---|
placeId | String | Unique Naver Place identifier | "1068275528" |
name | String | Verified business name | "몽브루" |
placeUrl | String | Canonical Naver Map place URL | "https://map.naver.com/p/entry/place/1068275528" |
category | String | Business category classification | "카페,디저트" |
address | String | Traditional land-lot address (지번주소) | "서울 강북구 수유동 535-73" |
roadAddress | String | Official Korean road-name address (도로명주소) | "서울 강북구 4.19로 105 몽브루" |
phone | String / null | Direct public landline or phone number | "02-999-1234" |
virtualPhone | String / null | Naver 0507 call-forwarding number | "0507-1382-1094" |
website | String / null | Representative homepage, Instagram, or blog URL | "https://www.instagram.com/monbrewcoffee" |
latitude | Number | WGS84 GPS latitude | 37.6437493 |
longitude | Number | WGS84 GPS longitude | 127.0038848 |
businessHours | Array / null | Structured schedules, breaks, last order, and holidays | [ { "day": "매일", "start": "11:00", "end": "23:00" } ] |
menus | Array / null | Menu items with name, price string, and description | [ { "name": "아메리카노", "price": "5,500원" } ] |
amenities | Array / null | Available facilities (e.g. Wi-Fi, parking, pets, reservation) | ["포장", "주차", "무선 인터넷", "반려동물 동반"] |
visitorReviewCount | Integer / null | Total verified visitor receipt review count | 2610 |
blogReviewCount | Integer / null | Verified blog review count (null if aggregated) | null |
searchQuery | String / null | The keyword query that discovered this place | "서울 카페" |
searchRank | Integer / null | Organic position in Naver search results | 2 |
sourceUrl | String | Source endpoint used to resolve this record | "https://pcmap.place.naver.com/restaurant/1068275528/home" |
dataStatus | String | Data depth level: DETAILS or BASIC | "DETAILS" |
scrapedAt | String | ISO 8601 UTC timestamp of extraction | "2026-10-29T19:27:20.845Z" |
Example JSON Output
{"placeId": "1068275528","name": "몽브루","placeUrl": "https://map.naver.com/p/entry/place/1068275528","category": "카페,디저트","address": "서울 강북구 수유동 535-73","roadAddress": "서울 강북구 4.19로 105 몽브루","phone": null,"virtualPhone": "0507-1382-1094","website": "https://www.instagram.com/monbrewcoffee","latitude": 37.6437493,"longitude": 127.0038848,"businessHours": [{"name": "기본","businessHours": [{"day": "매일","businessHours": { "start": "11:00", "end": "23:00" },"breakHours": null,"lastOrderTimes": [{ "type": "영업시간", "time": "22:30" }]}],"freeText": "연중무휴 영업합니다 (명절 포함)"}],"menus": [{"name": "아메리카노","price": "5,500원","description": "깊은 향미와 부드러운 바디감이 특징인 커피"},{"name": "로투스크로플","price": "12,000원","description": "바닐라아이스크림과 로투스 과자 토핑 크로플"}],"amenities": ["포장","남/녀 화장실 구분","무선 인터넷","예약","단체 이용 가능","주차","반려동물 동반"],"visitorReviewCount": 2610,"blogReviewCount": null,"searchQuery": "서울 카페","searchRank": 2,"sourceUrl": "https://pcmap.place.naver.com/restaurant/1068275528/home","dataStatus": "DETAILS","scrapedAt": "2026-10-29T19:27:20.845Z"}
Naver Map Scraper Pricing
This Actor operates under Apify's Pay-Per-Event (PPE) model. You only pay for valid, unique business records saved to your dataset.
- Cost per result: $0.00249
- Cost per 1,000 businesses: $2.49
- Actor Start Fee: $0.00 (No start-up surcharge)
- Review Page Fees: $0.00 (No hidden per-page fees)
- Platform Usage: Compute usage (RAM/CPU) is billed directly by Apify at standard rates. Because this Actor runs over lightweight HTTP (256 MB RAM) without a browser, computing costs remain negligible (~$0.01 - $0.03 per 1,000 places).
Pricing Comparison
| Feature | Naver Map Scraper (This Actor) | Typical Competitor |
|---|---|---|
| Price per 1,000 results | $2.49 | $3.00+ |
| Actor Start Fee | $0.00 | $0.05 / start |
| Extra Review Fees | $0.00 | $0.001 / review page |
| RAM Footprint | 256 MB (Ultra low compute) | 1,024 MB - 2,048 MB (Puppeteer) |
| Duplicate Protection | Yes (Never billed twice) | Often re-billed |
Use Cases
- B2B Lead Generation & Telemarketing: Extract authentic Korean business contacts, differentiating direct lines from 0507 virtual numbers for outreach.
- Food Delivery & Restaurant Tech: Gather restaurant menus, prices, operating hours, and dining amenities across Seoul, Busan, Daegu, and other metropolitan areas.
- South Korea Market Expansion: Benchmark competitor density, service categories, and average pricing across different urban districts.
- Local Directory & Map Enrichment: Enrich your database with accurate Korean road addresses, GPS coordinates, and business status.
- Travel & Tourism Applications: Power itinerary builders and travel apps with up-to-date operating schedules, break times, and parking availability.
Naver Map Scraper API Integration
Integrate seamlessly into your backend applications using the Apify API.
Node.js / JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('axery/naver-map-business-places-scraper').call({searchKeywords: ['강남 맛집', '홍대 카페'],maxResults: 50,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Successfully extracted ${items.length} Korean businesses:`, items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.getenv('APIFY_TOKEN'))run_input = {"searchKeywords": ["강남 치과", "서초 한의원"],"maxResults": 100,"includeDetails": True}run = client.actor("axery/naver-map-business-places-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} | {item.get('phone') or item.get('virtualPhone')} | {item.get('roadAddress')}")
cURL
curl -X POST "https://api.apify.com/v2/acts/axery~naver-map-business-places-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchKeywords": ["서울 게스트하우스"],"maxResults": 25,"includeDetails": true}'
Frequently Asked Questions
Do I need a Naver account or Korean phone number?
No. The scraper accesses Naver's public directory endpoints directly. No login, session cookies, or Korean identity verification are required.
Why use a Naver Map scraper instead of Google Maps in Korea?
Google Maps is restricted in South Korea by law regarding domestic spatial and cartographic data exports. As a consequence, Google Maps in Korea lacks walking routes, real-time operating hours, local menu updates, and up-to-date listings. Naver Map is the primary local search engine for over 80% of the population.
What is the difference between phone and virtualPhone?
Many Korean businesses on Naver use virtual forwarding numbers starting with 0507 to track call conversions and protect privacy. When available, direct landlines (02, 031, etc.) or mobile numbers are saved in phone, while forwarding numbers are saved in virtualPhone.
Can I scrape without menus and hours to save time?
Yes. Simply set "includeDetails": false in the input. The scraper will extract only the primary search result cards, running up to 3x faster while minimizing source requests.
How does deduplication work?
The Actor tracks every unique numeric Naver Place ID. If multiple search keywords or URL inputs match the same business, it is extracted and billed only once.
Are naver.me short links supported?
Yes. You can pass shortened naver.me URLs directly in placeUrls. The Actor resolves the redirect to find the numeric Place ID automatically.
Limitations and Troubleshooting
- Pagination Limit: Naver Map's search interface serves a maximum of 20 results per page, up to an organic limit per single search phrase. To scrape thousands of places across a city, supply multiple specific neighborhood queries (e.g.
["강남역 카페", "신사역 카페", "역삼역 카페"]). - Dynamic Site Changes: Naver periodically updates its Apollo state structure. If an endpoint change occurs, the Actor marks the failure in the run
SUMMARYand stops cleanly without corrupting your dataset. - Access Restrictions: Naver may rate-limit high-frequency traffic from shared IP addresses. For large-scale crawls (>1,000 requests), enabling Apify Proxy is recommended.
- Menu Availability: Menus and detailed price structures are primarily available for food & beverage businesses (restaurants, cafes, bakeries). Non-hospitality businesses (e.g. banks, repair shops) may return
menus: null.
Support
Have questions, suggestions, or need custom scraping solutions?
- Report issues or request features directly via the Issues tab on Apify Console.
- Regularly maintained to stay aligned with Naver Map updates and schema enhancements.