# Naver Blog & Cafe Search Scraper (네이버 블로그·카페 검색) (`romantic_boysenberry/naver-blog-cafe-search-scraper`) Actor

Scrape Naver Blog and Naver Cafe search results (네이버 블로그 검색, 카페 검색) by keyword: post title, URL, blog or cafe name, date, snippet, thumbnail, optional full post text. Relevance or newest-first. No login, no API key, no browser. $2 per 1,000 posts.

- **URL**: https://apify.com/romantic_boysenberry/naver-blog-cafe-search-scraper.md
- **Developed by:** [정무 최](https://apify.com/romantic_boysenberry) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Naver Blog & Cafe Search Scraper (네이버 블로그·카페 검색)

**Naver Blog & Cafe Search Scraper** extracts search results from **Naver Blog (네이버 블로그)** and **Naver Cafe (네이버 카페)**, the two user-generated content platforms that shape what Koreans read before they buy, book or visit. Type a keyword such as `강남 카페`, `제주 흑돼지` or `아이폰 후기`, and get every matching post as clean JSON, CSV or Excel: title, post URL, blog or cafe name, date, snippet, thumbnail, and optionally the full blog post text.

No Naver login. No API key. No headless browser. Pay only for the posts you receive.

### What does Naver Blog & Cafe Search Scraper do?

Naver's official search API returns at most 1,000 blog results per query with no cafe search at all, and it requires a developer application. This Naver blog scraper reads the same server-rendered search tabs that the Naver website uses, so it works for any topic Koreans write about:

- Restaurant, cafe and travel reviews (맛집, 카페, 여행 후기)
- Product reviews and unboxings (제품 후기, 내돈내산)
- Beauty, skincare, dermatology and plastic surgery experiences (피부과, 성형 후기)
- Parenting, education and academy recommendations (육아, 학원)
- Real estate, finance, cars and second-hand trading threads on cafes (부동산, 중고나라)
- Local community discussions on neighbourhood "맘카페" and hobby cafes

One run can cover a whole campaign: pass 20 keywords, take 100 posts from the blog tab and 100 from the cafe tab for each, and you have 4,000 structured Korean posts in a few minutes. Turn on **Scrape full blog post text** and the Actor also opens every blog post and returns its complete body.

### Why use this Naver blog search scraper?

- **Both tabs in one run.** Naver Blog & Cafe Search Scraper covers the blog tab and the cafe tab. Most alternatives read only the unified search page, which shows a handful of mixed results.
- **Real pagination.** The Actor uses the same paginator endpoints as Naver's infinite scroll, so it keeps going past the first 30 results until it reaches your limit or the end of the ranking.
- **Relevance or newest first.** Choose Naver's own relevance ranking (정확도순) for research, or newest first (최신순) for monitoring.
- **Full post text on demand.** Blog post bodies are fetched from Naver's mobile post page, which is server-rendered and needs no browser.
- **Pure HTTP.** Fast, cheap on compute, and a single 512 MB run handles thousands of posts.
- **Pay per post.** $2.00 per 1,000 posts, billed only for results actually returned.
- **Ready for AI agents.** Every Apify Actor is also an API endpoint and an MCP server, so Claude, ChatGPT, LangChain or n8n workflows can call Naver Blog & Cafe Search Scraper directly.

### Output: what data can you extract from Naver Blog and Cafe search?

Each dataset item is one post:

| Field | Example | Description |
|---|---|---|
| `source` | `blog` | `blog` or `cafe` |
| `keyword` | `제주 흑돼지` | The search keyword that produced this post |
| `rank` | `1` | Position in Naver's result list for this keyword and source |
| `title` | `제주도 맛집 \| 캐치테이블, 테이블링 웨이팅 맛집 내돈내산 추천` | Post title, highlight markup removed |
| `url` | `https://blog.naver.com/2weekshyun/224436721920` | Canonical post URL (tracking parameters stripped) |
| `snippet` | `들어있더라구요 여기도 제주도에 오셨다면 꼭 추천드려요 #제주맛집 ...` | Search result excerpt |
| `channelName` | `쭈슐랭의 여행일기` | Blog name, or cafe name for cafe posts |
| `channelUrl` | `https://blog.naver.com/2weekshyun` | Blog or cafe home URL |
| `date` | `2026-10-10` | Post date as `YYYY-MM-DD`, derived from Naver's display string |
| `dateText` | `11분 전` | The date exactly as Naver shows it (`2026.07.13.` or relative such as `3일 전`) |
| `thumbnail` | `https://search.pstatic.net/common/?src=...` | First image of the post, `null` when the post has none |
| `content` | `제주도에 왠만한 맛집들은 원격대기와 예약을 하고가야 ...` | Full post text, only when `scrapePostContent` is on (blog posts only), otherwise `null` |
| `authorNickname` | `쭈슐랭` | Public blogger nickname from the post page, only with `scrapePostContent` |
| `publishedAt` | `2026. 9. 26. 10:00` | Exact publish time from the post page, only with `scrapePostContent` |

Example output (JSON):

```json
{
  "source": "cafe",
  "keyword": "제주 흑돼지",
  "rank": 10,
  "title": "냉장 제주흑돼지 구이살 250g 솔직 맛 후기",
  "url": "https://cafe.naver.com/cafemakecafebest/97545",
  "snippet": "ㅎㅎ 저도 제주도 여행 갔을 때 식당에서 먹었던 그 쫀득하고 육즙 터지는 흑돼지 맛이 계속 생각났거든요! 근데 집 근처 마트에서 사 먹으려니 너무 비싸서 엄두가 안 났는데...",
  "channelName": "꿀팁ㅣ창업 부업 알바 호텔추천후기 코인 주식주가 음식효능 꿈",
  "channelUrl": "https://cafe.naver.com/cafemakecafebest",
  "date": "2026-10-10",
  "dateText": "8시간 전",
  "thumbnail": "https://search.pstatic.net/common/?src=http%3A%2F%2Fcafefiles.naver.net%2FMjAyNjEwMDhfMjQ0%2F...%2Fimage.png%7C800x800&type=f192_192",
  "content": null,
  "authorNickname": null,
  "publishedAt": null
}
```

Download the dataset as JSON, CSV, Excel, XML or RSS from the Apify Console, or fetch it through the API.

### How to scrape Naver Blog and Naver Cafe search results

1. Open **Naver Blog & Cafe Search Scraper** in Apify Store and click **Try for free**.
2. Enter one or more **keywords** (`강남 카페`, `제주 흑돼지`, `에어프라이어 추천`).
3. Pick the **sources**: blog, cafe or both.
4. Set **Max posts per keyword and source** (default 50) and the **sort order**.
5. Optionally switch on **Scrape full blog post text**.
6. Click **Start**. Results appear in the **Output** tab within a minute or two.
7. Export, or schedule the run to repeat daily for keyword monitoring.

#### Which keywords work best?

Use the same Korean phrases a Naver user would type. Combine a topic and an intent word: `강남 카페 추천`, `아이폰 17 후기`, `분당 피부과 내돈내산`. English keywords return very few Korean posts.

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `keywords` | array | `["강남 카페"]` | Naver search queries. Each keyword yields up to `maxPostsPerKeyword` posts per source. |
| `sources` | array | `["blog", "cafe"]` | Which tabs to read: `blog`, `cafe` or both. |
| `maxPostsPerKeyword` | integer | `50` | Posts collected per keyword and per source (1 to 3000, 30 per result page). |
| `sort` | string | `sim` | `sim` for Naver relevance ranking (정확도순), `date` for newest first (최신순). |
| `scrapePostContent` | boolean | `false` | Open every blog post and return `content`, `authorNickname` and `publishedAt`. One extra request per blog post. Cafe posts are not opened. |
| `proxyConfiguration` | object | none | The blog and cafe search tabs answer Apify platform IPs directly, so the default is no proxy. If a run returns zero posts or a captcha error, switch to Apify residential proxy with country `KR`. |

Example input:

```json
{
  "keywords": ["강남 카페", "제주 흑돼지"],
  "sources": ["blog", "cafe"],
  "maxPostsPerKeyword": 100,
  "sort": "date",
  "scrapePostContent": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

### How much does it cost to scrape Naver blog posts?

Naver Blog & Cafe Search Scraper uses Apify's **pay-per-event** pricing: **$0.002 per post** ($2.00 per 1,000 posts). You are charged only for posts that land in your dataset. A run that returns nothing costs nothing beyond Apify platform usage. Full post text does not change the per-post price.

| Posts | Price |
|---|---|
| 1,000 | $2.00 |
| 10,000 | $20.00 |
| 100,000 | $200.00 |

Apify's free plan includes $5 of monthly usage, enough for about 2,000 posts to evaluate the Actor. Residential proxy traffic is billed by Apify separately at the platform rate; a page of 30 search results is a few hundred kilobytes, so proxy cost per post stays well under a cent.

### Use cases for Naver Blog and Cafe search data

- **Brand and keyword monitoring (키워드 모니터링):** Schedule a daily newest-first run for your brand, product or store name and push new posts to Slack, email or a Google Sheet.
- **Influencer and blogger discovery:** Find the blogs that rank for your category keywords, export `channelName` and `channelUrl`, and build an outreach list.
- **SEO and content research for Naver:** See which titles and snippets rank for a keyword on the blog tab, the most important organic channel in Korea.
- **Market and consumer research:** Collect thousands of authentic 내돈내산 (paid with my own money) reviews about a product category, then analyze sentiment and feature mentions.
- **Community and trend analysis:** Track what cafe members discuss about neighbourhoods, schools, apartments or used goods.
- **Korean NLP and LLM training data:** Long, informal Korean texts with titles, dates and topics, ready for fine-tuning or retrieval.
- **AI agents:** Let an agent answer "what are Korean bloggers saying about this cafe?" by calling the Actor through MCP.

### Use Naver Blog & Cafe Search Scraper from code

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("romantic_boysenberry/naver-blog-cafe-search-scraper").call(run_input={
    "keywords": ["강남 카페"],
    "sources": ["blog"],
    "maxPostsPerKeyword": 100,
    "scrapePostContent": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["date"], item["channelName"], item["title"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('romantic_boysenberry/naver-blog-cafe-search-scraper').call({
  keywords: ['제주 흑돼지'],
  sources: ['blog', 'cafe'],
  maxPostsPerKeyword: 50,
  sort: 'date',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'posts');
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/romantic_boysenberry~naver-blog-cafe-search-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["아이폰 후기"],"sources":["blog"],"maxPostsPerKeyword":30}'
```

The Actor also works as an **MCP server** for Claude Desktop, Cursor and other agents, and plugs into **n8n**, **Make**, **Zapier** and **LangChain** through the standard Apify integrations.

### Tips for best results

- Use `sort: "date"` for monitoring. Newest-first pages are strictly ordered, so the same keyword on a daily schedule gives you clean deltas when you deduplicate on `url`.
- Use `sort: "sim"` for research. Naver's relevance ranking is deterministic for a given query, but it ends after a few hundred posts and then repeats; the Actor stops automatically when a page adds nothing new.
- Keep `scrapePostContent` off while you tune keywords, then switch it on for the final run. It adds one request per blog post.
- Cafe posts are returned with title, snippet and cafe name only. Most cafes require membership to read the full thread, and the Actor does not log in.
- `dateText` is Naver's display string. For posts older than a few weeks it is an absolute date; for recent posts it is relative (`3일 전`), which the `date` field converts using Korean time.
- Start without a proxy; it is the cheapest option and works from the Apify platform. If Naver starts answering with a captcha, set the proxy to Apify residential with country `KR`.

### Limitations

- Only publicly visible search results and public blog posts are collected. Private, member-only or deleted posts are not available.
- Full text is extracted from posts written in Naver's current SmartEditor ONE. Very old posts written in legacy editors may return an empty `content`.
- Naver caps how deep a search can be paginated; expect up to roughly 1,000 posts per keyword and source, fewer for niche keywords.
- `authorNickname` and `publishedAt` require `scrapePostContent`, since the search tabs show only the blog or cafe name.
- Naver changes its markup occasionally. If a run suddenly returns zero posts, the Actor fails loudly instead of silently succeeding; check the run log and open an issue.

### Legal and ethical use

Naver Blog & Cafe Search Scraper collects only publicly visible search results, public post text and the public nickname or blog name shown on the page. It does not log in, does not bypass access controls and does not collect private contact details. Post text may be protected by copyright and personal data rules in your jurisdiction; use the data for analysis, research and monitoring in line with [Naver's terms](https://search.naver.com) and applicable law, including Korea's Personal Information Protection Act. You are responsible for how you use the output.

### FAQ

**Does Naver have an official blog search API?**
Yes, the Naver Developers search API returns blog results, but it is capped at 1,000 results per query, needs an approved application, and has no cafe search. This Actor reads the public search tabs instead, with cafe support and full post text.

**Can it scrape Naver Cafe post bodies?**
No. Most cafes require membership to read a thread, and the Actor never logs in. You get the title, snippet, cafe name, date and URL for cafe posts.

**What is the difference between `date` and `publishedAt`?**
`date` comes from the search result and is a calendar day. `publishedAt` comes from the post page, includes the time, and is only filled when `scrapePostContent` is on.

**Do I need a proxy?**
Usually not. The search tabs answer Apify platform IPs directly, and the Actor fails loudly with a captcha error instead of returning empty data. If that happens, switch the proxy setting to Apify residential with country `KR` and run again.

**How fresh is the data?**
Every run fetches live from Naver. Nothing is cached. Newest-first runs often include posts published minutes ago.

**Can I run it on a schedule?**
Yes. Use Apify Schedules to run hourly, daily or weekly, and connect a webhook or integration to receive new posts automatically.

**Is there a free trial?**
Apify's free plan gives you $5 of usage every month, so you can test Naver Blog & Cafe Search Scraper without a credit card.

### Related Naver and Korean data Actors

- [Naver Place Reviews Scraper](https://apify.com/romantic_boysenberry/naver-place-reviews-scraper) by the same developer, for visitor reviews of restaurants, cafes, clinics and hotels on Naver Map
- [Naver Blog & Cafe Scraper](https://apify.com/huggable_quote/naver-blog-cafe-scraper) for an alternative approach to blog posts and cafe threads
- [Naver Map Search Results Scraper](https://apify.com/delicious_zebu/naver-map-search-results-scraper) for place details without reviews
- [Coupang Scraper](https://apify.com/abotapi/coupang-scraper) for Korean e-commerce product data

***

### 네이버 블로그·카페 검색 수집기 (한국어 안내)

**네이버 블로그·카페 검색 수집기**는 네이버 블로그 탭과 카페 탭의 검색 결과를 키워드로 수집해 JSON, CSV, Excel로 내려받는 Apify 액터입니다.

- 로그인, API 키, 브라우저 설치 모두 불필요
- 게시물 1건당 $0.002 (1,000건에 $2), 받은 만큼만 과금
- 정확도순·최신순 선택, 키워드당 최대 3,000건까지 페이지네이션
- 출력 필드: 출처(블로그/카페), 키워드, 순위, 제목, URL, 요약, 블로그·카페명, 블로그·카페 URL, 작성일, 썸네일, (옵션) 본문 전문·작성자 닉네임·정확한 작성 시각
- `scrapePostContent` 옵션을 켜면 블로그 본문을 모바일 페이지에서 그대로 수집합니다. 카페 글은 회원 전용인 경우가 많아 본문을 열지 않습니다
- 활용: 브랜드·키워드 모니터링, 인플루언서 블로거 발굴, 네이버 SEO 리서치, 상품 후기 분석, 맘카페·커뮤니티 트렌드 분석, 한국어 NLP 데이터셋
- 공개된 검색 결과와 공개 게시물, 공개 닉네임·블로그명만 수집하며 개인정보는 수집하지 않습니다. 수집 데이터는 관련 법령과 네이버 약관을 지켜 사용하세요

사용법: 액터 페이지에서 **Try for free** → 검색어(예: `강남 카페`) 입력 → 블로그/카페 선택 → **Start** → Output 탭에서 다운로드. 예약 실행(Schedules)으로 매일 자동 수집도 가능합니다.

# Actor input Schema

## `keywords` (type: `array`):

Naver search queries, e.g. "강남 카페", "제주 여행", "아이폰 후기". Korean keywords return far more posts than English ones. Each keyword yields up to maxPostsPerKeyword posts per source.

## `sources` (type: `array`):

Which Naver search tabs to read: "blog" (네이버 블로그), "cafe" (네이버 카페) or both.

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

Upper bound of posts collected for each keyword from each source (30 per result page). Billing is per post pushed.

## `sort` (type: `string`):

"sim" = Naver relevance ranking (정확도순), "date" = newest first (최신순).

## `scrapePostContent` (type: `boolean`):

Also open every blog post and return its full text as `content`, plus `authorNickname` and exact `publishedAt`. One extra request per blog post; cafe posts are not opened (most cafes require membership to read).

## `proxyConfiguration` (type: `object`):

Optional. Naver's blog and cafe search tabs answer Apify platform IPs directly, so no proxy is the cheapest default. If a run returns 0 posts or a captcha error, switch to Apify residential proxy with country KR.

## Actor input object example

```json
{
  "keywords": [
    "강남 카페"
  ],
  "sources": [
    "blog",
    "cafe"
  ],
  "maxPostsPerKeyword": 50,
  "sort": "sim",
  "scrapePostContent": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `posts` (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 = {
    "keywords": [
        "강남 카페"
    ],
    "sources": [
        "blog",
        "cafe"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("romantic_boysenberry/naver-blog-cafe-search-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 = {
    "keywords": ["강남 카페"],
    "sources": [
        "blog",
        "cafe",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("romantic_boysenberry/naver-blog-cafe-search-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 '{
  "keywords": [
    "강남 카페"
  ],
  "sources": [
    "blog",
    "cafe"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call romantic_boysenberry/naver-blog-cafe-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,romantic_boysenberry/naver-blog-cafe-search-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/ImJgLmwNr4a0hWFNL/builds/drwjvQfEdBJH3iarj/openapi.json
