# Naver Blog & Cafe Scraper - No API Key ($1.50/1K) (`webdata_labs/naver-blog-cafe-scraper`) Actor

\[$1.50 / 1K posts - no start fee - no API key] Scrape Naver Blog and Naver Cafe posts by keyword, date range or URL: full text, images, tags, likes, views and comments. Goes past the 1,000-result cap of the official Naver Search API.

- **URL**: https://apify.com/webdata\_labs/naver-blog-cafe-scraper.md
- **Developed by:** [WebData Labs](https://apify.com/webdata_labs) (community)
- **Categories:** Social media, Marketing, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 post scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Naver Blog & Cafe Scraper

**Every Naver Blog and Naver Cafe post about your keyword, with the full text, images, likes, views and comments - no API key, no daily quota and no 1,000-result ceiling.**

Naver Blog and Naver Cafe are where Koreans actually write about products, restaurants, travel, parenting and brands - it is the review layer that Google does not see. The usual way in is the official Naver Search API, and it has three problems for research work: you need a developer key, you get 25,000 calls a day, and one keyword never returns more than 1,000 results. This Actor reads the same public pages a browser does, splits a date range into single days so each day gets its own 1,000, and opens every post for its full text instead of a two-line snippet. Point it at a keyword, a whole blog or a whole cafe, and get one clean row per post.

### ✅ What you get / ❌ what this isn't

| ✅ What you get | ❌ What this isn't |
|---|---|
| **More than 1,000 posts per keyword** - a date range is searched one day at a time | Not capped at the 1,000 results the official Naver Search API returns per keyword |
| The **full post text**, every image URL and the author's tags | Not the 2-line search snippet the official API gives you |
| `commentCount` on every row, plus `likeCount` on blog posts and `viewCount` on cafe posts | Not a list of links you have to open yourself to see engagement |
| Comments (author, text, date, reply flag) over plain HTTP | Not a 2 GB headless-browser mode just to read comments |
| Naver Blog and Naver Cafe in **one identical row shape** | Not two different schemas you have to merge |
| Members-only cafe posts that Naver search links to, read through the search link's own access token | Not a login - private cafes and posts that search does not surface are out of reach |
| No API key, no Naver developer account, no quota to manage | Not a wrapper that stops when a shared key runs out for the day |

### 🔎 Why use this Actor

- **Day-by-day date windows.** Naver answers every search with at most 1,000 posts. With `dateFrom` / `dateTo` set, each day in the range is its own search, so a busy keyword over a week returns thousands of posts, not the first 1,000. Measured on `캠핑` (camping) for 1-3 September 2026: 2,500 unique posts, every one inside the range, where a single search stops at 1,000.
- **Full text, not snippets.** Each post is opened and its body is flattened into readable `text` with paragraph breaks kept, plus `images` and `tags`. That is what sentiment analysis, topic modelling and LLM summarisation need.
- **Engagement on every row.** Blog rows carry the like count and comment count; cafe rows carry views and comment count too. Sort by them to find the posts that actually got read.
- **Comments without a browser.** `includeComments` reads each post's comment thread from the same JSON endpoints Naver's own pages use, so it stays fast and cheap.
- **Search-link access tokens.** Naver's cafe search attaches a token to each result link that opens the post for a visitor. The Actor passes it along, which recovers members-only posts that search itself shows to the public.
- **Whole blogs and whole cafes.** Paste `blog.naver.com/<id>` for a blogger's latest posts with like and comment counts, or `cafe.naver.com/<cafe>` for a community's latest public articles.
- **Pay per post delivered.** No start fee, and members-only articles that cannot be read are skipped and never charged.

### 👥 Who it's for

Brand, marketing and research teams who need what Korean consumers are saying, and developers feeding Korean text into models.

- Monitor every blog and cafe mention of your brand or product, day by day.
- Collect Korean product reviews at volume for sentiment or aspect analysis.
- Find the bloggers who write about your category, ranked by likes and comments, for influencer outreach.
- Track what a parenting, real-estate or hobby cafe is discussing this week.
- Build a Korean-language text corpus for LLM fine-tuning or RAG.

### Example tasks

Each one is a ready-made configuration you can open, adjust and run.

- [Scrape Naver Blog camping gear reviews](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-blog-camping-gear-reviews)
- [Scrape Naver Blog restaurant posts in Seoul](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-blog-seoul-restaurant-reviews)
- [Monitor Korean cosmetics reviews on Naver](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-cosmetics-review-monitoring)
- [Track brand mentions on Naver Blog and Cafe](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-brand-mention-monitoring)
- [Scrape Naver Cafe parenting community posts](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-cafe-parenting-community-posts)
- [Scrape Naver Cafe real estate discussions](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-cafe-real-estate-discussions)
- [Collect iPhone buyer reviews from Naver](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-iphone-buyer-reviews)
- [Scrape all posts of one Naver blogger](https://apify.com/webdata_labs/naver-blog-cafe-scraper/examples/naver-blogger-all-posts)

### ⚙️ How to scrape Naver Blog and Cafe posts

1. Put one or more keywords in **Search keywords**. Korean keywords return far more posts, for example `캠핑용품 후기` rather than `camping gear review`.
2. Choose **Where to search**: Naver Blog, Naver Cafe, or both.
3. Set **From date** and **To date** for the period you care about. Every day in between is searched separately.
4. Set **Max posts per keyword or URL**. Leave **Full post text and images** on, and turn on **Include comments** if you need them.
5. Click **Start**, then open the **Posts** or **Engagement** view on the Output tab and export to CSV, Excel or JSON.

#### Get yesterday's posts every morning

Save your input as a Task with **From date** and **To date** left empty and **Sort by** set to *Newest first*, then schedule it daily. Without a date range the Actor walks back from today one day at a time and stops at your post limit, so a daily run always starts with the newest posts.

### 📥 Input

```json
{
  "searchKeywords": ["캠핑용품 후기"],
  "source": "both",
  "sortBy": "date",
  "dateFrom": "2026-09-01",
  "dateTo": "2026-09-07",
  "maxPostsPerKeyword": 500,
  "includeContent": true,
  "includeComments": true,
  "maxCommentsPerPost": 50
}
```

- `searchKeywords` - keywords to search, one per line. Korean works best.
- `source` - `blog`, `cafe` or `both`. With `both`, the post limit applies to each source separately. Default `blog`.
- `sortBy` - `date` (newest first, default) or `relevance` (Naver's own ranking).
- `dateFrom` / `dateTo` - optional range in Korean time, `YYYY-MM-DD`. Each day is its own search, which is how a keyword goes past 1,000 posts. Only `dateFrom` means "up to today".
- `maxPostsPerKeyword` - stop after this many posts per keyword and source, or per blog or cafe URL. `0` means no limit. Default 50.
- `startUrls` - blog posts, whole blogs, cafe articles or whole cafes. Mobile `m.` links work too.
- `includeContent` - open each post for full text, images, tags and likes. Default on. Off gives a faster list of titles and snippets.
- `includeComments` - collect comments for each post. Default off.
- `maxCommentsPerPost` - cap per post, `0` for all. Default 50.

### 📤 Output

| source | title | publishedAt | authorName | likeCount | commentCount | viewCount |
|---|---|---|---|---|---|---|
| blog | "다시는 안 간다"던 나주곰탕 노안집, 결국 또 가봤습니다 | 2026-09-11T16:27:05+09:00 | 리뷰하는 남자 | 44 | 8 | |
| cafe | 횽님들 캠핑 에어컨 어떤거 쓰시나요? | 2026-07-27T16:05:32+09:00 | 서울II은채아빠 | | 52 | 1320 |
| cafe | 멀고 멀었던 광양 배알도 야영장 후기 (부자캠핑) | 2026-07-12T18:34:34+09:00 | 준영왕자 | | 46 | 2294 |

Every row also carries `url` and `postId`, the full `text` and a `snippet`, `images` (every image URL in the post), `tags`, `authorId`, `blogName` or `cafeName` with `cafeUrl` and `cafeMemberCount`, `boardName` (the cafe board or blog category), `comments` as an array of `{author, text, publishedAt, isReply, likeCount}` when requested, the `keyword` that found the post, and `scrapedAt`. All dates are ISO timestamps in Korean time (`+09:00`).

### 💵 How much does it cost?

$1.50 per 1,000 posts delivered, and no start fee. Comments are an extra $0.50 per 1,000 posts that have comments, charged only when you turn them on - posts with no comments are not charged for them. A week of blog posts for one busy keyword at 2,000 posts costs $3, or at most $4 with comments. Members-only cafe articles that cannot be read are skipped and cost nothing.

### 🔁 Run it on the Apify platform

Schedule it daily or weekly, call it from the Apify API or any of the official clients, export to CSV, JSON, Excel or XML, and connect the output to Make, Zapier, n8n, Google Sheets, a webhook or your own database.

### ⚠️ Limits and caveats

- **1,000 posts per day per keyword on Naver Blog.** That is Naver's ceiling for one search, and a single day is the smallest window it offers. A keyword that gets more than 1,000 blog posts a day will be sampled, not complete, on its busiest days.
- **Naver Cafe search is shallower.** It returns roughly 100 posts per day per keyword (measured on `캠핑`: 85 to 108 per day). Use several narrower keywords, or paste the cafe's own URL, when you need a community's full history.
- **Private cafes stay private.** Members-only articles that Naver search links to are read through the search link's token; articles only members can find are skipped and reported in the run summary as `skippedMembersOnly`. A whole-cafe crawl can only return that cafe's public articles.
- **View counts exist for cafe posts only.** Naver does not publish a view count for blog posts found by search, so `viewCount` is empty on those rows. Whole-blog crawls fill it only for bloggers who make view counts public.
- **Cafe posts carry no like count** in the article data Naver serves; `likeCount` is filled for blog posts and for whole-cafe crawls.
- **Some posts are genuinely short.** Photo posts and one-line cafe posts have little text; that is the post, not a parsing gap.
- **Dates are Korean time.** A "day" window runs from 00:00 to 23:59 KST.

### 🧩 Related Actors

- [Naver Map Scraper](https://apify.com/webdata_labs/naver-map-scraper) - Korean local businesses with website, Instagram and Naver blog links, phone and ratings.
- [Lead List Cleaner](https://apify.com/webdata_labs/lead-list-deduplicator) - merge several runs into one deduplicated list.

### 🤖 Use with AI agents via MCP

The Actor is exposed over Apify's MCP server, so an agent can call it as a tool.

```bash
claude mcp add apify --transport http https://mcp.apify.com --header "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Then ask in words: *"get last week's Naver Blog posts reviewing the Galaxy S26, with comments"*. Every option is a plain structured field, so the agent fills the input itself.

### ⚖️ Is it legal to scrape Naver Blog and Cafe?

The Actor reads only what Naver serves to any visitor without logging in: public blog posts, cafe articles that search exposes, and their public comments. It signs into nothing and bypasses no paywall. Posts and comments are written by individuals, so how you store and use them is your responsibility - Korea's PIPA and the GDPR both apply to personal data, and quoting or republishing content raises copyright questions. For research and analysis, aggregate rather than republish. Nothing here is legal advice.

### ❓ FAQ

#### Do I need a Naver API key?

No. There is no key, no developer account and no daily quota.

#### How do I get more than 1,000 posts for one keyword?

Set a date range. Each day in it is searched separately and each day can return up to 1,000 blog posts. Leaving the dates empty with **Newest first** also walks back day by day until your post limit.

#### Am I charged for posts I cannot read?

No. Members-only cafe articles that fail to open are skipped before anything is pushed, so they are never billed. The run summary counts them.

#### Are comments charged per comment?

No. It is one small charge per post whose comments were collected, however many comments it has.

#### Can it scrape a specific blogger or cafe?

Yes. Paste `blog.naver.com/<id>` or `cafe.naver.com/<cafe>` in **Naver Blog / Cafe URLs** and it returns their latest posts, up to your limit.

#### Should I search in Korean?

Yes. English keywords work but return a small fraction, because the posts are written in Korean.

### 🛠️ Support

Open an issue on the Actor's Issues tab with the run URL, the input you used and what you expected. That is the fastest route to a fix.

### ⭐ Rate this Actor

If this saved you time, please leave a rating on the Reviews tab. Review count is the main trust signal buyers use on the Store, and reviews are also how we decide what to build next. If something is broken or a field is missing, please open an issue first so it can be fixed - that is more useful to everyone than a low rating with no detail.

# Actor input Schema

## `searchKeywords` (type: `array`):

Keywords to search, one per line. Korean keywords return far more posts, because that is what Korean bloggers write - for example "캠핑", "서울 맛집", "아이폰 후기" or a brand name. If you leave both this and the URLs empty, the Actor searches the example keyword "캠핑" (camping).

## `source` (type: `string`):

Naver Blog, Naver Cafe (community forums), or both. With both, the post limit applies to each source separately.

## `sortBy` (type: `string`):

Newest posts first, or Naver's relevance ranking. Date sorting walks back day by day, which is how this Actor returns more than the 1,000 posts Naver shows for a single search.

## `dateFrom` (type: `string`):

Only posts published on or after this day (Korean time), format YYYY-MM-DD. Each day in the range is searched separately, so a range can return far more than 1,000 posts per keyword.

## `dateTo` (type: `string`):

Only posts published on or before this day (Korean time), format YYYY-MM-DD. Defaults to today when only From date is set.

## `maxPostsPerKeyword` (type: `integer`):

Stop after this many posts for each keyword (and each source), or for each blog or cafe URL. Set 0 for no limit. The default keeps a first run cheap.

## `startUrls` (type: `array`):

Paste any of: a blog post (blog.naver.com/<id>/<number>), a whole blog (blog.naver.com/<id>, returns its latest posts), a cafe article (cafe.naver.com/<cafe>/<number>), or a whole cafe (cafe.naver.com/<cafe>, returns its latest public articles). Mobile m. links work too.

## `includeContent` (type: `boolean`):

Open every post for its full text, all images, tags, like count and view count. Turn off for a faster list with titles and search snippets only.

## `includeComments` (type: `boolean`):

Also collect each post's comments (author, text, date, whether it is a reply). Charged as a small extra event per post that has comments.

## `maxCommentsPerPost` (type: `integer`):

Upper limit of comments collected for one post. Set 0 for all of them.

## Actor input object example

```json
{
  "searchKeywords": [
    "캠핑"
  ],
  "source": "blog",
  "sortBy": "date",
  "maxPostsPerKeyword": 50,
  "includeContent": true,
  "includeComments": false,
  "maxCommentsPerPost": 50
}
```

# Actor output Schema

## `posts` (type: `string`):

No description

## `engagement` (type: `string`):

No description

## `content` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchKeywords": [
        "캠핑"
    ],
    "maxPostsPerKeyword": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdata_labs/naver-blog-cafe-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchKeywords": ["캠핑"],
    "maxPostsPerKeyword": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("webdata_labs/naver-blog-cafe-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchKeywords": [
    "캠핑"
  ],
  "maxPostsPerKeyword": 50
}' |
apify call webdata_labs/naver-blog-cafe-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,webdata_labs/naver-blog-cafe-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KwliZ0BZqAueXhqET/builds/xwQBri7gj7Aje6Ii2/openapi.json
