# Naver Web Search Scraper — SERP Results, No Login (`mind_momentum/naver-search`) Actor

Scrape Naver web search results (search.naver.com): position, title, URL, snippet. No Naver developer account or API key needed.

- **URL**: https://apify.com/mind\_momentum/naver-search.md
- **Developed by:** [Mind Momentum](https://apify.com/mind_momentum) (community)
- **Categories:** SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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.
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 Web Search Scraper — Results, Snippets, Positions (No Login)

Scrape **organic web search results from Naver** (search.naver.com) — Korea's dominant
search engine. Get positions, titles, URLs, and snippets as clean structured data.
**No Naver developer account, no API key, no Korean phone verification** — just a keyword.

### Why this Actor?

Naver's official Search API requires a Naver developer account with **Korean phone
verification** — a wall for anyone outside Korea. This Actor reads the public search
page directly, so you can start monitoring Naver SERPs in seconds.

### Features

- 🔎 **Keyword search** — organic web results for any query (Korean queries return
  the richest results: ~10/page)
- 📈 **Scalable depth** — crawl up to 10 pages (~100 results) per keyword with a
  single input change
- 📊 **Position tracking** — continuous global rank across pages (1, 2, 3, …) for
  SEO/AEO monitoring of the Korean market
- 🚫 **No-login, no-key** — bypasses the official API's registration wall entirely
- 🧹 **Clean output** — one row per organic result; ads (파워링크) are excluded
- 🌍 **Residential proxy built in** — reliable access from the Apify platform

### Input

| Field | Type | Description |
|---|---|---|
| `keyword` | string (required) | Search query, e.g. `마케팅` |
| `max_pages` | integer | Result pages to crawl, ~10 results/page (default 3 ≈ 30 results, max 10 ≈ 100 results) |
| `proxyConfiguration` | object | Optional proxy settings (defaults to Korean residential on platform) |

#### Example input

```json
{
  "keyword": "마케팅",
  "max_pages": 3
}
```

Need more results? Raise `max_pages` (up to 10) — each extra page adds ~10 organic
results, so a deep crawl yields ~100 rows per keyword.

### Output

One dataset item per organic result:

```json
{
  "position": 1,
  "title": "마케팅 - 나무위키",
  "url": "https://namu.wiki/w/마케팅",
  "snippet": "Marketing 경영학의 일종으로, 고객들과의 관계를 관리하고…"
}
```

| Field | Type | Description |
|---|---|---|
| `position` | integer | Global rank across all crawled pages, starting at 1 |
| `title` | string | Result title as shown |
| `url` | string | Absolute external URL of the result |
| `snippet` | string | Description text as shown (null when absent) |

### How it works

1. For each page, the Actor fetches `search.naver.com/search.naver?where=web&query=…`
   (server-rendered, no JavaScript execution needed).
2. Organic result cards are extracted; sponsored blocks are skipped.
3. Results are deduplicated by URL and pushed with continuous positions.

### Use cases

- **SEO agencies** — track client rankings on Korea's #1 search engine
- **AI-Engine-Optimization (AEO)** — monitor how your brand surfaces in Naver results
- **Market research** — discover which sites Naver ranks for your Korean keywords
- **Competitive intelligence** — scheduled SERP snapshots for position diffs

### Pricing

Pay per event: **$1.00 per 1,000 results** ($0.70/1k on Apify paid plans) + a small Actor-start fee. Only results
pushed to the dataset are charged.

```json
[
  {
    "position": 1,
    "title": "나무위키 namu.wiki › 마케팅 새 창 열림",
    "url": "https://namu.wiki/w/%EB%A7%88%EC%BC%80%ED%8C%85",
    "snippet": "Marketing 경영학의 일종으로, 고객들과의 관계를 관리하고, 시장을 구축하는 기법을 연구하는 학문, 혹은 상품이나 서비스를 생산자로부터 소비자에게 합리적으로 유통시키기 위한 기업의 모든 활동."
  },
  {
    "position": 2,
    "title": "위키백과 한국어 ko.wikipedia.org › 마케팅 새 창 열림",
    "url": "https://ko.wikipedia.org/wiki/%EB%A7%88%EC%BC%80%ED%8C%85",
    "snippet": "ko.wikipedia.org › 마케팅"
  },
  {
    "position": 3,
    "title": "나무위키 namu.wiki › 마케팅(직무) 새 창 열림",
    "url": "https://namu.wiki/w/%EB%A7%88%EC%BC%80%ED%8C%85(%EC%A7%81%EB%AC%B4)",
    "snippet": "영업 활동을 기획해 줌으로써 보조하는 일이다. 학문으로서의 마케팅 을 기업활동에 사용하는 업무이다."
  }
]
```

# Actor input Schema

## `keyword` (type: `string`):

Search query, e.g. '마케팅' (Korean queries return the richest results).

## `max_pages` (type: `integer`):

Result pages to crawl — each page yields ~10 organic results. Default 3 ≈ 30 results; set higher for more (max 10 ≈ 100 results).

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

Residential proxy used on the Apify platform to bypass datacenter-IP WAF blocks. Leave default unless you know you need custom proxy settings.

## Actor input object example

```json
{
  "max_pages": 3
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mind_momentum/naver-search").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("mind_momentum/naver-search").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 '{}' |
apify call mind_momentum/naver-search --silent --output-dataset

```

## MCP server setup

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

```

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/dnVHBoVuVkPbjRcWk/builds/YpFzUcCK3PdmdidsK/openapi.json
