Naver Shopping Scraper - Products, Prices & Reviews
Pricing
from $1.50 / 1,000 product results
Naver Shopping Scraper - Products, Prices & Reviews
Scrape Naver Shopping products by Korean or English keyword, or by URL. Returns 190+ fields per product, including prices, discounts, seller, ratings, reviews, category path, brand, shipping, and cross-mall price comparison.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
38
Total users
3
Monthly active users
5 days ago
Last modified
Categories
Share
Naver Shopping Brand Store Scraper: Prices, Stock, Ratings & Reviews
This actor turns any Naver Shopping Brand Store (brand.naver.com) into clean, structured product data. Give it one or more brand store slugs or full store links and get 36+ fields per product back: price, real discount, stock, rating, reviews, brand, maker, seller, full category path, delivery, and images, plus the complete raw record so nothing is lost. Optional per-product review detail, and export to JSON, CSV, Excel, or straight into your app through the API.
Why This Scraper?
- 36+ structured fields per product, plus the full raw object so nothing is dropped.
- Whole-catalog coverage. Paginates each store and pulls every listed product, up to your cap.
- Real discount prices, not just the list price: the actual discounted price a shopper would pay, matched to the store's own discount badge.
- Specials fields:
isOnSpecialflags a genuine markdown;originalPrice,discountPercent, andsavingsAmountare filled in only when it is true, and left empty otherwise. - Rich detail: rating and review counts, stock, brand and maker, seller, full category path, delivery type, arrival guarantee, and same day delivery flags.
- Multiple stores per run, sorted by popularity, newest, price, review count, or best selling.
- Built for monitoring. Resume an interrupted run without double counting, or track new, updated, reappeared, and expired products across scheduled runs.
Use Cases
- Brand and e-commerce teams: watch your own or a partner brand's Naver storefront for price, stock, and catalog changes.
- Price monitoring and repricing tools: track discount prices and specials across multiple brand stores at once.
- Market research: compare ratings, review volume, and category coverage across Korean brands selling on Naver.
- Inventory and merchandising checks: monitor stock levels and product availability across a seller's full catalog.
- Product feeds: build a feed of prices, images, and categories for a comparison site, marketplace, or app.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
productName | "오가닉 코튼 티셔츠" |
productNo | "00000000000" |
salePrice | 23800 |
discountedPrice | 21420 |
originalPrice | 23800 |
discountPercent | 10 |
isOnSpecial | true |
savingsAmount | 2380 |
stockQuantity | 1900 |
averageRating | 4.9 |
totalReviews | 1144 |
brand | "샘플브랜드" |
maker | "샘플메이커" |
sellerName | "샘플공식스토어" |
sellerId | "samplestore" |
categoryName | "티셔츠" |
categoryPath | ["패션의류", "남성의류", "티셔츠"] |
freeDelivery | true |
arrivalGuarantee | true |
productUrl | "https://brand.naver.com/samplestore/products/00000000000" |
imageUrl | "https://shop-phinf.pstatic.net/00000000/000000000.jpg" |
crawledAt | "2026-01-01T00:00:00.000Z" |
Each product also carries identifiers and stock/status codes (channelProductId, productStatus, displayStatus, saleType), extra price fields (mobileDiscountedPrice, immediateDiscount), extra category ids, delivery fee details, a raw object with the complete upstream item, and (when fetchReviews is on) a reviewDetail object plus a reviews array (reviewId, reviewer (masked), rating, date, text, option, photos, sellerReply, helpfulVotes).
Output views
The Output tab offers four tables: overview (one row per product), detail (full attributes, options, specs, images), reviews (one row per review, only filled when fetchReviews is on) and changes (incremental changeType rows). A run summary (stores, items pushed, products per store, changes) is saved to the key-value store record OUTPUT. No extra charge: views and the summary re-use the same rows.
How to Use
- Pick a mode:
search(brand store slugs) orurl(paste full brand.naver.com links). - List the stores for that mode, and choose a sort order.
- Set Max products to control run size and cost, and turn on review detail if you need it.
- Click Start, then download the dataset as JSON, CSV, or Excel, or read it through the API.
One store:
{ "brandStores": ["marschoco"], "maxItems": 100 }
Several stores, cheapest first:
{ "brandStores": ["marschoco", "nike"], "sort": "price_asc", "maxItems": 200 }
Store URL mode, with review detail:
{ "mode": "url", "startUrls": ["https://brand.naver.com/marschoco"], "fetchReviews": true, "maxItems": 50 }
Recurring catalog monitoring:
{ "brandStores": ["marschoco"], "incrementalMode": true, "stateKey": "sample-catalog", "maxItems": 100 }
URL mode: supported link shapes
Each link is scoped to what it points at, not the whole store. Behaviour change: URL mode run with startUrls left untouched now scrapes the six example links below (it used to have no default and the prefill was the store root, which redirects to login). Previously every link was reduced to its store and the whole catalog was scraped.
| Link shape | Example | Scope |
|---|---|---|
| Catalog, all products | https://brand.naver.com/marschoco/category/ALL | whole catalog |
| Catalog, paged and sorted | .../category/ALL?st=POPULAR&dt=LIST&page=2&size=40 | st sets the sort, page the start page (a partial scope: no EXPIRED detection) |
| Sub-category | .../category/fc042bb8ad8641968d876531b33aafb0 | that category only |
| Best page | .../best | best sellers |
| In-store search | .../search?q=%EC%B4%88%EC%BD%9C%EB%A6%BF | store products whose name contains the keyword |
| Product page | .../products/4592947042 (a ?NaPm= tracking suffix is ignored) | that single product |
The bare store root brand.naver.com/<store> is still accepted as a whole-catalog alias. The mobile host m.brand.naver.com (and www.brand.naver.com) is treated as the same store as brand.naver.com. Other hosts (smartstore.naver.com) and unsupported pages are skipped with a warning in the run log. Scoped links (category, best, search, product, or a start page above 1) are partial scopes, so they never mark other products as expired. Billing is unchanged.
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/naver-brand-store-scraper").call(run_input={"brandStores": ["marschoco"], "maxItems": 100})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["productName"], product["salePrice"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/naver-brand-store-scraper').call({ brandStores: ['marschoco'], maxItems: 100 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets, or webhooks from the Integrations tab.
Resume and recurring updates
- Resume (
resumeFromRunId) skips products already collected in a previous run or dataset, useful after an interrupted collection, so you don't pay twice. - Incremental mode (
incrementalMode) is for scheduled runs over the same stores. Each product is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEARED, orEXPIRED(only after every selected store's entire catalog was read in one run, without hitting Max products, and only withemitExpiredon).stateKeynames or shares the stored baseline; leave it empty and the actor derives one from the selected stores and options. - Ignore fields when detecting changes (
ignoreFieldsForChanges, incremental mode only) lists extra field names that never count as a change (matched at any depth; they stay in the output). Always ignored:rank,crawledAt,averageRating,totalReviews,premiumReviews,reviewDetail,reviewsand image URL parameters. Price, discount, stock, status and delivery changes mark a productUPDATED. - Resume and Incremental mode are intentionally separate and cannot be combined in one run.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON record. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field.
- For Notion, also set
notionParentPageUrlto the page under which product pages should be created.
Leave mcpConnectors empty to skip this entirely.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search = brand store slugs; url = brand store links |
brandStores | array | (none, prefilled with marschoco) | Brand store slugs or brand.naver.com URLs (Search mode) |
startUrls | array | one example of each supported link shape (below) | brand.naver.com links (URL mode) |
sort | string | popular | popular, recent, price_asc, price_desc, review, or sales |
fetchReviews | boolean | false | Also fetch per-product review detail (summary plus individual reviews) |
maxReviewsPerProduct | integer | 20 | Individual reviews nested on each product (0 to 200; 0 = summary only) |
reviewSort | string | RANKING | RANKING or RECENT |
reviewType | string | ALL | ALL, PHOTO or VIDEO |
maxItems | integer | 20 | The single result cap, split across stores (hard ceiling 100000; 0 = that ceiling) |
proxy | object | (none, prefilled with residential, South Korea) | Connection configuration; keep the default selection for reliable results |
resumeFromRunId | string | (none) | Skip products already collected by a previous run or dataset |
ignoreFieldsForChanges | array | [] | Incremental mode only: extra field names that never count as a change |
incrementalMode | boolean | false | Track catalog changes across scheduled runs |
stateKey | string | (none, derived automatically) | Optional name for an incremental monitoring campaign |
emitUnchanged | boolean | false | Include products with no detected change in incremental mode |
emitExpired | boolean | false | Include products no longer found after a complete catalog scan |
mcpConnectors | array | (none) | Optional MCP connectors to export results into |
notionParentPageUrl | string | (none) | Notion connector only: parent page for the export |
maxNotifyListings | integer | 50 | Cap on items exported per connector, per run |
Output Example
Sample shape: values are illustrative placeholders, not from a live listing.
{"productNo": "00000000000","channelProductId": "00000000000","productName": "오가닉 코튼 티셔츠","productUrl": "https://brand.naver.com/samplestore/products/00000000000","imageUrl": "https://shop-phinf.pstatic.net/00000000/000000000.jpg","salePrice": 23800,"discountedPrice": 21420,"mobileDiscountedPrice": 21420,"immediateDiscount": 2380,"originalPrice": 23800,"discountPercent": 10,"isOnSpecial": true,"savingsAmount": 2380,"stockQuantity": 1900,"productStatus": "SALE","displayStatus": "ON","saleType": "NEW","authenticationType": "NORMAL","averageRating": 4.9,"totalReviews": 1144,"premiumReviews": 88,"brand": "샘플브랜드","maker": "샘플메이커","sellerName": "샘플공식스토어","sellerId": "samplestore","channelNo": 1000001,"channelUid": "sampleuid","categoryId": "50000000","categoryName": "티셔츠","categoryPath": ["패션의류", "남성의류", "티셔츠"],"wholeCategoryId": "50000000_50000001_50000002","freeDelivery": true,"deliveryFeeType": "FREE","deliveryBaseFee": 0,"arrivalGuarantee": true,"todayDelivery": false,"brandSlug": "samplestore","rank": 1,"crawledAt": "2026-01-01T00:00:00.000Z","raw": { "...": "complete upstream item" }}
Plan Requirement
An Apify account is required to run this actor. Naver rate-limits shared datacenter connections with an intermittent "access unavailable" error page (HTTP 429, no CAPTCHA), so datacenter connections work only some of the time. Residential connections in South Korea are required for reliable results, and that is the default selection: keep it. If the selected connection is unavailable (for example, Apify free plans do not include residential proxies), the actor continues on a backup connection and logs "The selected connection is unavailable to this run ... Continuing on a backup connection; some pages may still be unavailable", then "Served over the backup connection" for pages it could read. If the backup also fails the run stops with "No results: residential proxies are unavailable on this run ... and the backup connection could not load the requested Naver Brand Store pages". If the proxy is refused for the account the run reports "The proxy connection was refused for this account, so no page could be read"; if no results page could be loaded it reports "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search."
FAQ
How much does it cost?
You pay per product returned, plus the existing review-detail event: one unit per delivered product that carries review data (summary and up to Max reviews per product, with no extra per-review charge), recorded right after that product is saved, only when you turn on review detail. Unchanged or suppressed products are never charged. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.
Is it legal to scrape Naver Shopping?
This actor reads publicly available Naver Brand Store product pages. You are responsible for how you use the data: follow Naver's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.
Does this scrape general Naver Shopping search results?
No. It scrapes brand.naver.com Brand Store catalogs, the storefronts brands run directly on Naver. Give it a brand store slug (for example marschoco) or its brand.naver.com URL; it does not take a keyword search across all of Naver Shopping.
Can I monitor a store on a schedule and only get what changed?
Yes. Turn on Incremental mode and schedule the actor from the Schedules tab. Each run then compares every product against the last completed scan and returns only what is new, updated, reappeared, or (once a full scan confirms it, and only with emitExpired on) expired. Unchanged products are skipped and not billed unless emitUnchanged is on.
Why did my run fail instead of returning an empty dataset?
The run fails only in three cases: every store request was rejected so nothing could be read at all, the resumeFromRunId could not be read, or Resume and Incremental mode were both turned on in the same run (they cannot be combined). If a store genuinely has no matching products, or an incremental scan found no changes, the run still succeeds and reports that clearly instead of stopping with an error.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear, or Airtable.
🔗 Want more Naver data?
Pair this actor with these related scrapers from the same team:
| 🧩 Naver Land Scraper Scrape structured property listings from Naver Land map URLs. Extract listing titles... | ✈️ Naver Map Scraper From $1/1K. Scrape Naver Map places by keyword or URL: names, categories, ratings... |
| 🛒 Kogan.com Scraper Scrape Kogan.com products with full details and customer reviews. Search by keyword or... | 🛒 Coupang Scraper Scrape Coupang.com products by keyword, category or URL. Extract 20+ fields including... |
| 🛒 MediaMarkt Germany Scraper Scrape MediaMarkt.de products by keyword or URL. Extract current and original prices... | 🛒 Gmarket.co.kr Scraper Scrape Gmarket.co.kr product listings and customer reviews into clean JSON. Search by... |
💬 Support
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.