# Naver Keyword Search Volume (네이버 키워드 검색량) (`andong-keyword-lab/naver-keyword-volume`) Actor

Get monthly Naver search volumes (PC and mobile), ad competition, CTR and hundreds of related keyword ideas for any Korean keyword, straight from the Naver SearchAd keyword tool. Korea's top search engine, in English JSON.

- **URL**: https://apify.com/andong-keyword-lab/naver-keyword-volume.md
- **Developed by:** [Junho Kang](https://apify.com/andong-keyword-lab) (community)
- **Categories:** SEO tools
- **Stats:** 3 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 keyword 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 Keyword Search Volume (네이버 키워드 검색량)

Get **monthly Naver search volumes** for Korean keywords, split by PC and mobile, plus ad competition, click-through rates and **hundreds of related keyword ideas** per keyword. The data comes from Naver's official SearchAd keyword tool (네이버 검색광고 키워드도구), the same numbers Korean advertisers see, delivered as clean English JSON, CSV or Excel.

Naver is Korea's largest search engine, and Google Keyword Planner does not cover it. If you do SEO, content or ads for the Korean market, this is the keyword data you are missing.

### What can it do?

- 📊 **Search volume**: monthly searches on PC and mobile for up to 1,000 keywords per run
- 💡 **Related keywords**: Naver's own keyword suggestions for each keyword (often 500+), each with its own volume
- 🎯 **Long-tail filter**: keep only variants that contain your keyword, e.g. 선크림 → 무기자차선크림, 톤업선크림, 선크림추천
- 🏷️ **Ad metrics**: competition level, average monthly ad clicks, CTR and number of ads shown
- 💰 **CPC bid estimates** (optional): Naver's estimated bid for ad position 1 and 3 and the median bid, on PC and mobile, in KRW and USD. The Naver equivalent of Google's top-of-page bid range.
- 🌐 **English output**: English field names and values, ready for spreadsheets, BI tools and AI agents
- 🔑 **No Naver account needed**: works out of the box with the built-in key, or bring your own SearchAd API key

### Who is it for?

- **SEO and content teams** entering Korea who need to know what Koreans actually search for
- **Brands and e-commerce sellers** sizing demand for a product in Korea before launch
- **Agencies** running Naver search ads or Naver blog marketing for clients
- **Researchers and analysts** tracking interest in topics, brands or products in Korea
- **AI agents** that need Korean keyword data through the Apify API or MCP server

### How to use it

1. Enter your **keywords**, one per line. Korean works best; English brand names work too.
2. Choose whether to include **related keywords** and how many per keyword.
3. Optionally keep only **long-tail variants** or set a **minimum monthly search** volume.
4. Turn on **CPC bid estimates** if you want to know what a click costs.
5. Click **Start** and download the results as JSON, CSV, Excel or HTML, or fetch them through the API.

#### Input example

```json
{
    "keywords": ["선크림", "캠핑의자"],
    "includeRelated": true,
    "maxRelatedPerKeyword": 50,
    "sortRelatedBy": "volume",
    "relatedMustContainSeed": true,
    "minMonthlySearches": 100,
    "includeBidEstimates": true
}
```

### Output example

One row per keyword. Your input keywords have `isSeed: true`; related keyword ideas have `isSeed: false` and point back to their seed.

```json
[
    {
        "keyword": "선크림",
        "seedKeyword": "선크림",
        "isSeed": true,
        "found": true,
        "monthlySearchesTotal": 24130,
        "monthlySearchesPc": 8130,
        "monthlySearchesMobile": 16000,
        "lowVolume": false,
        "mobileShare": 0.663,
        "avgMonthlyClicksPc": 16.8,
        "avgMonthlyClicksMobile": 122.3,
        "ctrPc": 0.22,
        "ctrMobile": 0.82,
        "competition": "medium",
        "avgAdsShown": 8.0,
        "bidPos1PcKrw": 6900,
        "bidPos3PcKrw": 4530,
        "bidPos1MobileKrw": 4840,
        "bidPos3MobileKrw": 4260,
        "medianBidPcKrw": 4160,
        "medianBidMobileKrw": 3840,
        "medianBidPcUsd": 3.12,
        "medianBidMobileUsd": 2.88,
        "usdKrwRate": 1333.74,
        "fetchedAt": "2026-10-13T12:15:10+00:00"
    },
    {
        "keyword": "무기자차선크림",
        "seedKeyword": "선크림",
        "isSeed": false,
        "found": true,
        "monthlySearchesTotal": 10930,
        "monthlySearchesPc": 1330,
        "monthlySearchesMobile": 9600,
        "lowVolume": false,
        "mobileShare": 0.878,
        "avgMonthlyClicksPc": 5.4,
        "avgMonthlyClicksMobile": 83.5,
        "ctrPc": 0.45,
        "ctrMobile": 0.94,
        "competition": "medium",
        "avgAdsShown": 8.0,
        "fetchedAt": "2026-10-13T12:15:10+00:00"
    }
]
```

#### Output fields

| Field | Meaning |
|---|---|
| `keyword` | Keyword as Naver reports it. Naver removes spaces and upper-cases Latin letters. |
| `seedKeyword` | The input keyword this row belongs to |
| `isSeed` | `true` for your keywords, `false` for related ideas |
| `monthlySearchesTotal` | Monthly searches, PC + mobile |
| `monthlySearchesPc` / `monthlySearchesMobile` | Monthly searches per device |
| `lowVolume` | `true` when Naver reported fewer than 10 searches on a device; that device is counted as 0 |
| `mobileShare` | Share of searches on mobile (0 to 1) |
| `avgMonthlyClicksPc` / `avgMonthlyClicksMobile` | Average monthly clicks on search ads |
| `ctrPc` / `ctrMobile` | Average ad click-through rate, in percent |
| `competition` | Advertiser competition: `low`, `medium` or `high` |
| `avgAdsShown` | Average number of ads shown on the PC results page |
| `bidPos1PcKrw` / `bidPos3PcKrw` | Estimated bid (KRW) to rank 1st / 3rd among PC search ads (CPC option) |
| `bidPos1MobileKrw` / `bidPos3MobileKrw` | Same for mobile search ads (CPC option) |
| `medianBidPcKrw` / `medianBidMobileKrw` | Median advertiser bid over the last month, in KRW (CPC option) |
| `medianBidPcUsd` / `medianBidMobileUsd` | Median bid converted to USD at `usdKrwRate` (ECB reference rate) |
| `found` | `false` if Naver returned nothing for the keyword (not billed) |
| `fetchedAt` | When the data was fetched (UTC) |

### How much does it cost?

You pay only for the keywords you get back. There is no monthly fee, and rows for keywords Naver has no data on are free. Keywords with CPC bid estimates are billed at a higher price than volume-only keywords. See the **Pricing** tab for the current prices.

To control cost:

- Turn off **Include related keywords** to pay only for your own keywords.
- Lower **Max related keywords per keyword**, or raise **Minimum monthly searches**.
- Set a maximum cost per run in the run options; the Actor stops cleanly when it reaches it.

### Tips

- **Spaces do not matter.** Naver treats `캠핑 의자` and `캠핑의자` as the same keyword, so duplicates like these are looked up once.
- **"Fewer than 10"** is the lowest number Naver discloses. Those keywords are flagged with `lowVolume: true`.
- **Relevance vs volume.** Naver's own order (relevance) puts close matches first. Sort by volume to surface the biggest opportunities first.
- **Long-tail research.** Turn on *Only long-tail variants* with a minimum volume of 100 to get a ready-made list of blog and product page topics.

### Use your own Naver SearchAd API key (optional)

If you have a Naver SearchAd account, you can run the Actor with your own key. Open [searchad.naver.com](https://searchad.naver.com), go to **Tools → API Manager**, and copy the Customer ID, access license and secret key into the optional fields. The fields are encrypted and never logged.

### Integrations and API

Run the Actor from your own code with the [Apify API](https://docs.apify.com/api/v2), schedule it to refresh your keyword lists every month, or connect the results to Google Sheets, Make, n8n, Zapier or Slack. AI agents can call it through the [Apify MCP server](https://mcp.apify.com).

### FAQ

**Where does the data come from?**
From the official Naver SearchAd API keyword tool (`/keywordstool`), the same data shown in the Naver advertiser console. The Actor does not scrape Naver search pages.

**How fresh is it?**
The numbers are Naver's monthly search counts as reported by the keyword tool at the time of the run, so each run gives you current data. Every row carries the `fetchedAt` time.

**What do the CPC numbers mean?**
They are Naver's own bid estimates for Power Link search ads: what an advertiser would need to bid per click to reach position 1 or 3, and the median bid advertisers placed over the last month. The minimum bid on Naver is 70 KRW, so 70 means almost no advertiser competition.

**Does it work for English keywords?**
Yes, for terms Koreans search in Latin letters, such as brand names (`iphone`, `nike`). Most Korean search demand is in Hangul, so Korean keywords give the richest results.

**Is this an official Naver product?**
No. This Actor is an independent tool and is not affiliated with or endorsed by Naver Corporation.

**Something is wrong or missing?**
Open an issue on the **Issues** tab. Feature requests are welcome.

# Actor input Schema

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

Keywords to look up on Naver, usually in Korean (e.g. 선크림, 캠핑의자). Spaces are ignored, because Naver treats '캠핑 의자' and '캠핑의자' as the same keyword. English brand names work too.

## `includeRelated` (type: `boolean`):

Also return the related keyword ideas Naver suggests for each keyword, with their own search volumes. Turn off to get only the volumes of your keywords (faster and cheaper).

## `maxRelatedPerKeyword` (type: `integer`):

Upper limit of related keywords returned for each input keyword. Naver usually suggests several hundred. Each returned keyword is one billed result.

## `sortRelatedBy` (type: `string`):

Relevance keeps Naver's own order, which puts the closest matches first. Volume puts the most searched keywords first. The limit above is applied after sorting.

## `relatedMustContainSeed` (type: `boolean`):

Keep only related keywords that contain your keyword, e.g. 캠핑의자추천 or 경량캠핑의자 for 캠핑의자. Useful for SEO long-tail research.

## `includeBidEstimates` (type: `boolean`):

Add Naver's estimated cost-per-click bids for each keyword: the bid needed for ad position 1 and 3, and the median bid, on PC and mobile, in KRW (median also in USD). Billed at a higher per-keyword price.

## `minMonthlySearches` (type: `integer`):

Skip related keywords with fewer total monthly searches (PC + mobile) than this. Your own keywords are always returned.

## `naverCustomerId` (type: `string`):

Your Naver SearchAd customer ID (numbers only).

## `naverApiKey` (type: `string`):

The access license from the Naver SearchAd API Manager.

## `naverSecretKey` (type: `string`):

The secret key from the Naver SearchAd API Manager.

## Actor input object example

```json
{
  "keywords": [
    "선크림",
    "캠핑의자",
    "아이폰16"
  ],
  "includeRelated": true,
  "maxRelatedPerKeyword": 50,
  "sortRelatedBy": "relevance",
  "relatedMustContainSeed": false,
  "includeBidEstimates": false,
  "minMonthlySearches": 0
}
```

# Actor output Schema

## `results` (type: `string`):

One row per keyword: monthly Naver searches (PC and mobile), ad competition, CTR, and optional CPC bid estimates in KRW and USD.

# 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": [
        "선크림",
        "캠핑의자",
        "아이폰16"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("andong-keyword-lab/naver-keyword-volume").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": [
        "선크림",
        "캠핑의자",
        "아이폰16",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("andong-keyword-lab/naver-keyword-volume").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": [
    "선크림",
    "캠핑의자",
    "아이폰16"
  ]
}' |
apify call andong-keyword-lab/naver-keyword-volume --silent --output-dataset

```

## MCP server setup

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

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/ry8HHAFnppAtj3Esz/builds/YHeUN0jXrFkaNiAEW/openapi.json
