Naver Map Scraper — Korean Places, Phones & Hours avatar

Naver Map Scraper — Korean Places, Phones & Hours

Pricing

from $2.49 / 1,000 valid business results

Go to Apify Store
Naver Map Scraper — Korean Places, Phones & Hours

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

Axery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

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: false to skip secondary detail fetches for ultra-fast and budget-friendly list collection.

How to Scrape Naver Map

  1. Set Search Inputs: Enter Korean search keywords (e.g., ["강남 치과", "성수동 카페"]) or paste specific Naver place URLs into searchKeywords or placeUrls.
  2. Configure Run Limits: Define maxResults (e.g., 50 or 500) to control total volume and avoid budget overruns.
  3. Select Data Depth: Keep includeDetails: true for full menus, hours, and amenities, or switch to false for basic business cards.
  4. Run the Actor: Click Start in the Apify Console or trigger it via the Apify REST API.
  5. 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

ParameterTypeDefaultDescription
searchKeywordsArray of Strings[]List of Korean search queries or location + business terms (e.g. ["서울 게스트하우스", "부산 서면 카페"]).
placeUrlsArray of Strings[]Specific Naver Map URLs or naver.me shortlinks to scrape directly.
maxResultsInteger100Maximum number of unique businesses to extract across the entire run (up to 1,000).
includeDetailsBooleantrueWhen true, fetches secondary home endpoints for menus, schedules, and website links. Set false for faster list extraction.
proxyConfigurationObject{ "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 searchKeywords entry or placeUrls link must be provided.


Output Data Fields

Each dataset record represents a single unique Korean business:

Field NameTypeDescriptionExample
placeIdStringUnique Naver Place identifier"1068275528"
nameStringVerified business name"몽브루"
placeUrlStringCanonical Naver Map place URL"https://map.naver.com/p/entry/place/1068275528"
categoryStringBusiness category classification"카페,디저트"
addressStringTraditional land-lot address (지번주소)"서울 강북구 수유동 535-73"
roadAddressStringOfficial Korean road-name address (도로명주소)"서울 강북구 4.19로 105 몽브루"
phoneString / nullDirect public landline or phone number"02-999-1234"
virtualPhoneString / nullNaver 0507 call-forwarding number"0507-1382-1094"
websiteString / nullRepresentative homepage, Instagram, or blog URL"https://www.instagram.com/monbrewcoffee"
latitudeNumberWGS84 GPS latitude37.6437493
longitudeNumberWGS84 GPS longitude127.0038848
businessHoursArray / nullStructured schedules, breaks, last order, and holidays[ { "day": "매일", "start": "11:00", "end": "23:00" } ]
menusArray / nullMenu items with name, price string, and description[ { "name": "아메리카노", "price": "5,500원" } ]
amenitiesArray / nullAvailable facilities (e.g. Wi-Fi, parking, pets, reservation)["포장", "주차", "무선 인터넷", "반려동물 동반"]
visitorReviewCountInteger / nullTotal verified visitor receipt review count2610
blogReviewCountInteger / nullVerified blog review count (null if aggregated)null
searchQueryString / nullThe keyword query that discovered this place"서울 카페"
searchRankInteger / nullOrganic position in Naver search results2
sourceUrlStringSource endpoint used to resolve this record"https://pcmap.place.naver.com/restaurant/1068275528/home"
dataStatusStringData depth level: DETAILS or BASIC"DETAILS"
scrapedAtStringISO 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"
}

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

FeatureNaver 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 Footprint256 MB (Ultra low compute)1,024 MB - 2,048 MB (Puppeteer)
Duplicate ProtectionYes (Never billed twice)Often re-billed

Use Cases

  1. B2B Lead Generation & Telemarketing: Extract authentic Korean business contacts, differentiating direct lines from 0507 virtual numbers for outreach.
  2. Food Delivery & Restaurant Tech: Gather restaurant menus, prices, operating hours, and dining amenities across Seoul, Busan, Daegu, and other metropolitan areas.
  3. South Korea Market Expansion: Benchmark competitor density, service categories, and average pricing across different urban districts.
  4. Local Directory & Map Enrichment: Enrich your database with accurate Korean road addresses, GPS coordinates, and business status.
  5. Travel & Tourism Applications: Power itinerary builders and travel apps with up-to-date operating schedules, break times, and parking availability.

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 ApifyClient
import os
client = 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.

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 SUMMARY and 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.