How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
무선 이어폰in Search keywords. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Search Naver Shopping (네이버 쇼핑), Korea's largest shopping search, by keyword and get one row per product with price, lowest price, seller count, mall, brand, reviews, rating, ad flag and links.
- Catalog cards (price comparison pages) give the shown price, the lowest price and the number of sellers.
- Single-seller cards give the price, the list price before discount, the discount, the mall name and the purchase count.
- Sponsored listings are kept and marked with
isAd: true. You can turn them off. - Each row has the keyword, its position, the source and the time we read it.
Good for
- Check the market price of a product in Korea, with the lowest price across sellers.
- Watch which brands, malls and ads show up for your keywords.
- Build a product list for a category keyword with reviews and ratings.
Not a good fit
- Search results only. Product detail pages (options, stock, full review text, seller lists) are not included.
- Naver's ranking is personal and changes during the day. Two runs can show a different order.
- This is not a drop-in replacement for scrapers that expand each catalog into all its sellers.
Who uses it
Korea market researchers
Check the market price of a product, with the lowest seller price.
Brand managers
Watch which brands, malls and ads appear for your keywords.
Ecommerce analysts
Build a product list for a category with reviews and ratings.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Product | $0.0015 (from $0.0013 on paid Apify plans) | One Naver Shopping product row saved to the dataset. not_found and error rows are free. |
| Start fee | $0.004 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
Examples
- One product: about $0.0055.
- 1,000 products: about $1.50.
- Every day 100 products, for 30 days: about $4.62 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 3,300 products.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Do I need a Naver API key?
No. No account or key is needed.
Why is the order different each run?
Naver ranking is personal and changes during the day.
Do I get product detail pages?
No. Only search results. Options, stock and full reviews are not included.
How many products can I get?
Up to 1,000 per keyword and 20 keywords per run.
Why is a catalog price sometimes very low?
For catalog cards, Naver shows the lowest offer across all sellers. Sometimes that offer is a rental, a used item or an accessory (we saw rentals at ₩1). The Actor keeps Naver's number as shown; check sellerCount and listingType, or set minPrice.
Is the data the same as on Naver?
Yes, it is the order and prices that Naver's mobile search shows at fetchedAt. Naver personalises ranking and updates prices all the time, so runs at different times can differ. Reviews on catalog cards are Naver's total across sellers.
Can I use the data?
The Actor reads public pages. Naver's terms and robots.txt limit automated access, and you are responsible for how you use the data. If you need an official channel, Naver offers a Shopping Search API with your own developer key and a daily quota. This Actor is independent and not affiliated with Naver.
Details
Step by step on Apify
- Open the Input tab.
- Add one keyword to Search keywords (
queries), for example무선 이어폰. Korean keywords give the best results. - Keep Products per keyword (
maxItems) at 20 for a first test. - Click Start.
- Open the Products view in the Output tab.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Price check for a product | queries + minPrice/maxPrice | product | price, lowPrice, sellerCount, mall | Export to a sheet, convert KRW |
| Brand and ad watch | queries, includeAds: true | product | brand, maker, isAd, position | Schedule a daily run |
| Category product list | queries, maxItems: 1000 | product | title, reviewCount, rating, categoryId | Load the dataset by API |
Tips for better results
- Turn off brand names for small, fast runs. They need extra requests.
- Use the price range filter to remove very cheap parts and accessories.
- Turn off ads if you want only normal listings.
Limits and good to know
- Up to 20 keywords and 1,000 products per keyword per run
- Speed: about 1,000 products in 20 seconds. Each keyword takes at least 3–15 seconds, even for a few products, because brand names need extra requests (20 keywords × 1 product took about 3 minutes). Set
addBrandNamestofalsefor faster small runs. 20 keywords × 1,000 products took 350 seconds. The default timeout is 300 seconds, so for more than about 15,000 products set a longer timeout (for example 600 seconds) in the run options. If time runs out, the run keeps what it saved, ends asPARTIALand lists the keywords it did not start - A few keywords show a short list on Naver (for example hotel or travel words). Then you may get fewer products than
maxItems
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"recordType": "product",
"status": "complete",
"query": "무선 이어폰",
"position": 8,
"productId": "56796984706",
"title": "삼성전자 갤럭시 무선이어폰 버즈3 FE SM-R420N 노이즈 캔슬링 그레이",
"price": 143000,
"originalPrice": null,
"discountRate": null,
"lowPrice": 132990,
"currency": "KRW",
"listingType": "catalog",
"sellerCount": 71,
"mall": null,
"brand": "갤럭시",
"reviewCount": 8467,
"rating": 4.9,
"purchaseCount": null,
"isAd": false,
"url": "https://search.shopping.naver.com/catalog/56796984706",
"source": "naver_shopping_mobile_search",
"sourceUrl": "https://m.search.naver.com/search.naver?where=m_shop&query=%EB%AC%B4%EC%84%A0+%EC%9D%B4%EC%96%B4%ED%8F%B0",
"fetchedAt": "2026-10-14T12:35:23.121Z"
}Use it from code
Actor ID: cliqtomedia/naver-shopping-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/naver-shopping-scraper").call(run_input={
"queries": [
"무선 이어폰"
],
"maxItems": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~naver-shopping-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["무선 이어폰"], "maxItems": 20}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/naver-shopping-scraper")
result = tool.invoke({"run_input": {"queries": ["무선 이어폰"], "maxItems": 20}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (37)
| Field | Type | Meaning |
|---|---|---|
recordType | string | Row type: product, or query for a keyword that returned no products (not_found) or failed (error). |
status | string | complete, partial (a key field such as price or image is missing; see missingFields), not_found or error. |
query | string | The search keyword this row belongs to. |
position | integer | 1-based position within the keyword: Naver order, or your chosen sort. |
productId | string | Naver product ID (nvMid). Catalog IDs open at search.shopping.naver.com/catalog/<id>. |
title | string | Product name without highlight tags. |
price | integer | Price shown on the listing in won, discount applied; for a catalog product, the headline price Naver shows (usually the lowest offer — see lowPrice). null if Naver shows none. |
originalPrice | integer | List price before discount; null when there is no discount information. |
discountRate | number | Discount percent shown by Naver; 0 when no discount; null when unknown. |
lowPrice | integer | Lowest price across offers (catalog products compare several sellers); equals price for single-seller listings. |
currency | string | Always KRW. |
listingType | string | catalog (Naver price-comparison product with several sellers) or single_seller. |
sellerCount | integer | Number of sellers for a catalog product; 1 for single-seller listings. |
mall | string | Store name for single-seller listings; null for catalog products (several sellers). |
brand | string | Brand when the product appears under one of Naver's brand filters for this keyword; null otherwise (not guessed). |
maker | string | Manufacturer when the product appears under one of Naver's manufacturer (제조사) filters for this keyword; null otherwise (not guessed). |
categoryId | string | Naver leaf category ID. |
categoryIds | array | Naver category path IDs, from top level to the most specific. |
reviewCount | integer | Number of reviews Naver shows on the search card (for catalog products: across sellers). |
rating | number | Average review score 0–5; null when there are no reviews or Naver shows no score for the listing (e.g. some Coupang listings). |
purchaseCount | integer | Recent purchases shown by Naver for single-seller listings; null for catalog products. |
wishlistCount | integer | Number of shoppers who saved the product (찜). |
deliveryFee | integer | Delivery fee in won; 0 = free; null when not shown. |
isAd | boolean | true for sponsored (paid) listings. |
isSmartStore | boolean | true when sold in a Naver Smart Store. |
isBrandStore | boolean | true when sold in an official Naver Brand Store. |
isOverseas | boolean | true for overseas (cross-border) listings. |
smartStoreProductId | string | Smart Store product number, when applicable. |
url | string | Product page URL (store page, or Naver catalog page for catalog products). |
mobileUrl | string | Mobile product page URL. |
image | string | Main product image URL. |
missingFields | array | Key fields that are empty on this partial row. |
message | string | query rows only: why the keyword has no products or failed. |
errorCode | string | query rows only: machine code such as BLOCKED, RATE_LIMITED, SOURCE_UNAVAILABLE; null for not_found. |
source | string | Data source: naver_shopping_mobile_search. |
sourceUrl | string | Naver search page for the keyword. |
fetchedAt | string | When the data was read (ISO 8601, UTC). |
Input settings (7)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Search keywords required | queries | array | ["무선 이어폰"] |
| Max products per keyword | maxItems | integer | 20 |
| Min price (KRW) | minPrice | integer | |
| Max price (KRW) | maxPrice | integer | |
| Sort | sort | string | "relevance" |
| Include sponsored listings | includeAds | boolean | true |
| Add brand names | addBrandNames | boolean | true |
Use cases with this tool
Each guide shows all the steps and the other tools.


