Naver ShoppingAnswer

Naver Shopping API: the official one and ours

Naver's Search API returns 100 products per call with a key; ours returns the 66 to 96 on its search page with ratings and ad flags, at 1 credit.

4 min read

Short answer

  • Naver's Search API has a shopping endpoint that returns up to 100 products a call with prices and categories but no documented ratings or ad flags.
  • Ours returns the products on Naver's search page, 66 to 96 for each of 7 shopping keywords, with ratings, delivery and a sponsored flag, but no paging or detail pages.
  • ToolzerHub's /v1/naver/shopping/search takes a keyword and costs 1 credit a call.
On this page

Yes: Naver has an official shopping API, and it needs a registered application. It returns up to 100 products a call, with prices and categories but no documented ratings or review counts. Our Naver Shopping API returns what Naver's search page shows for a keyword, including ratings, reviews, delivery and which products are ads: 66 to 96 products for each of 7 shopping keywords.

Naver's Search API has a shopping endpoint at openapi.naver.com/v1/search/shop.json. You register an application and send its client ID and secret as headers; the Search API allows 25,000 calls a day.

display goes up to 100, start up to 1,000, and sort takes relevance, date or price. Each item has a title, link, image, lowest and highest price, mall name, brand, maker and category levels, and no rating, review count, delivery fee or ad marker. We did not call it.

We make ToolzerHub. Our Naver Shopping API has one route: GET /v1/naver/shopping/search?query=<keyword> with the x-api-key header, at 1 credit a call. It returns one page per keyword and has no page parameter.

bash
export TOOLZERHUB_API_KEY=your_key
curl -G -H "x-api-key: $TOOLZERHUB_API_KEY" \
  --data-urlencode "query=노트북" \
  "https://api.toolzerhub.com/v1/naver/shopping/search"

The response has count, organic_count, sponsored_count and results. The first result, trimmed:

json
{
  "id": "90655441804",
  "title": "베이직스 노트북 MS office 16 Pro 사무용 업무용 가벼운 영상편집 게이밍 고성능",
  "type": "product",
  "sponsored": false,
  "seller": { "name": "베이직스 스토어", "badge": "공식" },
  "price": 1128000,
  "original_price": 1455120,
  "discount_percent": 22,
  "rating": 4.82,
  "review_count": 438,
  "purchase_count": 316,
  "delivery": { "fee": 0, "is_free": true, "fast_type": "ARRIVAL_GUARANTEE" }
}

Ads carry "sponsored": true. A type of catalog is a price-comparison entry: it has no seller, an offer_count and options with the lowest price for each.

The script runs one call per keyword and writes one row per product, ads included and flagged. Save it as naver_shopping.py, install requests, and run python naver_shopping.py 노트북 운동화.

python
import csv
import os
import sys

import requests

API = "https://api.toolzerhub.com/v1/naver/shopping/search"
HEADERS = {"x-api-key": os.environ["TOOLZERHUB_API_KEY"]}
FIELDS = ["keyword", "id", "title", "type", "sponsored", "seller", "price",
          "original_price", "rating", "review_count", "purchase_count", "url"]


def search(keyword):
    response = requests.get(API, headers=HEADERS, params={"query": keyword}, timeout=60)
    response.raise_for_status()
    return response.json()["data"]["results"]


def main():
    keywords = sys.argv[1:]
    with open("naver_products.csv", "w", newline="", encoding="utf-8") as out:
        writer = csv.DictWriter(out, fieldnames=FIELDS)
        writer.writeheader()
        count = 0
        for keyword in keywords:
            for item in search(keyword):
                writer.writerow({
                    "keyword": keyword,
                    "id": item["id"],
                    "title": item["title"],
                    "type": item["type"],
                    "sponsored": item["sponsored"],
                    "seller": (item["seller"] or {}).get("name"),
                    "price": item["price"],
                    "original_price": item["original_price"],
                    "rating": item["rating"],
                    "review_count": item["review_count"],
                    "purchase_count": item["purchase_count"],
                    "url": item["url"],
                })
                count += 1
    print(f"saved {count} products for {len(keywords)} keywords to naver_products.csv")


if __name__ == "__main__":
    main()

What one call returned

Seven of the 10 keywords we searched had shopping results, one call each:

Keyword Products Ads Catalog entries With rating
노트북 92 40 32 59
운동화 96 36 32 84
아이폰 케이스 66 26 5 65
무선 이어폰 90 45 27 69
에어프라이어 70 30 35 57
비타민 69 29 33 67
캠핑 의자 70 30 32 64

Those 553 products included 236 ads, 43% of the total. 315 of the 317 non-ad products (99%) had a rating, against 150 of the 236 ads (64%). purchase_count came back on 200 products, and on none of the 196 catalog entries.

The two gift keywords, 한우 선물세트 and 선물세트, returned 14 products each, 2 of them ads. Those products have no product link and fewer fields. 서울 날씨, a keyword with no shopping intent, returned empty results.

Product detail pages are not available, so there is no description, option list or seller page beyond what the search page shows. There is no paging, so a keyword gives you the one page, the largest being 96 products here; the official API goes to position 1,000.

What it costs

A keyword is 1 credit, so the 7 shopping keywords above took 7 credits. The 100 free credits a month cover 100 keywords; $19 buys 10,000 credits that never expire, and plans for higher volume cover more.

For other shopping data, see Ozon prices to CSV and TikTok Shop product data.

We are not affiliated with Naver.

Get this data from your own code

The Naver Shopping API returns it as JSON with one x-api-key header. 100 free credits monthly.