# NAVER Blog & Cafe Scraper (`parsebird/naver-blog-cafe-scraper`) Actor

Scrape Naver Blog and Naver Cafe posts by keyword or direct URL: full content, images, tags, category, likes, comments, and place info. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/naver-blog-cafe-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Travel, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.30 / 1,000 posts

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/platform/actors/running/actors-in-store#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

Naver Blog & Cafe Scraper extracts public posts from [Naver Blog](https://blog.naver.com/) and [Naver Cafe](https://cafe.naver.com/) (네이버 블로그 · 네이버 카페), Korea's largest blogging and community platforms. Search by keyword or scrape direct post URLs, and get structured post text, images, hashtags, category, likes, comments, and place info.

<table><tr>
<td style="border-left:4px solid #03C75A;padding:12px 16px;font-weight:600">
Search Naver Blog and Naver Cafe by keyword or scrape specific post URLs directly, and pull full text, images, hashtags, category, like counts, comment data, and linked place info in one structured dataset.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/naver-blog-cafe-scraper to scrape public Naver Blog and Naver Cafe (네이버 블로그, 네이버 카페) posts. Example with ApifyClient: client.actor("parsebird/naver-blog-cafe-scraper").call(run_input={"searchKeywords":["강남 맛집"],"searchType":"both","maxResults":30,"scrapeContent":True,"scrapeComments":True}), then read client.dataset(run["defaultDatasetId"]).iterate_items(). Key inputs: searchKeywords array of search terms, directUrls array of specific Naver Blog or Naver Cafe post URLs (skips search), searchType enum blog/cafe/both default both, maxResults integer per keyword per search target default 30 (up to 1000), sortBy enum sim (relevance) / date (newest first) default sim, scrapeContent boolean default true (full text, images, tags, category, likes, place info), scrapeComments boolean default true, maxConcurrency integer default 5, proxyConfiguration object. Output fields include type (blog/cafe), title, url, author, date, content, contentHtml, images, tags, category, likeCount, commentCount, comments, places, externalLinks, hasVideo, cafeName, cafeUrl, searchKeyword, scrapedAt. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

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

**Naver Blog & Cafe Scraper** collects public post data from [Naver Blog](https://blog.naver.com/) and [Naver Cafe](https://cafe.naver.com/), the two platforms Korean users rely on most for long-form reviews, recommendations, and community discussion. Use it to monitor brand mentions, build content datasets, track influencer or "체험단" (sponsored review) posts, or feed Korean-language text into NLP and LLM pipelines.

- 🔍 Search by Korean or English keyword (e.g. `강남 맛집` or `Seoul cafe`), targeting **blog**, **cafe**, or **both** at once.
- 🔗 Or scrape specific **direct post URLs**, skipping search entirely.
- 📝 Extract full post text, raw HTML content, and every image URL from blog and public cafe posts.
- 🏷️ Capture blog hashtags and category, and cafe board category.
- ❤️ Collect blog "공감" (like) counts.
- 💬 Collect comment data (author, content, date, reply flag) for cafe posts, and best-effort comment data for blog posts.
- 📍 Extract embedded place info (name, address, phone, coordinates) when a post links a Naver Map location.
- 🎥 Flag posts that contain video, and extract external link previews.
- ⚡ Scrape posts concurrently, with adjustable concurrency and proxy support for reliable access at scale.
- 📤 Send results to [Apify integrations](https://apify.com/integrations), the [Apify API](https://docs.apify.com/api/v2), webhooks, databases, or spreadsheets, and download JSON, CSV, or Excel.

### What data can you extract from Naver Blog and Naver Cafe?

| Field | Description |
|-------|-------------|
| `title` | Post title |
| `content` / `contentHtml` | Full plain text and raw HTML of the post |
| `images` | All image URLs in the post |
| `tags` | Blog hashtags (blog posts only) |
| `category` | Blog category or cafe board name |
| `likeCount` | Blog "공감" (like) count |
| `commentCount` | Total comment count reported by Naver |
| `comments` | Comment author, content, date, and reply flag |
| `places` | Linked Naver Map place: name, address, phone, latitude, longitude |
| `externalLinks` | External link previews embedded in the post |
| `hasVideo` | Whether the post contains video |
| `cafeName` / `cafeUrl` | Cafe name and URL (cafe posts only) |

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

1. Open [Naver Blog & Cafe Scraper](https://apify.com/parsebird/naver-blog-cafe-scraper) on Apify.
2. Add one or more **search keywords** to `searchKeywords`, such as `강남 맛집` or `Seoul cafe`.
3. Or leave `searchKeywords` empty and add specific post URLs to `directUrls` to skip search entirely.
4. Set `searchType` to `blog`, `cafe`, or `both`, and choose `sortBy` (`sim` for relevance, `date` for newest first).
5. Set `maxResults` per keyword per search target. Keep it low for a fast, cheap test run.
6. Toggle `scrapeContent` and `scrapeComments` depending on how much detail you need.
7. Enable a proxy in `proxyConfiguration` for large or repeated runs to avoid Naver rate limiting.
8. Run the actor, open the dataset, and export results as JSON, CSV, or Excel, or connect them through the Apify API.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchKeywords` | array | No | Prefilled with 1 keyword | Search terms, Korean or English |
| `directUrls` | array | No | `[]` | Specific Naver Blog or Naver Cafe post URLs to scrape directly, skipping search |
| `searchType` | string | No | `both` | `blog`, `cafe`, or `both` |
| `maxResults` | integer | No | `30` | Max search results per keyword, per search target (1–1,000) |
| `sortBy` | string | No | `sim` | `sim` (relevance) or `date` (newest first) |
| `scrapeContent` | boolean | No | `true` | Fetch full text, images, tags, category, likes, and place info |
| `scrapeComments` | boolean | No | `true` | Collect comment data where available |
| `maxConcurrency` | integer | No | `5` | Posts to scrape in parallel (1–10) |
| `proxyConfiguration` | object | No | Apify proxy | Proxy settings; recommended for large runs |

### Output example

Blog post:

```json
{
  "type": "blog",
  "title": "보슬보슬 역삼동 점심맛집 강남역 점심맛집",
  "url": "https://blog.naver.com/yazeyazasu/224363158720",
  "author": "뷰티한세경",
  "date": "2026. 7. 30. 20:46",
  "content": "오늘은 친구랑 역삼동 점심맛집으로 유명한 보슬보슬 다녀왔어요...",
  "images": ["https://mblogthumb-phinf.pstatic.net/..."],
  "tags": ["역삼동점심맛집", "강남역점심맛집", "역삼동맛집"],
  "category": "요리·레시피",
  "likeCount": 242,
  "commentCount": 32,
  "comments": [],
  "places": [
    {
      "name": "보슬보슬 역삼본점",
      "address": "서울특별시 강남구 논현로85길 59 남곡빌딩 1층",
      "phone": "02-6014-1245",
      "latitude": 37.4977095,
      "longitude": 127.0332676
    }
  ],
  "hasVideo": true,
  "searchKeyword": "강남 맛집",
  "scrapedAt": "2026-08-10T23:35:47.112393Z"
}
```

Cafe post:

```json
{
  "type": "cafe",
  "title": "베스트 강남역 맛집 추천",
  "url": "https://cafe.naver.com/ungsangjang/864467",
  "author": "맛집감별사2",
  "date": "2026-08-08T08:38:43.820000Z",
  "content": "친구 하나가 강남에 게장 진짜 잘하는 집이 있다며...",
  "category": "🌈시끌벅적 수다방",
  "commentCount": 10,
  "comments": [
    {
      "author": "삼둥이엄마",
      "content": "꽃게에 살이 꽉찬 게 밥이랑 먹으면 진짜 밥도둑 이겠네요",
      "date": "2026-08-08T08:47:01Z",
      "isReply": false
    }
  ],
  "places": [
    {
      "name": "더오다리집 강남",
      "address": "서울특별시 강남구 봉은사로30길 74 1층",
      "phone": "02-556-6769",
      "latitude": 37.5027868,
      "longitude": 127.0368531
    }
  ],
  "cafeName": "부산 경남 맘스홀릭",
  "cafeUrl": "https://cafe.naver.com/ungsangjang",
  "searchKeyword": null,
  "scrapedAt": "2026-08-10T23:36:46.557699Z"
}
```

Download results in JSON, CSV, Excel, HTML, or XML directly from the [Apify dataset](https://docs.apify.com/platform/storage/dataset), or read them through the API.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("parsebird/naver-blog-cafe-scraper").call(run_input={
    "searchKeywords": ["강남 맛집"],
    "searchType": "both",
    "maxResults": 30,
    "scrapeContent": True,
    "scrapeComments": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["type"], item["title"])
```

See the official [Apify Python client documentation](https://docs.apify.com/api/client/python/) for authentication and dataset options.

### JavaScript API example

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('parsebird/naver-blog-cafe-scraper').call({
  directUrls: ['https://blog.naver.com/yazeyazasu/224363158720'],
  scrapeContent: true,
  scrapeComments: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

See the official [Apify JavaScript client documentation](https://docs.apify.com/api/client/js/) for more examples.

### How much does it cost to scrape Naver Blog and Naver Cafe?

**What is the price per Naver Blog or Cafe post?**

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `post-scraped` | $0.0039 (**$3.90 / 1,000**) | $0.0037 (**$3.70 / 1,000**) | $0.0035 (**$3.50 / 1,000**) | $0.0033 (**$3.30 / 1,000**) |

Each `post-scraped` event means one blog or cafe post was pushed to the dataset. Scraping 100 posts costs about $0.33–$0.39 depending on your plan. Apify's free trial credits cover small test runs.

### Use cases

- Monitor brand or product mentions across Naver Blog and Naver Cafe communities.
- Track sponsored review ("체험단") posts and their engagement (likes, comments).
- Build content or sourcing datasets for Korean restaurants, businesses, and locations using the extracted `places` field.
- Feed Korean blog and cafe text into NLP or LLM pipelines for sentiment analysis or summarization.
- Archive or back up specific blog/cafe posts by direct URL.
- Compare keyword coverage and posting volume between Naver Blog and Naver Cafe for a topic.

### How it works

1. For search keywords, the actor queries Naver's public blog and/or cafe search and collects matching post URLs, paging until `maxResults` or Naver's result limit is reached.
2. For direct URLs, it parses the blog ID / log number or cafe alias / article ID straight from the URL, skipping search.
3. If `scrapeContent` is on, it fetches each post's rendered page (or the public cafe article API) and extracts text, HTML, images, hashtags, category, likes, and any linked Naver Map place.
4. If `scrapeComments` is on, it collects comment data — reliably for cafe posts via Naver's public article API, and on a best-effort basis for blog posts.
5. It normalizes every post into a single output schema shared by blog and cafe records.
6. It pushes each post to the Apify dataset and applies PPE charging only on the Apify platform, stopping automatically if the user's spending limit is reached.

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

**Is scraping Naver Blog and Naver Cafe posts legal?**

Scraping publicly available web data is generally allowed in many jurisdictions, but you should review Naver's terms of service, avoid collecting private or sensitive information, and make sure your use case complies with applicable laws. For background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Limitations

- Private (membership-only) cafe posts cannot be scraped.
- Blog comments may not be available for some posts due to Naver's access restrictions.
- Some content may be restricted due to Naver's access control policies.

### Other scrapers / Related Actors

| Actor | Best for |
|-------|----------|
| [Naver Blog & Cafe Scraper](https://apify.com/parsebird/naver-blog-cafe-scraper) | Naver Blog and Naver Cafe posts, comments, and place data |
| [Naver Place Review Scraper](https://apify.com/parsebird/naver-place-review-scraper) | Naver Place visitor reviews, blog reviews, and rating statistics |
| [GetYourGuide Review Scraper](https://apify.com/parsebird/getyourguide-review-scraper) | Tour and activity review data with ratings and text |
| [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) | Finding public contact details for a business or lead list |

### FAQ

**Can I use this as a Naver Blog or Cafe API?**

Yes. Start runs and fetch datasets through the [Apify API](https://docs.apify.com/api/v2), Python client, JavaScript client, webhooks, or integrations.

**Can I scrape both blog and cafe posts in one run?**

Yes. Set `searchType` to `both` (the default) to search both platforms with a single keyword list.

**Can I scrape a specific list of posts instead of searching?**

Yes. Add the post URLs to `directUrls`. The actor skips search and scrapes those posts directly.

**Why are some cafe posts missing content or comments?**

Naver Cafe requires membership login to view posts in private or restricted cafes and boards. The actor cannot bypass this and skips those posts.

**Why are blog comments often empty?**

Naver restricts its public blog comment endpoint for most posts. The actor still attempts the fetch and returns whatever Naver allows, which is empty for many posts. `commentCount` (the total Naver reports) is still returned even when the comment list itself is unavailable.

**How many results can I collect per keyword?**

Set `maxResults` up to 1,000 per keyword, per search target (`blog` and `cafe` are counted separately when `searchType` is `both`).

**Does this actor require a proxy?**

A proxy is recommended for large or repeated runs to avoid Naver rate limiting. The input schema defaults to Apify proxy settings.

**Can I schedule recurring scraping?**

Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) to run this actor daily, weekly, or at any interval to track new posts or mentions over time.

**Where can I report issues or request fields?**

Open the Issues tab on the actor page and include your input example, run ID, and the post URL.

# Actor input Schema

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

Add Naver search keywords, such as 강남 맛집 or Seoul cafe. The actor finds matching blog and/or cafe posts.

## `directUrls` (type: `array`):

Add specific Naver Blog or Naver Cafe post URLs to scrape directly, skipping search.

## `searchType` (type: `string`):

Which Naver content to search when using search keywords.

## `maxResults` (type: `integer`):

Maximum search results per keyword, per search target (up to 1,000).

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

Order search results by relevance or by newest first.

## `scrapeContent` (type: `boolean`):

Fetch each post's full text, images, tags, category, likes, and place info. Turn off to only collect search-result metadata (faster, cheaper).

## `scrapeComments` (type: `boolean`):

Collect comment data (author, content, date) for each post where available.

## `maxConcurrency` (type: `integer`):

How many posts to scrape in parallel. Higher is faster but raises the rate-limit risk without a proxy.

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

Proxy settings. Recommended for large runs to avoid rate limiting.

## Actor input object example

```json
{
  "searchKeywords": [
    "강남 맛집"
  ],
  "directUrls": [],
  "searchType": "both",
  "maxResults": 10,
  "sortBy": "sim",
  "scrapeContent": true,
  "scrapeComments": true,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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": [
        "강남 맛집"
    ],
    "directUrls": [],
    "maxResults": 10,
    "maxConcurrency": 3,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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": ["강남 맛집"],
    "directUrls": [],
    "maxResults": 10,
    "maxConcurrency": 3,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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": [
    "강남 맛집"
  ],
  "directUrls": [],
  "maxResults": 10,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/naver-blog-cafe-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/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/57llJFoeOK9NkT6KW/builds/VHa72399X0rMh6xlF/openapi.json
