Naver Shopping Scraper: Korea Prices, Sellers, Review Counts
Pricing
from $2.72 / 1,000 products
Naver Shopping Scraper: Korea Prices, Sellers, Review Counts
Get Naver Shopping (네이버쇼핑) products for any keyword: prices, sellers, ratings, review counts and ad flags for laptops, coffee or skincare. About $0.0034 per product: 1,000 cost $3.40. No login. Public search snapshots; full mall offers and review text are unavailable.
Pricing
from $2.72 / 1,000 products
Rating
0.0
(0)
Developer
fortbrand
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Security
Limited permissionsShare
For pricing teams, Korean marketplace researchers and brands that need repeatable product-search snapshots from Naver Shopping (네이버쇼핑). Search in Korean or English and export displayed prices, seller names, catalog references, ratings, review counts, ad flags and product links.
About $0.0034 per unique product before plan discounts. A 20-product check costs about $0.07, and 1,000 delivered products cost $3.40, plus the small Actor start fee. No Naver login or developer key is required.
Coverage: this Actor reads the shopping cards embedded in public mobile Naver search, including the standard list and Explore shopping layouts. It does not deliver full catalog detail pages, every mall's offer table or review text. Snapshot size depends on the keyword and shopping layout, typically up to 150 cards per keyword and sometimes fewer. Prices and review counts are live observations of those cards.
What you get
Products can be comparison catalogs or single-store listings. catalogId and lowestPrice distinguish their prices. Every row retains its source and observation time.
| Field | Meaning |
|---|---|
verdict | A short description of the displayed price and seller or comparison |
recordType | PRODUCT, a free NOTE, or the free SUMMARY |
productId | Naver shopping-search product identifier, stored as text |
catalogId | Price-comparison catalog identifier, when the card supplies one |
title | Product name with search highlighting removed |
brand, maker, category | Names only when supplied; otherwise null |
price | Displayed discounted product price, before shipping |
lowestPrice | Displayed catalog comparison price; null for a single-store listing |
currency | Currency supplied by Naver, normally KRW |
regularPrice | Positive price before the displayed discount, when supplied |
onSale, discountPercent | Comparison with regular price and the source's discount percentage |
mallName | Public store name; a catalog comparison can have no single mall |
mallCount | Catalog's source-reported listing count; not a verified count of unique retailers |
offers | With includeOffers, the one displayed offer of a single-store card |
offersComplete | false when offers were requested; this is not an all-mall table |
shippingFee | Card's stated shipping fee; catalog shipping can vary across sellers |
rating, reviewCount | Public average score and review count; no reviewer identities |
purchaseCount | Positive purchase count when shown; absent or zero placeholders become null |
isAd | Whether Naver identifies the card as an advertisement |
promotionTypes | Promotion identifiers supplied on the card |
unitPrice, unitOfMeasure | Unit-price information when present |
categoryId, categoryIds | Leaf category and category-ID chain |
channelProductId | Store product identifier, when present; a different namespace from productId |
imageUrl, url | Main image and product or catalog page |
keyword, sourceUrl, sourceRank | Search term, public source page and original card position |
cardType, sortApplied | Source card kind and whether sorting was source order or within the snapshot |
scrapedAt, coverage | UTC observation time and a concise coverage explanation |
Missing fields remain null. The Actor does not guess a brand from the title, turn a category ID into an invented category name or treat every zero purchase count as a reported sale count.
Use with AI agents (MCP)
An assistant connected to the Apify MCP server can call vant47/naver-shopping-scraper with searchTerms and maxItems. Ask for 20 Korean wireless-earphone listings with prices, sellers, ratings, review counts and ad flags.
Filter results to recordType == "PRODUCT" and read SUMMARY. Price ordering applies within the public snapshot. Empty or restricted responses produce free notes, never invented products.
Start in three steps
- Enter one or more
searchTerms, preferably specific product words in Korean. English model and brand searches also work. - Set
maxItems. Start with 20. Choose an optional price band or sort order. - Run the Actor and open the Products and prices dataset view. Export JSON, CSV or Excel, or retrieve the dataset through the API.
The prefilled input is:
{"searchTerms": ["무선 이어폰"],"maxItems": 20}
A live cloud check on 29 October 2026 delivered 20 unique products in 11.7 seconds. It recorded 20 product charges. Runtime varies with source response time and retries.
Inputs
| Input | Default | How it works |
|---|---|---|
searchTerms | Prefill: 무선 이어폰 | Array of Korean or English product searches; up to 100 terms |
startUrls | Empty | Optional Naver search links containing query=; strings or objects with url |
sort | relevance | relevance, priceAsc, priceDesc, reviews or newest; see the sort limits below |
priceMin, priceMax | Unset | Inclusive KRW band applied to the returned snapshot |
maxItems | 20 | Global unique-product limit, from 1 to 10,000, across all inputs |
includeOffers | false | Adds the one displayed offer on a single-store card; no extra charge |
includeReviews | false | Review text is unavailable; requesting it adds a free coverage note |
maxReviews | 20 | Reserved for review-text collection, currently unavailable |
proxyConfiguration | Apify proxy on | Datacenter first; fresh sessions, then direct cloud and Korean residential recovery when needed |
relevance keeps Naver's card order. Price sorts and reviews reorder only the cards in the returned snapshot. They do not issue a marketplace-wide lowest-price or most-reviewed query. The source does not provide listing dates, so newest returns a note and preserves source relevance order. sortApplied makes the behavior explicit on each row.
maxItems limits unique products across inputs. Filters, snapshot size and the spending limit can reduce output. Searches run in input order; an early search can fill the limit. Use separate tasks for independent allocations.
Compare a price band
{"searchTerms": ["캠핑 의자"],"sort": "priceAsc","priceMin": 20000,"priceMax": 100000,"maxItems": 30,"includeOffers": true}
This sorts qualifying camping-chair cards from low to high. Store cards can include one offer; catalog cards keep offers empty because the full table is unavailable.
Use a saved Naver search link
{"startUrls": ["https://search.shopping.naver.com/search/all?query=커피"],"maxItems": 20}
Desktop shopping-search links are translated to their query on the supported mobile surface. The Actor also accepts msearch.shopping.naver.com, search.naver.com and m.search.naver.com search links. A catId on a search URL filters the returned category-ID chains. Use the top-level price and sort inputs to control those options; other parameters on a pasted URL do not reproduce the desktop page's filters.
A standalone /catalog/123... URL or a category URL without a search term produces a free note explaining the limitation. It does not return a search substitute for an unrelated product. Links outside the supported Naver hosts are skipped.
Reading the results correctly
Products and prices emphasizes prices, sellers, ratings and ads. Displayed discounts shows discount fields and promotions; export onSale == true for discounted products only. All product fields includes identifiers and coverage notes.
A dataset ends with one free SUMMARY row. A matching SUMMARY record is also saved in the default key-value store. It lists delivered products, catalog products, malls represented, ads, discounts, requested searches, available cards, source failures and whether the spending limit stopped collection. Notes and summary rows have no product charge.
Repeated identifiers are delivered once per run, including overlap across keywords and placements. The first observation wins. Later scheduled runs deliberately create fresh observations for price monitoring.
Monitor prices every day
Save a working input as an Apify task and attach a daily schedule. Keep terms, filters, sort and limits consistent. The Actor does not create schedules itself.
Join dated runs on productId; use catalogId for comparison catalogs. Keep price, mallName, isAd and scrapedAt. A changed rank can reflect ads or snapshot composition rather than market share.
Thirty daily 20-product runs cost about $2.04 at list product prices, plus start fees. Export to Sheets, n8n, Make, Zapier, webhooks or a database. Keep timestamps so yesterday's price stays identified as yesterday's observation.
Price and spending controls
| Delivered products | List product charge | Bronze product charge |
|---|---|---|
| 20 | $0.068 | $0.0646 |
| 100 | $0.34 | $0.323 |
| 1,000 | $3.40 | $3.23 |
List price is $0.0034 per Product. Bronze receives 5% off, Silver 10% and Gold and higher tiers 20%. Apify's start event is $0.00005 per GB, with at least one start unit. Platform usage is included in the product pricing. There is no extra dataset-item fee and no offer or review event.
Set a maximum charge in Apify's run options to cap a job. The Actor checks remaining capacity before fetching another search and before delivering another product. It saves the row before charging it and stops cleanly when the limit cannot cover another product. Duplicates, failed searches, unavailable catalog detail, coverage notes and empty results do not incur product charges. A start fee can still apply to an empty run.
If Apify reboots or migrates a run, saved snapshots, dataset identifiers and acknowledged event counts are reused. Already delivered products are skipped and already accepted charges are reconciled. This keeps a resumed run from billing the same product a second time.
API examples
Keep your Apify token in an application secret. A synchronous request returns dataset rows:
curl -X POST \'https://api.apify.com/v2/acts/vant47~naver-shopping-scraper/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"searchTerms":["노트북"],"maxItems":20}'
Python with the official Apify client:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("vant47/naver-shopping-scraper").call(run_input={"searchTerms": ["텀블러"], "maxItems": 20})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("recordType") == "PRODUCT":print(row["productId"], row["title"], row["price"])
JavaScript with the official client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vant47/naver-shopping-scraper').call({searchTerms: ['선크림'], maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const products = items.filter(row => row.recordType === 'PRODUCT');console.log(products.map(({ productId, title, price }) => ({ productId, title, price })));
For larger jobs, start asynchronously and paginate the completed dataset. Retrieve SUMMARY from the default key-value store. After a synchronous timeout, check the existing run before starting another.
Limits and FAQ
Does it read all Naver Shopping results?
No. It reads public mobile shopping snapshots, typically up to 150 cards per term, sometimes fewer. It does not paginate the full shopping catalog.
Can it fetch every seller's price or written reviews?
No. Full mall-offer tables and review text are unavailable. A single-store card can provide one displayed offer. Unavailable extras incur no extra event charge.
Why are brand, maker or category names empty?
The cards do not consistently supply those names. Category IDs are retained. Missing names stay null and are never inferred from titles.
Is price the checkout total?
No. It is the card's product price before shipping. Coupons, membership, payment method and selected options can change the total. Check the linked page.
Why fewer products than requested?
Snapshot size, filters, duplicate removal and the spending limit can reduce output. SUMMARY explains source counts and failures. maxItems is an upper limit.
Does newest sorting work?
Listing dates are unavailable. newest reports that limit and retains relevance order. Other sorts operate within the snapshot.
What happens on a refusal?
The search receives a free note and partial summary; other inputs continue. Retries honor Retry-After. No challenge is solved and no account session is used.
What is purchaseCount?
Naver's positive displayed count, not an independently verified sales or revenue estimate. Missing or non-positive placeholders become null.
Can I paste catalog links?
Standalone catalog URLs return a free note. Use keywords or saved search links for collection. Output product links support manual checks.
Can I schedule and export?
Yes. Use Apify tasks, schedules, dataset exports, integrations and the API. Match product IDs across runs and retain observation times.