# Naver Blog Scraper - Korean Blog Posts by Keyword, Full Text (`tenfoldfleet/naver-blog-scraper`) Actor

Get Naver blog posts for a keyword or blog ID: full text, author, date, images, tags, likes, comments and a sponsored-review flag (협찬, 원고료, 소정의). For Korean influencer and brand monitoring; monitor mode returns only new posts. $1.50 per 1,000 posts; deleted and failed posts are free.

- **URL**: https://apify.com/tenfoldfleet/naver-blog-scraper.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Social media, Lead generation, Agents
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 blog posts

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

Not affiliated with Naver Corporation. This actor reads public blog posts only, with no login.

### What does Naver Blog Scraper do?

**Naver Blog Scraper** collects posts from **Naver Blog**, Korea's largest blogging platform, in two ways: by **search keyword** (a brand, product, place or topic) or by **blog ID** (a blogger's newest posts). For each post you get the **full text**, title, author nickname, blog name, exact publish time, image URLs, hashtags, **like and comment counts**, and a **sponsored flag** that marks paid or gifted reviews.

Korean bloggers are required to disclose paid reviews, and they do it with fixed phrases such as **협찬** (sponsored), **원고료** (writing fee) and **소정의** ("a small fee"), or with a banner from a review-campaign platform. The actor looks for those signals in the post text and images and returns `sponsored: true` plus the list of signals it found, so you can separate organic word of mouth from paid placements.

Use it as a simple **Naver blog API**: send keywords or blog IDs, get clean JSON rows back. It shares its Naver request code (headers, proxy rotation and retries) with our [Naver Shopping Scraper](https://apify.com/tenfoldfleet/naver-shopping-scraper), which covers a different data type: product listings and prices.

### Why use it?

- **Brand-mention monitoring**: track what Korean bloggers write about your brand or your competitors, every day.
- **Influencer research**: read a blogger's latest posts, likes and comments before you contact them.
- **Paid-review audits**: count how many posts about a product are sponsored, and which agencies run the campaigns.
- **Market and content research**: collect post text for sentiment analysis, topic modeling or an LLM pipeline.
- **New-post alerts**: with **monitor mode**, a scheduled run returns only posts it has not delivered before.

### What data can it extract?

| Field | Meaning |
|---|---|
| `postUrl`, `blogId`, `logNo` | Post link, blog ID and Naver post number |
| `title` | Post title |
| `author`, `blogName` | Blogger nickname and blog name |
| `publishedAt` | Publish time (ISO 8601, UTC) |
| `text`, `wordCount`, `textIsFull` | Full post text (or the search snippet when full text is off) and its word count |
| `images` | Image URLs in the post |
| `tags` | Hashtags the blogger added |
| `sponsored`, `sponsoredSignals` | Paid-review flag and the phrases or banner hosts that triggered it |
| `likes`, `comments` | Like (공감) and comment counts |
| `keyword`, `sourceBlogId` | The input that found this post |
| `scrapedAt`, `error` | Scrape time; `error` is set only on free error rows |

Email addresses and phone numbers that appear inside post text are replaced with `[email removed]` and `[phone removed]`.

### How to scrape Naver blog posts

1. Open the actor and add one or more **Search keywords** (for example `캠핑의자`) and/or **Blog IDs** (for example `naro-camping`, or the blog address copied from your browser).
2. Choose **Newest first** or **Relevance**, and optionally a start date such as `2026-10-01` or `7 days`.
3. Set **Max posts per keyword or blog** (default 30, up to 1,000 per keyword).
4. Click **Start**. Rows appear in the dataset as they are scraped.
5. For daily monitoring, turn on **Monitor mode** and add a schedule in Apify Console.

### How much does it cost?

You pay **$1.50 per 1,000 posts** ($0.0015 per post), plus a tiny actor start fee. Deleted, private and failed posts, missing blogs and empty searches are written as rows with an `error` field and are **free**. In monitor mode, posts already delivered are skipped and not charged. 10 keywords at 30 posts each cost about $0.45. The Apify free plan's $5 monthly credit covers about 3,000 posts.

### Input

```json
{
    "keywords": ["캠핑의자", "선크림 추천"],
    "blogIds": ["naro-camping"],
    "sort": "date",
    "dateFrom": "7 days",
    "maxPostsPerQuery": 30,
    "includeFullText": true,
    "monitorMode": false
}
```

### Output

```json
{
    "postUrl": "https://blog.naver.com/naro-camping/224457753105",
    "blogId": "naro-camping",
    "logNo": "224457753105",
    "title": "10월 할로윈 이벤트 '선물꾸러미 증정'",
    "author": "학암포 나로 캠핑장",
    "blogName": "학암포 나로 글램핑 캠핑장",
    "publishedAt": "2026-10-29T04:41:30.697Z",
    "text": "🎃 HAPPY HALLOWEEN! 나로 캠핑장 할로윈 이벤트\n할로윈데이를 맞아 학암포 나로 글램핑 캠핑장에서 어린이 동반 가족을 위한 작은 선물 ...",
    "textIsFull": true,
    "wordCount": 135,
    "images": [
        "https://mblogthumb-phinf.pstatic.net/MjAyNjEwMjlfMjg2/MDAxNzkzMjQ4Nzg3NTI1.XAXAFp24KTtW06CJm_nOjOycgWZx7k2MEheJLVTyhxQg.WqFPWK60DefrL7RaJ-ClW4sFfI5MgH1t70SnqDdVdrsg.PNG/39fbd0c0-2d3b-4ecd-855e-5458a0ba83f4.png?type=w800"
    ],
    "tags": [
        "학암포캠핑장",
        "할로윈데이캠핑장",
        "학암포나로글램핑",
        "서해안글램핑",
        "서해안캠핑장",
        "태안캠핑장",
        "태안글램핑"
    ],
    "sponsored": false,
    "sponsoredSignals": [],
    "likes": 0,
    "comments": 0,
    "keyword": null,
    "sourceBlogId": "naro-camping",
    "scrapedAt": "2026-11-05T15:21:19.767Z",
    "error": null
}
```

Download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API.

### Tips

- Search with the exact brand spelling Koreans use, in Hangul (for example `올리브영`, not only `Olive Young`).
- Turn **Include full post text** off for a quick count of who is posting; the price per post stays the same, but runs finish faster.
- Monitor mode remembers posts per exact input (keywords, blog IDs, sort and date setting). Changing the input starts a new memory.
- The same post found by two keywords in one run is returned and charged once.

### FAQ

#### Is the sponsored flag always right?

It finds the standard Korean disclosure phrases in the text and banners from known review-campaign platforms. A disclosure that exists only inside an image with an unknown host is not detected, so treat `sponsored: false` as "no disclosure found".

#### Does it scrape Naver Cafe or News?

No. This actor covers Naver Blog posts only.

#### Why do some rows have an error?

The post was deleted, made private, or could not be loaded, or the blog does not exist. Those rows are free.

#### Can I use it from an AI agent?

Yes. It runs through the Apify API and the Apify MCP server, and returns plain JSON.

### Disclaimer

This actor collects publicly available blog posts. You are responsible for using the data in line with Naver's terms, copyright law and privacy rules such as Korea's PIPA and the GDPR. Personal emails and phone numbers are removed from post text.

# Actor input Schema

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

Naver blog search terms, in Korean or English (brand names, product names, topics). Each keyword returns up to Max posts per keyword posts from Naver's blog search. The Apify free plan's $5 monthly credit covers about 3,000 posts.

## `blogIds` (type: `array`):

Naver blogs to read, newest posts first: a blog ID (naro-camping) or a blog URL (https://blog.naver.com/naro-camping). A blog that does not exist gives a free error row.

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

Newest posts first (date) or Naver's relevance order (relevance). Blog IDs are always read newest first.

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

Only posts published on or after this date (Korea time). Use 2026-10-01, or a relative period such as "7 days" or "2 weeks". Leave empty for no date limit.

## `maxPostsPerQuery` (type: `integer`):

Stop after this many posts for each keyword and each blog. Naver's blog search goes up to 1,000 posts per keyword.

## `includeFullText` (type: `boolean`):

Open every post to get its full text, all images, tags, exact date and comment count, and to detect sponsorship disclosures. Turn off for a faster run that returns the search snippet as text (same price per post).

## `monitorMode` (type: `boolean`):

Return and charge only posts that earlier runs with the same keywords, blog IDs, sort and date settings did not return. Delivered post IDs are kept in a key-value store named naver-blog-scraper-monitor in your account. Schedule the actor daily to get a feed of new posts.

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

With Apify Proxy (the default), the first try of each request goes direct and retries and blocked requests use Apify datacenter proxy. Your own proxy URLs, if you add them, are used for every request.

## Actor input object example

```json
{
  "keywords": [
    "캠핑의자"
  ],
  "sort": "date",
  "maxPostsPerQuery": 30,
  "includeFullText": true,
  "monitorMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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": [
        "캠핑의자"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/naver-blog-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": ["캠핑의자"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/naver-blog-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": [
    "캠핑의자"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call tenfoldfleet/naver-blog-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/naver-blog-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/QEOON6tb6Xc6NPD1g/builds/4gcTh7GZ9XUpTVZS1/openapi.json
