Naver Reviews Scraper
Pricing
from $0.36 / 1,000 item extracteds
Naver Reviews Scraper
Extract public Naver Place visitor reviews from supplied URLs or IDs for recurring Korean business reputation monitoring.
Pricing
from $0.36 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
3
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Extract public Naver reviews from supplied Naver Place URLs or numeric Place IDs. The Actor returns one typed dataset row per visitor review with review text, rating, reviewer context, visit and post dates, visitor-selected keywords, media links, owner replies, and Place-level reputation totals when Naver exposes them.
Use it for recurring Korean business reputation monitoring, customer-feedback analysis, branch comparisons, and spreadsheet or data-pipeline exports. No Naver login is required.
What does Naver Reviews Scraper do?
The Actor reads Naver's public server-rendered Place review data and converts it into integration-ready JSON records.
It supports:
- one or many Naver Place URLs;
- one or many numeric Naver Place IDs;
- newest-first or Naver-recommended review order;
- an optional visit-date cutoff;
- stable
reviewIdvalues, plus an optionalexcludeReviewIdslist that skips reviews you already received without saving or charging them again; - global and per-Place result limits;
- a
RUN_SUMMARYrecord that shows Place failures, skipped reviews and why the run stopped; - JSON, CSV, Excel, XML, RSS, and API dataset exports provided by Apify.
Sampling limit: Naver's public page exposes up to 10 visitor reviews per Place in one run. This Actor does not return a Place's full review history. For ongoing monitoring, schedule newest-first runs often enough for each location's review volume.
Who is it for?
Reputation and customer-experience teams
Track recent public feedback for restaurants, cafés, stores, clinics, attractions, and other Korean business locations.
Multi-location operators
Run the same input for several Place IDs and compare ratings, recurring keywords, review text, and visible owner responses.
Market researchers
Create a structured sample of public visitor feedback without manually copying Korean review cards.
Data and automation teams
Send stable review records to a warehouse, spreadsheet, webhook workflow, sentiment model, or monitoring dashboard.
What Naver Place fields are extracted?
| Field | Meaning |
|---|---|
reviewId | Stable public Naver review identifier |
placeId, placeName, placeUrl | Place identity and canonical review URL |
placeVisitorReviewTotal | Total for the selected visitor-review collection |
placeRatingReviewTotal | Rating-review total reported in Place statistics |
placeAverageRating | Place average rating when visible |
rating | Rating attached to this review when visible |
body | Public visitor review text |
author | Public nickname, profile URL, image, and visible profile counts |
visitDate, postedDate | Naver's localized date labels |
representativeVisitDateTime | ISO timestamp when Naver exposes it |
visitCount, viewCount | Visible visit and review-view counts |
keywords | Visitor-voted Place keywords |
visitKeywords | Visit context such as occasion or wait time |
media | Public image thumbnails and video links |
ownerReply | Public owner reply text and metadata when present |
itemName | Ordered or booking item when visible |
originType, language, status | Review context and status |
sort, scrapedAt | Run order and extraction timestamp |
Fields can be absent when Naver does not display them for a review or Place.
How to scrape Naver reviews
- Open the Actor in Apify Console.
- Add at least one Naver Place URL or numeric Place ID.
- Keep Newest first for monitoring, or select Naver recommended for a representative sample.
- Optionally set Visited after to an ISO date such as
2026-07-01. - Choose the per-Place and total limits.
- Click Start.
- Open the Dataset tab and export the results in your preferred format.
A working URL example is:
https://m.place.naver.com/restaurant/36639957/review/visitor
The equivalent numeric input is 36639957.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Public Naver Place or Naver Map URLs containing numeric Place IDs |
placeIds | string array | [] | Numeric Place IDs; duplicates across both inputs are removed |
sort | string | recent | recent for newest visits or recommended for Naver's order |
postedAfter | string | — | Optional ISO date/date-time. Skips reviews whose exposed visit timestamp is earlier; reviews without a visit timestamp are kept |
excludeReviewIds | string array | [] | Review IDs you already received. Matching reviews are skipped and not saved or charged. Up to 10,000 per run |
maxReviewsPerPlace | integer | 10 | Maximum records per Place, from 1 to 10 |
maxItems | integer | 20 | Maximum records across all supplied Places, from 1 to 10,000 |
At least one URL or Place ID is required. The run checks the whole input before it starts or charges anything. Unsupported hosts, malformed IDs, unknown sort values, invalid dates, non-integer or out-of-range limits and malformed exclusion lists fail with a clear error and no charge.
Example input
{"placeIds": ["36639957", "31806828"],"sort": "recent","postedAfter": "2026-07-01","maxReviewsPerPlace": 10,"maxItems": 20}
You can combine placeIds with startUrls in the same run.
Example Naver review output
This shortened example reflects the current typed output shape:
{"reviewId": "6a7eddb8e781abd6ab8651ad","placeId": "36639957","placeName": "스타벅스 명동중앙로점","placeUrl": "https://m.place.naver.com/place/36639957/review/visitor","placeVisitorReviewTotal": 2617,"placeAverageRating": 4.45,"rating": 5,"body": "금요일 저녁 6시쯤 방문했어요\n직원분들 너무 친절하세요","author": {"nickname": "Sample Reviewer","totalReviewCount": 63},"representativeVisitDateTime": "2026-08-14T09:11:53.000Z","keywords": ["커피가 맛있어요", "친절해요"],"sort": "recent","scrapedAt": "2026-08-19T20:40:00.000Z"}
Reviewer names in this documentation are anonymized. Dataset rows contain only the public values Naver returned at run time.
How much does it cost to extract Naver reviews?
The Actor uses pay-per-event pricing:
- a one-time Start event currently costs $0.00005 per run;
- each saved review uses the
itemevent; - the BRONZE item rate is currently $0.0006 per review;
- higher-volume subscription tiers receive lower item rates automatically.
Example BRONZE Actor charges:
| Useful output | Estimated Actor charge |
|---|---|
| 10 reviews from one Place | $0.00605 |
| 50 reviews from five Places | $0.03005 |
| 100 reviews from ten Places | $0.06005 |
These examples describe Actor event charges. Your Apify plan can also account for platform compute, storage, and transfer according to Apify's terms. Check the live pricing panel before a large run because rates can change.
Monitor new Naver reviews on a schedule
For recurring reputation monitoring:
- Use
sort: "recent". - Supply all tracked Place IDs.
- Store each delivered
reviewIdin your destination. - Pass the IDs you already have in
excludeReviewIdson the next run. Those reviews are skipped and you do not pay for them again. - Schedule the Actor hourly, daily, or weekly, for example through a Task or an API call from your pipeline.
- Alert on new low ratings, selected keywords, or review text patterns.
{"placeIds": ["36639957"],"sort": "recent","excludeReviewIds": ["6a7eddb8e781abd6ab8651ad", "6a7c1f5be781abd6ab4f2a10"],"maxReviewsPerPlace": 10,"maxItems": 10}
The exclusion list is stateless: the Actor does not keep history between runs, and it does not fetch older reviews to replace skipped ones. A run where every exposed review is already excluded succeeds with zero new rows and only the start charge.
Naver exposes ten server-rendered reviews per Place, so a busy location can receive more than ten new reviews between runs. Choose a schedule frequent enough for each location's review volume.
Check the run summary
Each run saves a RUN_SUMMARY record in its default key-value store. The run's Output tab links to it. Use it to tell apart "no new reviews", skipped reviews, unavailable Places and limit stops without reading logs:
{"status": "succeeded","stopReason": "completed","places": { "requested": 2, "attempted": 2, "succeeded": 1, "failed": 1, "unprocessed": 0 },"reviews": { "scanned": 10, "saved": 3, "duplicate": 0, "excluded": 7, "dateFiltered": 0 },"placeResults": [{ "placeId": "36639957", "outcome": "succeeded", "exposedReviews": 10, "saved": 3, "excluded": 7 },{ "placeId": "31806828", "outcome": "failed", "errorCode": "http_404", "httpStatus": 404 }]}
stopReason is completed, max_items_reached, charge_limit_reached, time_limit_reached (the run stopped before its timeout so the summary and every charged row are saved; the first Place is always attempted, and if every attempted Place failed the run fails with errorCode attempted_places_failed; raise the run timeout or split large Place lists), all_places_failed or fatal_error. Counts describe the reviews Naver exposed in this run, not the full review history.
Export Naver reviews to spreadsheets
After a run, open the default Dataset and select CSV or Excel. Useful spreadsheet columns include:
- Place name and ID;
- review ID;
- rating;
- body;
- representative visit timestamp;
- reviewer nickname;
- keywords;
- owner reply body;
- Place totals;
- scrape timestamp.
For repeated exports, use the dataset API rather than manually downloading each run.
Send results to data pipelines
Common integrations include:
- Google Sheets through an Apify integration or automation platform;
- webhooks that trigger after successful runs;
- Make, Zapier, or n8n workflows;
- BigQuery, Snowflake, PostgreSQL, or object storage;
- Korean-language sentiment and topic models;
- branch-level customer-experience dashboards.
Use reviewId plus placeId as a durable downstream deduplication key.
Run through the Apify API with cURL
Replace YOUR_TOKEN with an Apify API token:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~naver-place-business-reviews-scraper/runs?token=YOUR_TOKEN&waitForFinish=120" \-H "Content-Type: application/json" \-d '{"placeIds": ["36639957"],"sort": "recent","maxReviewsPerPlace": 10,"maxItems": 10}'
Fetch dataset items from the defaultDatasetId returned by the run.
Run with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/naver-place-business-reviews-scraper').call({placeIds: ['36639957'],sort: 'recent',maxReviewsPerPlace: 10,maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Run with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/naver-place-business-reviews-scraper').call(run_input={'placeIds': ['36639957'],'sort': 'recent','maxReviewsPerPlace': 10,'maxItems': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use Naver Reviews Scraper with MCP
Add this Actor to Claude Code through Apify MCP:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/naver-place-business-reviews-scraper"
Claude Desktop
Add this server to the Claude Desktop MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/naver-place-business-reviews-scraper"}}}
Cursor
Use the same Apify MCP URL in Cursor's MCP server settings and name the server apify.
VS Code
Add the same HTTP server URL to your VS Code MCP configuration, then enable the automation-lab/naver-place-business-reviews-scraper tool.
Example prompts:
- "Extract the newest public reviews for Naver Place 36639957."
- "Compare the latest review keywords across these five Naver Place IDs."
- "Collect reviews visited after 2026-07-01 and return low-rating records."
Limits and expected behavior
- The Actor extracts public visitor reviews, not Naver Blog or Café posts.
- Naver's server-rendered page currently exposes at most 10 reviews per Place per run.
- Ratings, text, dates, reviewer details, keywords, media, and replies are nullable.
postedAfterfilters by the review's representative visit timestamp, not its posting date, and is applied only when Naver exposes that timestamp.- Naver can change its public page shape or temporarily throttle requests. If Naver returns review entries without review IDs, the Place is reported as failed (
source_shape_no_review_ids) instead of empty. - A failed Place is recorded in
RUN_SUMMARYwhile other valid Places continue. The run fails when no supplied Place can be processed. - A Place with no public visitor reviews, or a run where every review is excluded or date-filtered, succeeds with zero rows.
- If saving or charging a review fails, the run stops and fails instead of reporting partial output as success. When your run's charge limit is reached, the run stops cleanly and no further reviews are saved.
- Places are read one at a time and Naver takes about 2-5 seconds per Place, so the default 300-second timeout fits roughly 60 Places. For larger lists, raise the run timeout or split the list. Near the timeout the run stops cleanly with
time_limit_reachedand lists the remaining Places asunprocessed. - No proxy mode is exposed because direct structured HTTP is the measured implementation route.
Reliability tips
- Prefer numeric Place IDs when storing long-lived task inputs.
- Keep batches moderate and schedule them instead of repeatedly launching identical runs.
- Use newest-first order for monitoring.
- Deduplicate with
placeIdandreviewId. - Treat missing fields as normal source behavior rather than empty strings.
- Retry temporary upstream 429 or 5xx failures after a delay.
Responsible use and legality
This Actor accesses information publicly displayed by Naver Place. You are responsible for ensuring that your use complies with applicable laws, Naver's terms, privacy obligations, and your organization's policies.
Do not use the data to harass reviewers, infer sensitive traits, build invasive profiles, or make solely automated decisions about people. Collect only what you need, protect exported datasets, respect deletion and retention requirements, and avoid republishing personal profile details without a lawful purpose.
This Actor is not affiliated with, endorsed by or sponsored by NAVER Corporation. Naver is named only to identify the public data source.
This documentation is not legal advice.
Error diagnostics
Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service so we can repair problems. Secret fields and URL queries are removed, and reports are retained for 30 days. Review text and reviewer profiles are not sent.
FAQ
Does the Actor require a Naver account?
No. It reads the public Place review surface without login credentials.
Can I enter a normal Naver Map URL?
Yes, if the URL contains a numeric Place ID. Mobile Place, PC Place, and Naver Map hosts are accepted.
Why are there only ten reviews per Place?
Naver's current public server-rendered review page exposes ten records. The Actor uses that stable, low-cost surface and states the limit explicitly rather than relying on a challenged private pagination call.
Why is review text or rating missing?
Some visitor reviews contain only keywords, media, or visit verification. Naver also hides ratings for some review types. The corresponding fields remain absent.
How do I detect only new reviews?
Run newest-first on a schedule and pass the reviewId values you already stored in excludeReviewIds. Those reviews are skipped and not charged. Use postedAfter as an additional filter when Naver exposes an ISO visit timestamp.
What happens when one Place ID is invalid?
The Actor records that Place failure in RUN_SUMMARY and continues with the remaining inputs. It returns a failed run only when none of the supplied Places can be processed.
Does this extract Naver Blog reviews?
No. The output is intentionally limited to public Naver Place visitor reviews.
Related automation-lab Actors
- Naver Map Local Business Scraper — discover Naver Place IDs and export public business listing details.
- Naver Blog Search Scraper — collect public Naver Blog search results for a separate content-research workflow.
- Naver DataLab Search Trends Scraper — analyze Naver search interest over time.
Use the local-business scraper to discover IDs, then pass those IDs to this Actor for review monitoring.