<!-- twin of https://specstream.ai/migrate/naver -->
# Naver Search API compatible: both header forms, $1 per 1,000

Compared on Nov 13, 2026. The page: https://specstream.ai/migrate/naver

Naver's Search API stops at 25,000 calls a day, and its NAVER API HUB form at 775,000 a month, with no way to raise the limit. SpecStream answers the same `webkr` and `news` calls for $1 per 1,000 searches, with no daily limit.

The switch is one address: `https://api.specstream.ai/naver` in place of `https://openapi.naver.com` or `https://naverapihub.apigw.ntruss.com`. Your SpecStream key goes in the `X-Naver-Client-Secret` or the `X-NCP-APIGW-API-KEY` header, and your parser stays.

The results come from the SpecStream Search API, which scores 97.9 F-score on all 1,000 SimpleQA Verified questions. New accounts get $10 of credit, no card.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-naver&utm_source=alternatives-md&utm_campaign=migrate-naver&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dnaver) New accounts get $10 of credit, no card. It covers 10,000 searches.

## Naver Search API to SpecStream, header by header and field by field

| | SpecStream | Naver Search API |
|---|---|---|
| Address, Developers Center form | `GET https://api.specstream.ai/naver/v1/search/webkr.json` and `news.json`, or `.xml` | `GET https://openapi.naver.com/v1/search/webkr.json` and `news.json`, or `.xml` |
| Address, NAVER API HUB form | `GET https://api.specstream.ai/naver/search/v1/webkr` and `/news`, with `format=json` or `format=xml` | `GET https://naverapihub.apigw.ntruss.com/search/v1/webkr` and `/news` |
| The key | One SpecStream key in `X-Naver-Client-Secret` or `X-Naver-Client-Id`, or in `X-NCP-APIGW-API-KEY` or `X-NCP-APIGW-API-KEY-ID`. Sent in both headers, it works too | A Client ID and a Client Secret for each registered application. Developers Center credentials do not work on NAVER API HUB, which issues new ones |
| Price | $1 per 1,000 searches of up to 10 results. Credit you buy never expires | Free inside the limits. NAVER API HUB is free for a limited time, and Naver will announce the move to paid in advance |
| Limit | No daily limit and no limit per key | 25,000 calls a day on the Search API. On NAVER API HUB, 775,000 calls a month across the search category and 50 requests a second per key. At the monthly limit calls are blocked, and the limit cannot be raised during the free period |
| `display` | 1 to 100, 10 when you send none | Default 10, maximum 100 |
| `start` | 1 to 1000, 1 when you send none | Default 1, maximum 1000 |
| `sort` on news | `sim` or `date` | `sim` by default, or `date` |
| The reply | `lastBuildDate`, `total`, `start`, `display` and `items[]` with `title`, `link` and `description`, plus `originallink` and `pubDate` on news. Query words are in `<b>` tags, as Naver prints them | `lastBuildDate`, `total`, `start`, `display` and `items[]` with `title`, `link` and `description`, plus `originallink` and `pubDate` on news |
| Where results come from | The SpecStream Search API, on the live web | Naver's search results for web documents and news |

## The Naver Search API reference, on SpecStream

### The call, before and after, in both header forms

Code written for the Developers Center sends `X-Naver-Client-Id` and `X-Naver-Client-Secret` to `openapi.naver.com`. Change the host and put your SpecStream key where the secret was.

```
# Before
curl -G "https://openapi.naver.com/v1/search/webkr.json" \
  --data-urlencode "query=전기차 보조금" -d display=10 -d start=1 \
  -H "X-Naver-Client-Id: $NAVER_CLIENT_ID" -H "X-Naver-Client-Secret: $NAVER_CLIENT_SECRET"

# After
curl -G "https://api.specstream.ai/naver/v1/search/webkr.json" \
  --data-urlencode "query=전기차 보조금" -d display=10 -d start=1 \
  -H "X-Naver-Client-Id: $SPECSTREAM_API_KEY" -H "X-Naver-Client-Secret: $SPECSTREAM_API_KEY"
```

Code written for NAVER API HUB sends `X-NCP-APIGW-API-KEY-ID` and `X-NCP-APIGW-API-KEY` to `naverapihub.apigw.ntruss.com`. The same base address answers it.

```
# Before
curl -G "https://naverapihub.apigw.ntruss.com/search/v1/news" \
  --data-urlencode "query=전기차 보조금" -d display=10 -d sort=date -d format=json \
  -H "X-NCP-APIGW-API-KEY-ID: $NCP_CLIENT_ID" -H "X-NCP-APIGW-API-KEY: $NCP_CLIENT_SECRET"

# After
curl -G "https://api.specstream.ai/naver/search/v1/news" \
  --data-urlencode "query=전기차 보조금" -d display=10 -d sort=date -d format=json \
  -H "X-NCP-APIGW-API-KEY-ID: $SPECSTREAM_API_KEY" -H "X-NCP-APIGW-API-KEY: $SPECSTREAM_API_KEY"
```

A client that sends two different values is read this way: a header that holds a SpecStream key wins, then the secret, then the ID. So you can leave the ID header as it is and change the secret alone.

### Every parameter the route uses

Used in the search: `query`, `display` (1 to 100, default 10), `start` (1 to 1000, default 1) and, on news, `sort` (`sim` for relevance, `date` for newest first). On the NAVER API HUB form, `format` is `json` or `xml`.

Refused in Naver's own words, with HTTP 400: a `display` out of range gets `SE02`, a `start` out of range `SE03`, a `sort` other than `sim` or `date` `SE04`, and a `format` other than `json` or `xml` `SE01`.

The route answers `webkr` and `news`. Naver's other search categories, such as blog, cafe, image and shopping, have no route here.

### Every field that comes back

The JSON reply has `lastBuildDate`, `total`, `start`, `display` and `items`. A web item has `title`, `link` and `description`. A news item has `title`, `originallink`, `link`, `description` and `pubDate`. Dates are in Naver's form and in Korean time, for example `Wed, 28 Sep 2016 16:43:34 +0900`.

The XML reply is Naver's RSS document: `rss`, `channel` with `title`, `link`, `description`, `lastBuildDate`, `total`, `start`, `display`, and one `item` for each result. Ask for it with `.xml` in the path on the Developers Center form, or `format=xml` on the NAVER API HUB form.

`title` and `description` are HTML escaped and carry each query word in `<b>` tags, so code that strips or shows the tags works as before. On a news item `originallink` and `link` both hold the address of the article on the publisher's site.

### Errors in the form your client reads

The Developers Center form answers Naver's `{"errorMessage", "errorCode"}`: `024` with HTTP 401 for a missing or wrong key, and `012` with HTTP 429 when search is busy. The NAVER API HUB form answers the gateway's `{"error": {"errorCode", "message", "details"}}`: `200` Authentication Failed with 401, `210` Permission Denied with 402 or 403, and `410` Throttle Limited with 429.

A 429 carries a `Retry-After` header and charges nothing. A 402 means the balance is empty.

### $1 per 1,000 searches, with no daily limit

A call of up to 10 results costs $0.001, on web and on news, in JSON or XML. Each started block of 10 more results adds $0.0012: `display` 20 costs $0.0022, `display` 50 costs $0.0058 and `display` 100 costs $0.0118. A call stopped by a 429 charges nothing, and credit you buy never expires.

Naver's daily limit of 25,000 calls is 25,000 searches of 10 results. On SpecStream that day costs $25, and the next call after it goes through.

### The most accurate web search API, in about one second

On SimpleQA Verified the SpecStream Search API scores 97.9 F-score on all 1,000 official questions, 978 of them correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=migrate-naver) page.

Every call on this route runs the fast search. Measured on production on November 9, 2026, its median was 0.82 s at 1 search a second and 1.07 s at 20 a second, the 95th percentile stayed between 1.09 and 1.73 s, and it answered 718 of 720. It has no limit per key and no daily limit.

### You decide what is kept, on each key

Create the key with `zero_retention` and a search made with it keeps no request text and no answer after the reply: it is not in the history, its answer is not reused for another call, and its log lines carry neither. `spend_cap_cents` is the most the key can spend.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'
```

### Search, pages and rows on one key

The same key reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-naver) at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-naver) returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The most a run can cost is approved before it starts.

## What else Naver Search API users price

### Brave Search API

A search API on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month and 50 queries per second. SpecStream answers Brave's call at `https://api.specstream.ai/res/v1/web/search` at $1 per 1,000, a fifth of Brave's rate, and has no limit per key.

### Tavily

A search API sold in credits at $0.008 each pay as you go: a basic search takes 1 credit and an advanced search 2. SpecStream answers Tavily's `POST /search` at `https://api.specstream.ai/tavily` for $0.001 a basic search and $0.005 an advanced one.

### Exa

A search API on Exa's own index, at $7 per 1,000 requests on `auto` and $4 on `lite` for up to 10 results, with its own request and reply. SpecStream answers Exa's call as well, at `https://api.specstream.ai/exa`, for $0.001 a search.

## How to migrate, step by step

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 10,000 searches.

2. Set the host to `https://api.specstream.ai/naver` where your code has `https://openapi.naver.com`, and send the SpecStream key in the secret's header. In Python:

```
import requests

BASE = "https://api.specstream.ai/naver"  # was https://openapi.naver.com

reply = requests.get(
    f"{BASE}/v1/search/news.json",
    headers={"X-Naver-Client-Id": SPECSTREAM_KEY, "X-Naver-Client-Secret": SPECSTREAM_KEY},
    params={"query": "전기차 보조금", "display": 10, "start": 1, "sort": "date"},
    timeout=30,
)
reply.raise_for_status()
for item in reply.json()["items"]:
    print(item["title"], item["originallink"], item["pubDate"])
```

3. On NAVER API HUB code, set the same host where you have `https://naverapihub.apigw.ntruss.com`. In JavaScript:

```
const url = new URL("https://api.specstream.ai/naver/search/v1/webkr");
url.search = new URLSearchParams({ query: "전기차 보조금", display: "10", start: "1", format: "json" });
const res = await fetch(url, {
  headers: {
    "X-NCP-APIGW-API-KEY-ID": process.env.SPECSTREAM_KEY,
    "X-NCP-APIGW-API-KEY": process.env.SPECSTREAM_KEY,
  },
});
const data = await res.json();
for (const item of data.items) console.log(item.title, item.link);
```

4. Read `402` as an empty balance and `429` as a call to send again after `Retry-After`. Neither is charged.

5. When your product needs every match in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.

## Frequently asked questions

### Is there a Naver Search API compatible API?

Yes. SpecStream answers Naver's `webkr` and `news` search calls at `https://api.specstream.ai/naver` in Naver's JSON and XML, for $0.001 a search of up to 10 results. Both header forms work: `X-Naver-Client-Id` with `X-Naver-Client-Secret`, and `X-NCP-APIGW-API-KEY-ID` with `X-NCP-APIGW-API-KEY`.

### What is the Naver Search API daily limit?

25,000 calls a day on the Search API, by Naver's own reference. NAVER API HUB counts by the month: 775,000 calls across the search category and 50 requests a second per key, and the limit cannot be raised during the free period. SpecStream has no daily limit and charges $1 per 1,000 searches.

### How much does a Naver call cost on SpecStream?

$0.001 for up to 10 results, which is $1 per 1,000 searches. `display` 100 costs $0.0118. New accounts get $10 of credit with no card, which covers 10,000 searches.

### Which header takes the SpecStream key?

Any of the four. Put the key in `X-Naver-Client-Secret` or `X-Naver-Client-Id` on the Developers Center form, or in `X-NCP-APIGW-API-KEY` or `X-NCP-APIGW-API-KEY-ID` on the NAVER API HUB form. A header that holds a SpecStream key wins over one that holds another value.

### Are the results Naver's results?

No. The route returns results from the SpecStream Search API in Naver's format, so the fields and the parser stay and the ranking is SpecStream's. It scores 97.9 F-score on all 1,000 SimpleQA Verified questions.

### Does the XML form work?

Yes. `webkr.xml` and `news.xml` on the Developers Center form, and `format=xml` on the NAVER API HUB form, return Naver's RSS document with `lastBuildDate`, `total`, `start`, `display` and one `item` for each result, at the same $0.001 a call.

### Do I need new credentials to move from the Developers Center to NAVER API HUB?

On Naver, yes: its migration guide says Developers Center credentials cannot call NAVER API HUB, so you register a new application and change the address and both header names. On SpecStream one key and one base address answer both forms, at $1 per 1,000 searches.

### What happens when search is busy?

The route answers 429 with a `Retry-After` header and charges nothing. There is no limit per key and no daily limit.

## Sources

SpecStream wrote this page. Each Naver fact comes from Naver's own reference on the Developers Center and from NAVER Cloud's own API and user guides, and each other provider's figure from that company's own page. Each SpecStream line describes the route as it answers on November 13, 2026.

- [Naver Search API, web documents](https://developers.naver.com/docs/serviceapi/search/web/web.md), read Nov 13, 2026
- [Naver Search API, news](https://developers.naver.com/docs/serviceapi/search/news/news.md), read Nov 13, 2026
- [NAVER API HUB, web document search](https://api.ncloud-docs.com/docs/en/naver-api-hub-search-webkr), read Nov 13, 2026
- [NAVER API HUB overview and limits](https://guide.ncloud-docs.com/docs/apihub-overview), read Nov 13, 2026
- [NAVER API HUB migration guide](https://guide.ncloud-docs.com/docs/apihub-migration), read Nov 13, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 13, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 13, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 13, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 13, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 13, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 13, 2026
