# Naver Shopping Scraper (`parsebird/naver-shopping-scraper`) Actor

Scrape Naver Brand Store (brand.naver.com) product listings — prices, discounts, stock, ratings, and seller info. Search by brand store name or URL, sort results, and export to JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/naver-shopping-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.39 / 1,000 products

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?

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 Shopping Scraper

Naver Shopping Scraper extracts product listings from any **Naver Brand Store** (brand.naver.com) — prices, discounts, stock, ratings, and seller details — without touching Naver's blocked internal APIs.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Look up any Naver Brand Store by name or URL, sort by price, popularity, recency, reviews, or sales, and get clean structured product data ready for pricing analysis, catalog monitoring, or competitor research.
</td>
</tr></table>

<br>

##### Copy to your AI assistant

```
Use the Apify actor "parsebird/naver-shopping-scraper" (call it via ApifyClient) to scrape Naver Brand Store (brand.naver.com) product listings. Example run input: {"mode": "search", "brandStores": ["marschoco"], "sort": "popular", "maxItems": 100}. Key inputs: mode (string, "search" or "url", default "search"), brandStores (array of brand store slugs or brand.naver.com URLs, used when mode=search), startUrls (array of full brand.naver.com URLs, used when mode=url), sort (string: popular, recent, price_asc, price_desc, review, sales; default "popular"), maxItems (integer, 0 = unlimited, default 20, split evenly across stores), resumeFromRunId (string, skip products already collected by a previous run), incrementalMode (boolean, track catalog changes across scheduled runs), stateKey/emitUnchanged/emitExpired (incremental-monitoring controls), proxyConfiguration (object, keep the default Residential/KR selection). Output: one JSON object per product with productName, productNo, channelProductId, salePrice, discountedPrice, discountPercent, stockQuantity, averageRating, totalReviews, brand, maker, sellerName, sellerId, categoryName, categoryPath, freeDelivery, arrivalGuarantee, productUrl, imageUrl, crawledAt. Full API reference: https://apify.com/parsebird/naver-shopping-scraper/api. Get an API token at https://console.apify.com/account/integrations.
```

### What does Naver Shopping Scraper do?

[Naver Brand Store](https://brand.naver.com) (네이버 브랜드스토어) is Naver's official-brand storefront program, hosting thousands of manufacturer and distributor shops inside Naver Shopping. Naver Shopping Scraper reads a store's product catalog and returns it as structured data — no manual browsing, no copy-pasting prices.

- 🔍 **Two input modes** — search by brand store slug/name (`marschoco`) or paste a full `brand.naver.com` URL
- 💰 **Full pricing detail** — list price, discounted price, discount percentage, and computed savings amount
- ⭐ **Ratings and review counts** — average rating and total review count come with every product, no extra request needed
- 📦 **Stock, delivery, and seller info** — stock quantity, free-delivery flag, arrival-guarantee flag, seller name and ID
- 🔀 **Six sort orders** — popular, recent, price low-to-high, price high-to-low, most reviewed, best selling
- 🔁 **Incremental monitoring** — schedule recurring runs and only get new, changed, or removed products
- ⏭️ **Resume support** — point at a previous run ID to skip products you already collected

Results are ready to export as **JSON, CSV, or Excel**, available through the [Apify API](https://docs.apify.com/api/v2), and can run on a [schedule](https://docs.apify.com/platform/schedules) or be wired into [Make, Zapier, and other integrations](https://apify.com/integrations).

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| mode | string | No | search | `search` = look up stores by slug/name; `url` = use full brand.naver.com URLs |
| brandStores | array | No | \["marschoco"] | Brand store slugs (e.g. `marschoco`) or full brand.naver.com URLs. Used when mode = search |
| startUrls | array | No | — | Full brand.naver.com store URLs. Used when mode = url |
| sort | string | No | popular | `popular`, `recent`, `price_asc`, `price_desc`, `review`, `sales` |
| maxItems | integer | No | 20 | Total product cap, split evenly across stores. `0` = unlimited |
| resumeFromRunId | string | No | — | Previous run ID to skip already-collected products |
| incrementalMode | boolean | No | false | Track catalog changes across scheduled runs |
| stateKey | string | No | — | Name for an incremental monitoring campaign |
| emitUnchanged | boolean | No | false | Also output unchanged products in incremental mode |
| emitExpired | boolean | No | false | Also output products no longer found in incremental mode |
| proxyConfiguration | object | No | Residential (KR) | Keep the default — Naver blocks non-residential traffic |

**One store:**

```json
{ "brandStores": ["marschoco"], "maxItems": 100 }
```

**Several stores, cheapest first:**

```json
{ "brandStores": ["marschoco", "innisfree"], "sort": "price_asc", "maxItems": 200 }
```

**Store URL form:**

```json
{ "mode": "url", "startUrls": [{ "url": "https://brand.naver.com/marschoco" }], "maxItems": 50 }
```

### What data can you extract from Naver Brand Store?

| Field | Example |
|-------|---------|
| productName | 이클립스 페퍼민트+워터멜론+피치+스트로베리 4종 |
| productNo | 4582696277 |
| channelProductId | 4592947042 |
| salePrice | 18400 |
| discountedPrice | 16500 |
| discountPercent | 10 |
| savingsAmount | 1900 |
| stockQuantity | 875267 |
| averageRating | 4.9 |
| totalReviews | 46838 |
| brand / maker | 이클립스 / THE WRIGLEY |
| sellerName / sellerId | 한국마즈 제과공식몰 / marsc2016 |
| categoryName / categoryPath | 사탕 / \["식품","젤리/사탕/초콜릿","사탕"] |
| freeDelivery / arrivalGuarantee | true / true |
| productUrl | https://brand.naver.com/marschoco/products/4592947042 |
| imageUrl | https://shop-phinf.pstatic.net/... |
| crawledAt | 2026-09-12T04:53:57.220Z |

### Output example

```json
{
  "productName": "[슈퍼적립] 이클립스 페퍼민트+워터멜론+피치+스트로베리 4종 각2개 (총 8개입)",
  "productNo": 4582696277,
  "channelProductId": 4592947042,
  "salePrice": 18400,
  "discountedPrice": 16500,
  "discountPercent": 10,
  "isOnSpecial": true,
  "savingsAmount": 1900,
  "stockQuantity": 875267,
  "averageRating": 4.9,
  "totalReviews": 46838,
  "brand": "이클립스",
  "maker": "THE WRIGLEY",
  "sellerName": "한국마즈 제과공식몰",
  "sellerId": "marsc2016",
  "categoryName": "사탕",
  "categoryPath": ["식품", "젤리/사탕/초콜릿", "사탕"],
  "freeDelivery": true,
  "arrivalGuarantee": true,
  "brandSlug": "marschoco",
  "productUrl": "https://brand.naver.com/marschoco/products/4592947042",
  "imageUrl": "https://shop-phinf.pstatic.net/20260209_164/17705941745384OLvj_JPEG/33567046097196981_876673907.jpg",
  "crawledAt": "2026-09-12T04:53:57.220Z"
}
```

### Use cases

- Track a competitor's Naver Brand Store pricing and discount changes over time
- Build a price-comparison feed across multiple Korean brand stores
- Monitor stock levels and out-of-stock products for a distributor
- Feed product catalogs into a price-monitoring or repricing tool
- Research category assortment and bestsellers before launching a store

### How to scrape Naver Brand Store data

1. Click **Try for free** (no code needed) or grab the Actor ID for the API/SDK.
2. Set `mode` to `search` and list one or more brand store slugs in `brandStores` — or set `mode` to `url` and paste full `brand.naver.com` links into `startUrls`.
3. Pick a `sort` order and a `maxItems` cap (`0` for everything reachable).
4. Click **Start** and watch products land in the dataset in real time.
5. Export the results as **JSON, CSV, or Excel**, or pull them via the [Apify API](https://docs.apify.com/api/v2) into your own pipeline.

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/naver-shopping-scraper").call(run_input={
    "mode": "search",
    "brandStores": ["marschoco"],
    "sort": "popular",
    "maxItems": 100,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["productName"], item["salePrice"])
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/naver-shopping-scraper').call({
    mode: 'search',
    brandStores: ['marschoco'],
    sort: 'popular',
    maxItems: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### How much does it cost to scrape Naver Brand Store?

Naver Shopping Scraper uses [pay-per-event pricing](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing-model) — you only pay for products actually delivered, not for compute time.

| Event | Price per event | Price per 1,000 |
|-------|----------------|-----------------|
| Product scraped | $0.00279 | **$2.79** |

Scraping 1,000 products from a Naver Brand Store costs **$2.79** on the Free plan (lower on paid plans — see the [Pricing tab](https://apify.com/parsebird/naver-shopping-scraper/pricing) for Bronze/Silver/Gold rates). Failed or blocked requests are never charged.

### Is it legal to scrape Naver Brand Store?

Naver Shopping Scraper only collects product data that is **publicly visible** on brand.naver.com without logging in. Scraping publicly available data is generally legal, but you're responsible for how you use the data — always review Naver's [Terms of Service](https://www.naver.com) and consult [Apify's guide on the legality of web scraping](https://www.apify.com/is-web-scraping-legal) before scraping personal data or reusing content commercially.

### Related Actors

- [Naver Map Scraper](https://apify.com/parsebird/naver-map-scraper) — places, ratings, and business info from Naver Map
- [Naver Blog & Cafe Scraper](https://apify.com/parsebird/naver-blog-cafe-scraper) — posts and comments from Naver Blog and Cafe
- [Naver Place Review Scraper](https://apify.com/parsebird/naver-place-review-scraper) — reviews from Naver Place listings

### FAQ

**What is a Naver Brand Store?**
It's Naver's official-brand storefront format at `brand.naver.com` — a dedicated shop for a single manufacturer or distributor inside Naver Shopping, distinct from a regular Naver Smart Store.

**How many products can I get from one store?**
Naver Shopping Scraper can return every product a store's category menu makes browsable. A single request covers up to 80 products; stores that split their catalog into display categories are automatically combined to go beyond that. Set `maxItems` to `0` to collect everything reachable.

**Why do I need a proxy?**
brand.naver.com blocks direct and datacenter traffic. The Actor's default proxy setting (Residential, South Korea) is required for reliable results — don't disable it.

**Can I search by keyword instead of store name?**
Not with this Actor — it reads a specific brand store's own catalog. To search across all of Naver Shopping by keyword, see [Naver's Open API](https://developers.naver.com/docs/serviceapi/search/shopping/shopping.md).

**Does it work for stores in languages other than Korean?**
Yes — any brand.naver.com store works, though most listed stores are Korean-market sellers and product text will be in Korean.

**Can I schedule recurring runs?**
Yes. Use Apify's [Scheduler](https://docs.apify.com/platform/schedules) with `incrementalMode` enabled to get only new, changed, or removed products on each run.

**Something looks wrong or a store won't scrape — what do I do?**
Open an issue on the Actor's **Issues** tab with the store slug and run URL. Naver occasionally changes its store layout; report it and it'll be investigated.

# Actor input Schema

## `mode` (type: `string`):

search = look up brand stores by slug/name; url = use full brand.naver.com store URLs.

## `brandStores` (type: `array`):

Brand store slugs (e.g. "marschoco") or full brand.naver.com URLs. Used when Mode = search.

## `startUrls` (type: `array`):

Full brand.naver.com store URLs, e.g. https://brand.naver.com/marschoco. Used when Mode = url.

## `sort` (type: `string`):

Product sort order applied within each store.

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

Total product cap, split evenly across all stores in this run. 0 = unlimited (collect everything reachable per store, up to Naver's per-request cap of 80 products per store category).

## `resumeFromRunId` (type: `string`):

Optional. Paste a previous run ID to skip products already collected by that run.

## `incrementalMode` (type: `boolean`):

Track catalog changes across scheduled runs. Requires the same Actor task/schedule to be reused so state persists.

## `stateKey` (type: `string`):

Optional name for this incremental monitoring campaign. Leave blank to use a single default campaign.

## `emitUnchanged` (type: `boolean`):

In incremental mode, also output products with no change since the last run.

## `emitExpired` (type: `boolean`):

In incremental mode, also output products that were seen in a previous run but are no longer found.

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

Naver blocks brand.naver.com without a proxy. Keep the default (Residential, South Korea) for reliable results.

## Actor input object example

```json
{
  "mode": "search",
  "brandStores": [
    "marschoco"
  ],
  "startUrls": [],
  "sort": "popular",
  "maxItems": 20,
  "resumeFromRunId": "",
  "incrementalMode": false,
  "stateKey": "",
  "emitUnchanged": false,
  "emitExpired": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}
```

# 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 = {
    "mode": "search",
    "brandStores": [
        "marschoco"
    ],
    "sort": "popular",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "KR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "mode": "search",
    "brandStores": ["marschoco"],
    "sort": "popular",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "KR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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 '{
  "mode": "search",
  "brandStores": [
    "marschoco"
  ],
  "sort": "popular",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}' |
apify call parsebird/naver-shopping-scraper --silent --output-dataset

```

## MCP server setup

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