# Naver Shopping Scraper: Products and Reviews (`parseforge/naver-shopping-scraper`) Actor

Scrape Naver SmartStore and Brand Store products and customer reviews with photos, options, ratings and filters. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/naver-shopping-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

## 🛍️ Naver Shopping Scraper: Products and Reviews

> 🚀 **Export Naver SmartStore and Brand Store products and reviews in seconds.** Every customer review with photos, videos and the exact option bought, or every product with price, discount, rating and review statistics.

Naver Shopping Scraper reads the public product pages of [Naver SmartStore](https://smartstore.naver.com) and [Naver Brand Store](https://brand.naver.com), the storefronts behind most of Korean e-commerce. Paste product URLs or a Brand Store URL and get clean rows you can download as CSV, Excel, JSON or XML.

In one verified run a single product exposed **20,528 reviews across 1,027 pages**, and the Actor reads every page, not just the first few. Review rows carry **26 fields** and product rows **35 fields**, all taken from the same internal API the Naver pages use, so numbers match what shoppers see.

| 🎯 Target Audience | 💡 Primary Use Cases |
| --- | --- |
| Cross-border sellers, Korean market researchers, brand and CX teams, price analysts, data teams | Voice of customer, complaint mining, competitor price tracking, UGC image collection, review velocity and rating monitoring |

### 📋 What the Naver Shopping Scraper does

- 💬 **Reviews mode:** one row per review with rating, full text, date, photos, videos, the purchased option, repurchase and best-review flags, helpful votes and product context.
- 📦 **Products mode:** one row per product with price, sale price, discount rate, stock, rating, review counts, star breakdown, delivery details, brand, category and images.
- 🏬 **Store listing:** give a Brand Store URL and it lists the whole catalogue, or only products matching a search text, in the order you choose.
- 🎛 **Native filters:** sort by ranking, latest, highest or lowest rating and filter by star rating, photo and video reviews, one-month use reviews, repurchase reviews and best reviews. Naver applies them, so the totals are exact.

> 💡 **Why it matters:** Naver reviews are the richest consumer feedback in Korea, and they are locked inside product pages that block foreign IPs. This Actor handles the Korean connection for you.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

#### Review rows

| Field | Description |
| --- | --- |
| 🖼 `imageUrl` | First review photo or video thumbnail (product image if the review is text only) |
| 🆔 `reviewId` | Unique Naver review ID |
| ⭐ `rating` | Star rating from 1 to 5 |
| 💬 `reviewText` | Full review text |
| 📅 `reviewedAt` | Review date, ISO 8601 |
| 📦 `productName`, `productId`, `productUrl` | The reviewed product |
| 🏬 `storeName` | Seller store |
| 🎛 `purchasedOption` | The exact option or SKU the buyer purchased |
| 🗓 `reviewType` | One-month use review or regular review |
| 📷 `contentType` | Text, Photo or Video |
| 🔁 `isRepurchase`, `isFreeTrial`, `isBestReview` | Yes or No flags |
| 👍 `helpfulCount` | Helpful votes |
| 👤 `reviewerId` | Masked reviewer ID as shown by Naver |
| 🙂 `reviewerProfileImageUrl` | Reviewer avatar |
| 🖼 `photoUrls` | All review photo URLs |
| 🎬 `videos` | Video thumbnail, video ID, mime type and caption |
| ⭐ `productRating`, `productReviewCount`, `productPrice`, `category` | Product context on every row |
| 🕒 `scrapedAt`, ❌ `error` | Timestamp and error column |

#### Product rows

| Field | Description |
| --- | --- |
| 🖼 `imageUrl`, 📌 `title`, 🟢 `status`, 🔗 `url` | Identity |
| 🆔 `productId`, `originProductNo` | Channel product ID and origin product number |
| 🏬 `storeName`, `storeUrl`, `storeType` | Seller store and whether it is a Brand Store or SmartStore |
| 🏭 `brandName`, `manufacturer` | Brand and manufacturer |
| 📂 `category`, `categoryPath` | Leaf category and the full path |
| 💴 `price`, `discountedPrice`, `discountRate`, `currency` | List price, sale price, discount percent, KRW |
| 📦 `stockQuantity` | Stock |
| ⭐ `rating`, `reviewCount` | Average rating and total reviews |
| 📷 `photoReviewCount`, `videoReviewCount`, `textReviewCount`, `bestReviewCount`, `oneMonthReviewCount` | Review type counts |
| 📊 `starBreakdown` | Number of reviews per star |
| 🚚 `freeDelivery`, `deliveryFee`, `deliveryCompany`, `sameDayDelivery` | Delivery details |
| 🎛 `hasOptions` | Whether the product has purchase options |
| 🏷 `sellerTags`, 🖼 `images` | Seller keywords and gallery |
| 🕒 `scrapedAt`, ❌ `error` | Timestamp and error column |

#### Real sample: review

```json
{
  "reviewId": "5072650170",
  "rating": 1,
  "reviewText": "비싼허접쓰레기!! 그뿐~!!! 칵~~~퉤~!!!",
  "reviewedAt": "2026-09-28T00:56:07.051Z",
  "productName": "루메나 프리미엄 휴대용 무선 냉각선풍기 FAN JET ULTRA PLUS",
  "productUrl": "https://brand.naver.com/lumena/products/13244298880",
  "storeName": "루메나",
  "purchasedOption": "제품선택: 울트라플러스 플래티넘베이지 [JUD20]",
  "reviewType": "One-month use review",
  "contentType": "Photo",
  "isRepurchase": "No",
  "helpfulCount": 0,
  "reviewerId": "kesa****",
  "productRating": 4.83,
  "productReviewCount": 20528,
  "productPrice": 59900,
  "category": "휴대용선풍기"
}
```

#### Real sample: review with long text

```json
{
  "reviewId": "5071431130",
  "rating": 1,
  "reviewText": "사놓고 실사용 3회 미만인데 쓰려고 할때마다 베터리는 방전되 있어서 ... 충전이 안됨.",
  "reviewedAt": "2026-09-24T13:00:39.298Z",
  "purchasedOption": "제품선택: JET ULTRA PLUS 루나화이트",
  "contentType": "Photo",
  "isBestReview": "No",
  "reviewerId": "chan*****"
}
```

#### Real sample: product

```json
{
  "title": "GOT MILK 유럽산 수입멸균우유 믈레코비타 갓밀크 1L(12입)",
  "status": "SALE",
  "url": "https://smartstore.naver.com/pasteur365/products/11150965069",
  "storeName": "파스퇴르365",
  "storeType": "SmartStore",
  "brandName": "파스퇴르",
  "manufacturer": "믈레코비타",
  "categoryPath": "식품>음료>우유/요거트>우유",
  "price": 33900,
  "discountedPrice": 23900,
  "discountRate": 29,
  "currency": "KRW",
  "rating": 4.85,
  "reviewCount": 130,
  "photoReviewCount": 79,
  "videoReviewCount": 2,
  "starBreakdown": { "1": 0, "2": 0, "3": 3, "4": 13, "5": 114 },
  "freeDelivery": "Yes",
  "deliveryCompany": "롯데택배",
  "sameDayDelivery": "Yes"
}
```

### ✨ Why choose this Actor

- 🌏 **Korean connection handled:** Naver answers only Korean residential IPs, and the Actor is built around that.
- 📦 **Products and reviews in one tool:** switch modes with one setting instead of running two Actors.
- 🎛 **Filters Naver applies itself:** stars, photo and video, one-month use, repurchase and best reviews return exact counts.
- 🖼 **Media included:** direct photo URLs and video thumbnails with video IDs.
- 🧾 **Self-contained rows:** every review carries the product name, rating, price and category, ready for a pivot table.
- ♻️ **No duplicates:** review IDs are de-duplicated inside each run.

### 📈 How it compares to alternatives

| Feature | This Actor | Typical single-purpose Naver tools |
| --- | --- | --- |
| Products and reviews in one Actor | ✅ | Separate Actors |
| Full review depth (1,000+ pages) | ✅ | Often first pages only |
| Star, photo/video, one-month, repurchase and best filters | ✅ | Partial |
| Purchased option per review | ✅ | Sometimes |
| Star breakdown and review type counts on products | ✅ | Rare |
| Brand Store full catalogue listing | ✅ | Product URLs only |
| Global Naver Shopping keyword search | ❌ closed to scrapers by Naver | ❌ |
| Seller replies to reviews | ❌ not in the public review feed | ❌ |
| SmartStore store home listing | ⚠️ usually behind a captcha, use product URLs | Varies |

### 🚀 How to use

1. 🆓 [Create a free Apify account](https://console.apify.com/sign-up?fpr=vmoqkp) and get $5 in free credit.
2. Open the Actor and paste one or more Naver product URLs, and optionally Brand Store URLs.
3. Choose **Reviews** or **Products**, then set sorting and filters.
4. Click **Start** and download the dataset as CSV, Excel, JSON or XML.

Example: paste `https://brand.naver.com/lumena/products/13244298880`, choose Reviews, sort by Lowest rating and tick Photo and video reviews only to get every complaint with pictures.

### 💼 Business use cases

#### 🛒 Cross-border sellers

Read what Korean buyers say about competing products, per option and per star rating, before you launch in Korea.

#### 🧑‍💼 Brand and CX teams

Track new one-star reviews with photos every week and route them to support or product teams.

#### 📊 Market and price analysts

Pull list price, sale price and discount rate for a whole Brand Store and follow them over time.

#### 🔬 Data science

Build sentiment and topic models on thousands of Korean reviews, with the purchased option as a natural segment.

### 🔌 Automating Naver Shopping Scraper

Connect the Actor to Make, Zapier, Slack, Airbyte, GitHub or Google Drive from the Apify integrations tab. Schedule it daily to keep a live review feed, and trigger a Slack alert whenever a new low rating appears.

### 🌟 Beyond business use cases

- 🔬 **Research:** study Korean consumer language and satisfaction patterns.
- 🧑‍🎓 **Personal:** compare similar products before buying.
- 🤝 **Non-profit:** monitor product safety complaints for a category.
- 🧪 **Experimentation:** train Korean text classifiers on labelled star ratings.

### 🤖 Ask an AI assistant about this scraper

Copy the Actor's page link into your favourite AI assistant and ask how to set filters, how to schedule it or how to analyse the output. The assistant can read the description and tell you which settings fit your goal.

### ❓ Frequently Asked Questions

**🔑 Do I need a Naver account?** No. Only public pages are read and nothing is logged in.

**🌏 Why does it use Korean proxies?** Naver blocks foreign IPs with an error page. The Actor uses Korean residential proxies so the pages load.

**📄 How many reviews can I get per product?** All of them. A product with 20,528 reviews exposed 1,027 pages, and the last pages were reachable.

**🔎 Can I search all of Naver Shopping by keyword?** No. Naver's global search is closed to automated clients with a captcha. You can search inside a Brand Store, or paste product URLs.

**🏬 Can I list a whole SmartStore store?** SmartStore store home pages are usually behind a captcha. Paste product URLs for SmartStore products, which load reliably. Brand Store catalogues list fully.

**💬 Are seller replies included?** No. Naver does not include them in the public review feed.

**🎬 Do I get video files?** You get the video thumbnail, video ID, mime type and caption. The video file itself is not exposed publicly.

**🖼 Are review photos included?** Yes, full-size photo URLs.

**💴 Which currency are prices in?** Korean won (KRW).

**🔁 Are duplicate reviews removed?** Yes, inside each run.

**⚠️ What does the error column mean?** A row with an error means Naver did not return that page. Retry it later.

**🧭 Can I limit reviews per product?** Yes, with Max reviews per product, and overall with Max Items.

### 🔌 Integrate with any app

Use the Apify API, webhooks and the official clients for JavaScript and Python to feed the data into your warehouse, BI tool or CRM.

### 🔗 Recommended Actors

- [eBay Scraper](https://apify.com/parseforge/ebay-scraper)
- [Rakuten Japan Scraper](https://apify.com/parseforge/rakuten-japan-scraper)
- [AliExpress Scraper](https://apify.com/parseforge/aliexpress-scraper)
- [Encar Korea Scraper](https://apify.com/parseforge/encar-korea-scraper)
- [Trustpilot Reviews Scraper](https://apify.com/parseforge/trustpilot-reviews-scraper)

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with Naver. It collects only publicly available data.

# Actor input Schema

## `productUrls` (type: `array`):

Naver product pages: smartstore.naver.com/{store}/products/{id} or brand.naver.com/{brand}/products/{id}. Paste the full URL from your browser's address bar.

## `storeUrls` (type: `array`):

Brand Store or SmartStore home pages, for example https://brand.naver.com/lumena. Every product of the store is listed (or only those matching the search text below). Brand Stores list the whole catalogue; SmartStore catalogues are often behind a captcha, so paste product URLs for those.

## `scrapeType` (type: `string`):

Reviews returns one row per customer review with the product context attached. Products returns one row per product with price, rating, review statistics and delivery details.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `maxReviewsPerProduct` (type: `integer`):

Stop after this many reviews for each product. Leave empty or 0 to collect every review, up to Max Items.

## `reviewSort` (type: `string`):

Same four orders as the Naver review section. Lowest rating is the fastest way to surface complaints.

## `starRating` (type: `string`):

Only collect reviews with exactly this many stars.

## `mediaOnly` (type: `boolean`):

Only reviews that include photos or videos (포토/동영상 리뷰).

## `oneMonthOnly` (type: `boolean`):

Only reviews written after about a month of use (한달사용리뷰).

## `repurchaseOnly` (type: `boolean`):

Only reviews from repeat buyers (재구매).

## `bestReviewsOnly` (type: `boolean`):

Only reviews Naver marked as best reviews (베스트).

## `searchQuery` (type: `string`):

Only for Store URLs: keep the products that match this text (Korean or English), like the store's own search box.

## `storeSort` (type: `string`):

Order of the products listed from a store.

## `maxProductsPerStore` (type: `integer`):

When collecting reviews from a Store URL, read the reviews of this many products per store. Ignored when collecting products.

## `includeReviewStats` (type: `boolean`):

Adds photo, video, text and star-breakdown review counts to every product row (one extra request per product).

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

Residential proxies are required. Leave the default.

## Actor input object example

```json
{
  "productUrls": [
    {
      "url": "https://brand.naver.com/lumena/products/13244298880"
    },
    {
      "url": "https://smartstore.naver.com/pasteur365/products/11150965069"
    }
  ],
  "scrapeType": "reviews",
  "maxItems": 10,
  "reviewSort": "ranking",
  "starRating": "all",
  "mediaOnly": false,
  "oneMonthOnly": false,
  "repurchaseOnly": false,
  "bestReviewsOnly": false,
  "storeSort": "POPULAR",
  "maxProductsPerStore": 20,
  "includeReviewStats": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Key review fields

## `products` (type: `string`):

Key product fields

## `fullData` (type: `string`):

Complete dataset with every field

# 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 = {
    "productUrls": [
        {
            "url": "https://brand.naver.com/lumena/products/13244298880"
        },
        {
            "url": "https://smartstore.naver.com/pasteur365/products/11150965069"
        }
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/naver-shopping-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 = {
    "productUrls": [
        { "url": "https://brand.naver.com/lumena/products/13244298880" },
        { "url": "https://smartstore.naver.com/pasteur365/products/11150965069" },
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/naver-shopping-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 '{
  "productUrls": [
    {
      "url": "https://brand.naver.com/lumena/products/13244298880"
    },
    {
      "url": "https://smartstore.naver.com/pasteur365/products/11150965069"
    }
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/naver-shopping-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/naver-shopping-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/bbjKT6uLKRhZ3l99h/builds/QYKd4ZBT9cj0x9LSA/openapi.json
