# Naver News Search Scraper (`automation-lab/naver-news-search-scraper`) Actor

Search Naver News by keyword and export ranked headlines, publishers, publication times, article links, snippets, thumbnails, and query provenance.

- **URL**: https://apify.com/automation-lab/naver-news-search-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 News Search Scraper

Search Korea's Naver News index by keyword and turn the ranked results into clean, integration-ready records. The Actor extracts headlines, publishers, publication times, destination links, Naver-hosted links, snippets, thumbnails, result ranks, and query provenance without requiring a Naver account or API key.

Use it for recurring Korean-market media monitoring, PR alerts, competitor tracking, research datasets, and localized news feeds. Search in Korean, English, or a mixture of both.

### What does Naver News Search Scraper do?

The Actor sends keyword searches to Naver's public News search, follows result pagination, and saves unique article records in the default Apify dataset.

It can:

- search one or many keywords;
- sort results by relevance or newest first;
- paginate until the requested record limit is reached;
- deduplicate articles by normalized destination URL;
- preserve a Naver-hosted article URL when one is present;
- retain the query, rank, page, and fetch time for auditability;
- export results as JSON, CSV, Excel, XML, RSS, or JSONL through Apify.

The Actor extracts search-result metadata. It does not download full article bodies or bypass publisher paywalls.

### Who is this Naver news scraper for?

- **PR and communications teams** monitoring Korean coverage of brands, executives, and launches.
- **Market intelligence analysts** tracking competitors, industries, supply chains, and policy topics.
- **Researchers and journalists** building reproducible keyword-based Korean news datasets.
- **Localization teams** adding a Korea-specific source to global news monitoring.
- **Developers and AI agents** that need structured Naver News records through an API or MCP tool.

Choose this Actor when you need article discovery from Naver News. For keyword popularity over time rather than article records, use [Naver DataLab Search Trends Scraper](https://apify.com/automation-lab/naver-datalab-search-trends-scraper).

### Why use this Actor?

Naver is a distinct discovery surface from global search engines. A query can expose Korean publishers and local reporting that does not rank prominently elsewhere.

This Actor uses lightweight server-rendered HTML rather than a browser. That keeps runs fast and economical while still providing pagination, Korean text handling, and clear result provenance. It also fails visibly if Naver returns an unrecognized or blocked page instead of silently returning an empty dataset.

### What Naver News data can I extract?

| Field | Type | Meaning |
| --- | --- | --- |
| `title` | string | Headline displayed in Naver News search |
| `publisher` | string or null | Publisher name when displayed |
| `publishedAt` | string or null | Best-effort ISO timestamp derived from Naver's date label |
| `publishedText` | string or null | Original date label, such as `3시간 전` |
| `articleUrl` | string | Normalized destination article URL |
| `naverUrl` | string or null | Naver-hosted article URL when the destination is on Naver News |
| `snippet` | string or null | Summary or matching excerpt displayed by Naver |
| `thumbnailUrl` | string or null | Search-result thumbnail URL |
| `query` | string | Keyword that produced the result |
| `rank` | integer | One-based accepted-result rank for that query |
| `page` | integer | Naver search page where the result appeared |
| `fetchedAt` | string | ISO timestamp for the page fetch |

Fields that Naver does not display are returned as `null`; records are not discarded merely because a thumbnail or normalized date is unavailable.

### How to scrape Naver News in 4 steps

1. Open the Actor and click **Try for free**.
2. Add one or more terms under **Search queries**.
3. Choose **Relevance** or **Newest first**, then set **Maximum articles**.
4. Start the run and download the default dataset in your preferred format.

A useful first run is:

```json
{
  "queries": ["인공지능", "반도체"],
  "sort": "date",
  "maxItems": 50
}
```

### Input parameters

#### `queries`

Required array of 1–50 non-empty search terms. Each term can contain up to 200 characters. Queries run in the order supplied. Duplicate article URLs are removed across the entire run.

#### `sort`

- `relevance` returns Naver's relevance ordering.
- `date` requests newest-first ordering.

The default is `relevance`.

#### `maxItems`

Maximum number of unique records saved across all queries. The accepted range is 1–1,000 and the default is 100. The Actor stops scheduling pages as soon as the limit is reached.

### Output example

A current result has this shape:

```json
{
  "title": "AI investment expands across Korean industries",
  "publisher": "Sample Business Daily",
  "publishedAt": "2025-01-15T09:00:00.000Z",
  "publishedText": "3시간 전",
  "articleUrl": "https://news.sample.kr/article/ai-investment",
  "naverUrl": null,
  "snippet": "Companies are increasing investment in artificial intelligence projects.",
  "thumbnailUrl": "https://search.pstatic.net/common/?src=https%3A%2F%2Fnews.sample.kr%2Fimage.jpg",
  "query": "인공지능",
  "rank": 1,
  "page": 1,
  "fetchedAt": "2025-01-15T12:00:00.000Z"
}
```

Open the run's **Dataset** tab to preview rows or use the dataset API URL from the Actor output.

### How much does it cost to scrape Naver News results?

Pricing uses one start event plus one `Item extracted` event for each unique dataset item. Rejected, failed, empty, and duplicate records are not charged as results.

| Usage tier | Price per news result |
| --- | ---: |
| Free | $0.000041071 |
| Bronze | $0.000035714 |
| Silver | $0.000027857 |
| Gold | $0.000021429 |
| Platinum | $0.000014286 |
| Diamond | $0.000010000 |

Each run also has a $0.003 start event. At the Free-tier event price, 100 results cost about **$0.0071** including the start event, while 1,000 results cost about **$0.0441**. Your active Apify tier determines the exact result-event price shown in Console.

The Actor uses 256 MB of memory and direct HTTP. It does not automatically enable paid residential proxies or a browser fallback.

### Media-monitoring workflow ideas

#### Brand and executive alerts

Run newest-first searches for a company name, product, and executive. Schedule the Actor hourly or daily, then send new dataset items to Slack, email, or a webhook.

#### Competitor and market tracking

Combine Korean-language competitors and category terms in one run. Keep the `query` field when loading rows into a warehouse so analysts can compare coverage by monitoring theme.

#### Korean AI or RAG news feed

Feed `title`, `snippet`, `publisher`, and `articleUrl` into an enrichment pipeline. Fetch article bodies only when the publisher permits it and when your downstream use requires them.

#### Cross-market research

Join this dataset with [Google News Scraper](https://apify.com/automation-lab/google-news-scraper) output using normalized destination URLs. This highlights stories unique to Naver's Korean index.

### Scheduling and integrations

Use an Apify schedule for repeated monitoring. To avoid reprocessing old records downstream, deduplicate on `articleUrl` and store `fetchedAt` as collection provenance.

Common integrations include:

- Google Sheets for lightweight monitoring lists;
- Slack or Microsoft Teams for coverage alerts;
- Make and Zapier for no-code workflows;
- webhooks for event-driven pipelines;
- BigQuery, Snowflake, or S3-compatible storage for research archives;
- LLM classification for topic, sentiment, or entity enrichment.

### Run with the Apify API

Set `APIFY_TOKEN` in your environment. Never commit the token to source control.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~naver-news-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["삼성전자"],"sort":"date","maxItems":50}'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/naver-news-search-scraper').call({
  queries: ['삼성전자', 'HBM'],
  sort: 'date',
  maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/naver-news-search-scraper').call(run_input={
    'queries': ['반도체 공급망'],
    'sort': 'relevance',
    'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Use Naver News Search Scraper with MCP

Add the Actor as an Apify MCP tool in Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/naver-news-search-scraper"
```

**Claude Desktop** — add this server to the MCP configuration file:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/naver-news-search-scraper"
    }
  }
}
```

**Cursor** — open Settings → MCP, add a remote server named `apify`, and use the same URL.

**VS Code** — add the same remote HTTP server under `mcp.servers` in your workspace or user MCP configuration.

Example prompts:

- "Find the newest 30 Naver News articles about 삼성전자 and summarize the publishers."
- "Collect Naver News coverage for 반도체 공급망 and HBM, then group links by query."
- "Create a Korean AI news dataset with title, publisher, snippet, and article URL."

### Accuracy, pagination, and limits

- Results reflect Naver's public ranking at run time and can change between runs.
- A search page can contain grouped or related items; `rank` counts unique accepted records.
- Relative publication labels are converted to approximate ISO timestamps using the fetch time. Use `publishedText` when the exact displayed label matters.
- Publisher, snippet, thumbnail, normalized date, or Naver URL may be absent on some cards.
- The maximum output is 1,000 records per run.
- Naver can change its HTML or apply temporary rate limits. Transient 429 and 5xx responses are retried with bounded backoff.
- A persistent block or changed page shape fails the run instead of returning a misleading empty dataset.

### Responsible use and legality

Naver News search results and linked articles may be protected by copyright, database rights, website terms, and privacy law. Use the Actor only for data you are authorized to access. Respect publishers' terms, do not republish copyrighted article content without permission, and apply appropriate retention and privacy controls.

The Actor collects public search-result metadata and does not bypass login controls or publisher paywalls. You are responsible for your downstream use and for complying with applicable Korean and international law.

### Troubleshooting

#### The run returns no records

Check the query directly on Naver News and verify spelling. A valid query can naturally have no matching records. Try a broader Korean-language term before treating zero results as an error.

#### The run fails with an upstream HTTP error

Naver may be temporarily rate-limiting requests or changing the result page. Retry later with a smaller workload. The Actor intentionally does not hide persistent blocks behind a successful empty run.

#### Why is `publisher` or `publishedAt` null?

Naver does not show every field for every grouped result. `publishedText` preserves the visible label, while `publishedAt` is populated only when the label can be normalized safely.

#### Why did a later query return fewer items?

`maxItems` is a global run limit and article URLs are deduplicated across queries. Earlier queries can consume the limit or overlap with later terms.

### FAQ

#### Does this use the official Naver Search API?

No. It parses anonymous, server-rendered Naver News search results. No Naver client ID or secret is required.

#### Does it extract full article text?

No. It returns search-result metadata and links. Full article extraction has different publisher permissions, layouts, and paywall constraints.

#### Can it search Korean and English terms?

Yes. Input is UTF-8 and supports Korean, English, and mixed-language queries.

#### Can I schedule it for monitoring?

Yes. Use Apify schedules and webhooks to automate repeated runs and downstream notifications.

#### Are results deduplicated?

Yes. Tracking parameters are removed from common destination URLs and duplicate normalized article URLs are saved only once per run.

### Related Automation Lab Actors

- [Google News Scraper](https://apify.com/automation-lab/google-news-scraper) for global news search and cross-market comparison.
- [Naver DataLab Search Trends Scraper](https://apify.com/automation-lab/naver-datalab-search-trends-scraper) for Korean keyword-interest trends.
- [Naver Blog Search Scraper](https://apify.com/automation-lab/naver-blog-search-scraper) for Korean blog discovery and creator monitoring.
- [Naver Map Local Business Scraper](https://apify.com/automation-lab/naver-map-local-business-scraper) for Korean local business and place records.

# Actor input Schema

## `queries` (type: `array`):

Keywords to search on Naver News. Add multiple terms for a monitoring or research workflow.

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

Use relevance for the best keyword matches or date for the newest matching articles.

## `maxItems` (type: `integer`):

Maximum number of unique article records saved across all queries.

## Actor input object example

```json
{
  "queries": [
    "인공지능",
    "반도체"
  ],
  "sort": "relevance",
  "maxItems": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

Default dataset items displayed in the Naver news results view.

# 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 = {
    "queries": [
        "인공지능",
        "반도체"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/naver-news-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 = {
    "queries": [
        "인공지능",
        "반도체",
    ],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/naver-news-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "인공지능",
    "반도체"
  ],
  "maxItems": 20
}' |
apify call automation-lab/naver-news-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/naver-news-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/fchwYIM5k1G0kP3js/builds/W9QmAqEfbKdfGhfoy/openapi.json
