Skip to main content
Thirdwatchthirdwatch
Social & news

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.

Editorial illustration for social & news
Sep 21, 2026 · 2 min read · 470 words
View the Apify scraper →

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.

Related