# Naver Keyword Trends - Korea Search & Shopping Insights (`roadster/naver-datalab-insights`) Actor

Korean keyword search trends and Naver Shopping category insights (Google Trends for Korea). Compare keywords by month, device, gender and age. Official NAVER DataLab API. Free sample.

- **URL**: https://apify.com/roadster/naver-datalab-insights.md
- **Developed by:** [yonghoon choi](https://apify.com/roadster) (community)
- **Categories:** E-commerce, SEO tools
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 data points

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 Trends — Korea Search & Shopping Insights (Official DataLab API)

**Google Trends for Korea: get Naver keyword search trends and Naver Shopping category insights.** Naver handles most searches in South Korea, so DataLab is the best source for Korean keyword popularity, seasonality and consumer demand. Compare keywords by day/week/month and split by device, gender and age, using the **official NAVER DataLab API** (no scraping, no blocks). Export to CSV, Excel or JSON for SEO, K-beauty/e-commerce research and dashboards. Run without a key to get a free sample.

> 한국어: 네이버 데이터랩 검색어 트렌드·쇼핑인사이트를 공식 API로 수집합니다.

### Report types (`mode`)

| mode | What you get |
|---|---|
| `searchTrend` | Relative search volume of up to 5 keyword groups per request (more are batched) |
| `categories` | Shopping click trend per category (up to 3 per request, batched) |
| `categoryDevice` / `categoryGender` / `categoryAge` | Category trend split by PC/mobile, gender, age |
| `categoryKeywords` | Keyword trends inside a shopping category |
| `keywordDevice` / `keywordGender` / `keywordAge` | One keyword in a category split by device, gender, age |

Filters: `startDate`, `endDate` (default: last 12 months), `timeUnit` (date/week/month), `device`, `gender`, `ages`.

### Input example

```json
{
  "mode": "searchTrend",
  "timeUnit": "month",
  "keywordGroups": [
    {"groupName": "캠핑", "keywords": ["캠핑", "텐트"]},
    {"groupName": "낚시", "keywords": ["낚시"]},
    {"groupName": "골프", "keywords": ["골프"]}
  ],
  "clientId": "<your NAVER API HUB Client ID>",
  "clientSecret": "<your Client Secret>"
}
```

Shopping example: `{"mode":"categoryGender","categories":[{"name":"패션의류","param":["50000000"]}], ...}` (category codes = `cat_id` in NAVER Shopping URLs).

### Output example (real run)

```json
{
  "mode": "searchTrend", "title": "캠핑", "categoryName": null, "category": null,
  "keywords": ["캠핑", "텐트"], "period": "2025-10-01", "group": null, "ratio": 100,
  "timeUnit": "month", "startDate": "2025-10-24", "endDate": "2026-10-24",
  "device": "all", "gender": "all", "ages": "all"
}
```

Gender/device/age modes fill `group` (e.g. `"f"`, `"m"`). `ratio` is NAVER's relative index (max = 100 within the request), not absolute volume.

### Limits & quotas

- Values are relative (0–100) per request; compare groups only inside the same request.
- Search Trend data from 2016-01-01, Shopping Insight from 2017-08-01.
- NAVER API HUB free tier: **50,000 calls/month** each for Search Trend and Shopping Insight. One request = one call.

### How to get your free NAVER API key (5 minutes)

1. Sign up / log in at [NAVER Cloud Platform](https://www.ncloud.com) (individual membership is fine).
2. Open the console: [NAVER API HUB](https://console.ncloud.com/naver-api-hub) and subscribe (free tier; no payment needed for the free quota).
3. Go to **Application > Register application**, name it (e.g. `apify`), and enable the APIs this Actor needs.
4. Open the application, tab **인증 정보 (Credentials)**, copy **Client ID** and **Client Secret**.
5. Paste them into the secret input fields of this Actor. They are stored encrypted by Apify and only used to call NAVER on your behalf.

Your key, your quota: all calls count against **your** NAVER API HUB quota, not a shared one.
Enable **검색어트렌드 (Search Trend)** and/or **쇼핑인사이트 (Shopping Insight)** for your application.

### Free sample mode

Run without a key to preview the output: the Actor returns 2–3 fixed sample rows marked `"isSample": true`, makes **no API call and charges nothing**, and logs a warning. Real rows have `"isSample": false`. Add your own key for real data.

### Pricing

Pay-per-event: **$0.80 per 1,000 data points** (one row = one period × group) plus minimal Apify platform usage.

### Official API & terms

This Actor only calls the **official NAVER API HUB** (`naverapihub.apigw.ntruss.com`) with your own credentials. It does not scrape naver.com pages, bypass logins or collect personal data. You are responsible for complying with the [NAVER Cloud Platform terms](https://www.ncloud.com/policy/terms/service) and NAVER API usage policies (display/attribution, no resale of raw data where prohibited). Not affiliated with or endorsed by NAVER.

### 한국어 요약

키 없이 실행하면 무료 샘플 데이터 2~3건(isSample=true)만 반환하며 API 호출·과금이 없습니다. 실제 데이터는 본인 키가 필요합니다.
네이버 데이터랩 공식 API로 검색어 트렌드와 쇼핑인사이트(분야/키워드별, 기기·성별·연령별)를 표 형태로 내보냅니다. 본인의 NAVER Cloud API HUB Client ID/Secret(무료)이 필요하며, 데이터 포인트 1,000개당 $0.8입니다.

# Actor input Schema

## `mode` (type: `string`):

Which NAVER DataLab report to fetch.

## `startDate` (type: `string`):

yyyy-mm-dd. Search Trend from 2016-01-01, Shopping from 2017-08-01. Default: 1 year ago.

## `endDate` (type: `string`):

yyyy-mm-dd. Default: yesterday.

## `timeUnit` (type: `string`):

Interval of data points.

## `keywordGroups` (type: `array`):

Search Trend: up to 5 groups like {"groupName":"캠핑","keywords":\["캠핑","텐트"]} (max 20 keywords each). For 'Shopping: keywords in category' each group's first keyword is used (max 5 groups). More groups are automatically split into batches.

## `categories` (type: `array`):

For category modes: list of {"name":"패션의류","param":\["50000000"]}. Codes = cat_id in Naver Shopping URLs. Single-category modes run once per entry using param\[0].

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

For keyword-by-device/gender/age modes: each keyword is queried within each category.

## `device` (type: `string`):

Filter by device.

## `gender` (type: `string`):

Filter by gender.

## `ages` (type: `array`):

Optional age codes. Shopping: 10,20,30,40,50,60. Search Trend: 1-11 (1=0-12, 2=13-18, 3=19-24 … 11=60+). Empty = all ages.

## `clientId` (type: `string`):

Your own NAVER API HUB Client ID (free; NAVER Cloud console > NAVER API HUB > Application > 인증 정보). Stored encrypted. Leave empty to get a small FREE SAMPLE dataset (isSample=true) without any API call or charge.

## `clientSecret` (type: `string`):

Your own NAVER API HUB Client Secret (free; NAVER Cloud console > NAVER API HUB > Application > 인증 정보). Stored encrypted. Leave empty to get a small FREE SAMPLE dataset (isSample=true) without any API call or charge.

## Actor input object example

```json
{
  "mode": "searchTrend",
  "startDate": "2025-10-01",
  "timeUnit": "month",
  "keywordGroups": [
    {
      "groupName": "캠핑",
      "keywords": [
        "캠핑",
        "텐트"
      ]
    },
    {
      "groupName": "낚시",
      "keywords": [
        "낚시"
      ]
    }
  ],
  "categories": [
    {
      "name": "패션의류",
      "param": [
        "50000000"
      ]
    }
  ],
  "device": "",
  "gender": ""
}
```

# Actor output Schema

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

All trend data rows

# 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 = {
    "startDate": "2025-10-01",
    "keywordGroups": [
        {
            "groupName": "캠핑",
            "keywords": [
                "캠핑",
                "텐트"
            ]
        },
        {
            "groupName": "낚시",
            "keywords": [
                "낚시"
            ]
        }
    ],
    "categories": [
        {
            "name": "패션의류",
            "param": [
                "50000000"
            ]
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("roadster/naver-datalab-insights").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 = {
    "startDate": "2025-10-01",
    "keywordGroups": [
        {
            "groupName": "캠핑",
            "keywords": [
                "캠핑",
                "텐트",
            ],
        },
        {
            "groupName": "낚시",
            "keywords": ["낚시"],
        },
    ],
    "categories": [{
            "name": "패션의류",
            "param": ["50000000"],
        }],
}

# Run the Actor and wait for it to finish
run = client.actor("roadster/naver-datalab-insights").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 '{
  "startDate": "2025-10-01",
  "keywordGroups": [
    {
      "groupName": "캠핑",
      "keywords": [
        "캠핑",
        "텐트"
      ]
    },
    {
      "groupName": "낚시",
      "keywords": [
        "낚시"
      ]
    }
  ],
  "categories": [
    {
      "name": "패션의류",
      "param": [
        "50000000"
      ]
    }
  ]
}' |
apify call roadster/naver-datalab-insights --silent --output-dataset

```

## MCP server setup

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

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/bS66iBr6tDIDMHK5f/builds/Zkd1Ri2B9rwMm1NNN/openapi.json
