Build a Korean SEO Keyword Dataset From Naver
Export Naver result sets per keyword as JSON — which domains, publishers, and surfaces own each term — for a Korea-specific SEO strategy.

TL;DR — The Naver Scraper exports per-keyword SERPs — domain, publisher, surface, rank — as JSON. Korean SEO runs on Naver's blog/cafe/news blend, and this dataset shows which surface actually owns each term.
Why Korean SEO is a different game
Naver's results page isn't ten blue links — it's a blend of blogs, cafes, news, Knowledge-iN, video, and web results. Ranking "on Naver" often means winning a cafe thread or a blog placement, not a domain. Keyword research built on Google data misses the platform where Koreans actually search.
The job-to-be-done: for each target keyword, which surface owns the visible slots, and who publishes them.
How does this compare to the alternatives?
| Google keyword tools | Korean SEO agencies | Thirdwatch actor | |
|---|---|---|---|
| Cost | Wrong platform | Retainers | Pay per result |
| Reliability | Misses SERP blend | Good, slow | Direct SERP data |
| Setup time | Zero | Onboarding | Minutes |
| Maintenance | N/A | Per report | Scheduled runs |
How to build the dataset in 4 steps
How do I pull the keyword SERPs?
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
keywords = ["무선 이어폰 추천", "캠핑용품 리스트", "피부관리 루틴"]
run = client.actor("thirdwatch/naver-scraper").call(
run_input={
"queries": keywords,
"searchType": "all",
"sort": "relevance",
"maxResultsPerQuery": 30,
"includeSponsored": False,
}
)
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())How do I profile surface ownership per keyword?
import pandas as pd
df = pd.DataFrame(rows)
surface_mix = df.groupby(["query", "result_source"]).size().unstack(fill_value=0)
print(surface_mix)A keyword dominated by cafe results wants community content; one dominated by web results wants a real landing page.
How do I find the winning publishers?
print(df[df["rank"] <= 5].groupby(["query", "publisher"]).size())Top-5 publishers per keyword are your content-competition set — or your influencer outreach list.
How do I track movement?
Store runs monthly keyed by (query, url); rank deltas show which publishers are climbing on your terms.
Sample output
{"query": "무선 이어폰 추천", "search_type": "blog", "rank": 1,
"title": "2026 무선 이어폰 추천 TOP 7",
"url": "https://blog.naver.com/audiophile/224477889",
"publisher": "리뷰하는 사람", "published_label": "3일 전",
"result_source": "blog", "is_sponsored": false}Common pitfalls
Naver rankings favor platform-native content — its own blogs and cafes outrank external sites structurally, which the data will show plainly. Freshness weighs heavily — sort by relevance AND check recent separately to see both pictures. Sponsored slots interleave; is_sponsored keeps them out of the organic analysis. The actor maps the SERP; content creation in Korean is the follow-through.
Related use cases
Frequently asked questions
Why can't I use Google SEO data for Korea?
Naver's SERP mixes surfaces differently — blogs, cafes, and Knowledge-iN compete with web results. Korean SEO strategy needs Naver result data: which surface and which publisher owns each term.
What does the actor return per keyword?
Ranked records with title, URL, publisher, date label, surface tag, and rank — enough to map who owns a term and through which content type.
Can I see which surface dominates a keyword?
Yes — searchType 'all' returns the blended SERP with result_source tags. If cafes own page one, blog-and-cafe content is your channel, not a landing page.
How do I track ranking changes?
Rerun the keyword set on a schedule and diff rank positions per URL — Naver's rankings shift with content freshness, so freshness is the lever.