Research Korean Consumer Opinions on Naver Cafe
Export Naver Cafe and blog results as JSON — Korean consumers' unfiltered product opinions, ranked and dated, for voice-of-customer research.

TL;DR — The Naver Scraper exports Naver Cafe and blog results — Korea's real consumer voice — as JSON with community, date, and rank. Voice-of-customer research on Korean products isn't complete without it.
Why Naver Cafe is Korea's review layer
Korean consumers don't review on Amazon — they post in Naver cafes: multi-paragraph accounts of what worked, what broke, what they'd never buy again. For beauty, parenting, food, and electronics categories, cafe threads are the highest-signal consumer text in the market.
The job-to-be-done is access: brand and category queries in, ranked organic opinions out — tagged by community so you know which audience is speaking.
How does this compare to the alternatives?
| Western review mining | Korean market research firms | Thirdwatch actor | |
|---|---|---|---|
| Cost | Misses the platform | Project fees | Pay per result |
| Reliability | Wrong channel | Deep but slow | Direct corpus |
| Setup time | Zero | Briefing cycles | Minutes |
| Maintenance | N/A | Per study | Scheduled runs |
How to mine cafe opinions in 4 steps
How do I pull the opinion corpus?
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("thirdwatch/naver-scraper").call(
run_input={
"queries": ["갤럭시 버즈 후기", "갤럭시 버즈 단점"],
"searchType": "cafe",
"sort": "relevance",
"period": "3months",
"maxResultsPerQuery": 50,
"includeSponsored": False,
}
)
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())Pair the praise query (후기) with the complaint query (단점) — the second one is where honest talk lives.
How do I map the communities?
import pandas as pd
df = pd.DataFrame(rows)
print(df.groupby("publisher").size().sort_values(ascending=False).head(15))publisher is the cafe community — which mom-cafe or tech-cafe dominates your category is itself the finding.
How do I read the sentiment?
neg = df[df.query.str.contains("단점")]
pos = df[df.query.str.contains("후기")]
print(f"praise posts: {len(pos)}, complaint posts: {len(neg)}")Split corpora by query intent, then translate titles and open the top-ranked URLs for the substance.
How do I keep it rolling?
period: "month" on a monthly schedule refreshes the corpus — dedupe on url to see what opinion is new.
Sample output
{"query": "갤럭시 버즈 단점", "search_type": "cafe", "rank": 4,
"title": "버즈 프로 두 달 쓰고 느낀 솔직한 단점들",
"url": "https://cafe.naver.com/specup/8123456",
"publisher": "스펙업", "published_label": "1주 전",
"result_source": "cafe", "is_sponsored": false}Common pitfalls
Cafe quality varies — the publisher field lets you weight established communities over thin ones. Some threads sit behind cafe membership; the title surfaces but full text may need an account. Relative date labels need your run date for absolute chronology. The actor indexes the opinion layer; translation and coding of themes are your analysis step.
Related use cases
Frequently asked questions
Why Naver Cafe for consumer opinion?
Naver's cafes are Korea's dominant interest communities — parenting, beauty, tech, automotive. Members post detailed, unvarnished product opinions that don't exist on Western review sites.
How do I get cafe results specifically?
Set searchType to 'cafe'. Records return title, cafe post URL, community publisher, date label, and rank — the organic voice-of-customer surface.
Can I combine cafe, blog, and Q&A in one view?
searchType 'all' returns the integrated view tagged per surface — or run 'cafe', 'blog', 'kin' separately for cleaner per-channel corpora.
How do I get opinions, not ads?
Keep includeSponsored off — the is_sponsored flag marks paid placements so you can drop them from the corpus.