Discover/Naver API
live

Naver APInaver.com

Search Naver across web, blog, news, cafe, video, and shopping. Returns titles, links, descriptions, and sources. Includes autocomplete suggestions.

Endpoints
2
Updated
27d ago

What is the Naver API?

The Naver API covers 2 endpoints that return structured search results and autocomplete suggestions from Korea's largest search engine. The search endpoint accepts a required query string and an optional where parameter to target one of seven content types — web, blog, news, cafe, image, video, or shopping — returning up to 10 paginated results per page with title, link, description, source, and total_results fields.

Try it
Page number for pagination (starts at 1).
Search query string.
Content type to search. Accepts exactly one of: nexearch, blog, news, cafe, image, video, shop.
api.parse.bot/scraper/59b25417-91af-4955-8c05-f24339274634/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/59b25417-91af-4955-8c05-f24339274634/search' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace naver-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
Naver Search API Client

This module provides a Python client for the Naver Search API, allowing you to search
across multiple content types and get autocomplete suggestions.

Get your API key from: https://parse.bot/settings
"""

import os
import json
import requests
from typing import Optional


class ParseClient:
    """Client for interacting with the Parse API (Naver Search)."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "59b25417-91af-4955-8c05-f24339274634"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")

    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """
        Make a request to the Parse API.

        Args:
            endpoint: The API endpoint to call (e.g., 'search', 'autocomplete')
            method: HTTP method ('GET' or 'POST')
            **params: Query parameters or request body

        Returns:
            Response data as a dictionary
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}

        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params)
        else:  # POST
            response = requests.post(url, headers=headers, json=params)

        response.raise_for_status()
        return response.json()

    def search(
        self,
        query: str,
        where: str = "nexearch",
        page: int = 1,
    ) -> dict:
        """
        Search Naver for content across multiple types.

        Args:
            query: Search query string
            where: Content type ('nexearch', 'blog', 'news', 'cafe', 'image', 'video', 'shop')
            page: Page number for pagination (starts at 1)

        Returns:
            Dictionary with search results and metadata
        """
        return self._call(
            "search",
            method="GET",
            query=query,
            where=where,
            page=page,
        )

    def autocomplete(self, query: str) -> dict:
        """
        Get autocomplete suggestions for a search query.

        Args:
            query: Query prefix to get suggestions for

        Returns:
            Dictionary with suggestions list
        """
        return self._call(
            "autocomplete",
            method="GET",
            query=query,
        )


def main():
    """Demonstrate practical usage of the Naver Search API client."""
    # Initialize the client
    client = ParseClient()

    # Workflow: Search for a topic, then get suggestions for related searches
    search_topic = "machine learning"

    print("=" * 60)
    print(f"NAVER SEARCH WORKFLOW: Exploring '{search_topic}'")
    print("=" * 60)

    # Step 1: Get autocomplete suggestions for the topic
    print(f"\n1. Getting autocomplete suggestions for '{search_topic}'...")
    autocomplete_response = client.autocomplete(search_topic)

    if autocomplete_response.get("status") == "success":
        suggestions = autocomplete_response.get("data", {}).get("suggestions", [])
        print(f"   Found {len(suggestions)} suggestions:")
        for i, suggestion in enumerate(suggestions[:5], 1):
            print(f"   {i}. {suggestion}")
    else:
        print("   Error getting suggestions")

    # Step 2: Search for blog posts about the topic
    print(f"\n2. Searching for blog posts about '{search_topic}'...")
    blog_search = client.search(query=search_topic, where="blog", page=1)

    if blog_search.get("status") == "success":
        search_data = blog_search.get("data", {})
        results = search_data.get("results", [])
        total_results = search_data.get("total_results", 0)

        print(f"   Found {total_results} blog posts (showing first {len(results)}):")
        for i, result in enumerate(results[:3], 1):
            print(f"\n   Blog Post {i}:")
            print(f"   Title: {result.get('title', 'N/A')}")
            print(f"   Source: {result.get('source', 'N/A')}")
            description = result.get("description", "N/A")
            if len(description) > 100:
                description = description[:100] + "..."
            print(f"   Description: {description}")
    else:
        print("   Error searching blog posts")

    # Step 3: Search for news articles
    print(f"\n3. Searching for news articles about '{search_topic}'...")
    news_search = client.search(query=search_topic, where="news", page=1)

    if news_search.get("status") == "success":
        search_data = news_search.get("data", {})
        results = search_data.get("results", [])

        print(f"   Found news articles (showing up to 3):")
        for i, result in enumerate(results[:3], 1):
            print(f"\n   News {i}:")
            print(f"   Title: {result.get('title', 'N/A')}")
            print(f"   Source: {result.get('source', 'N/A')}")
    else:
        print("   Error searching news")

    # Step 4: Use a suggestion from autocomplete for a new search
    if autocomplete_response.get("status") == "success":
        suggestions = autocomplete_response.get("data", {}).get("suggestions", [])
        if len(suggestions) > 2:
            related_query = suggestions[2]  # Use third suggestion
            print(f"\n4. Searching web results for related topic: '{related_query}'...")

            web_search = client.search(query=related_query, where="nexearch", page=1)

            if web_search.get("status") == "success":
                search_data = web_search.get("data", {})
                results = search_data.get("results", [])
                total_results = search_data.get("total_results", 0)

                print(f"   Found {total_results} web results (showing first 2):")
                for i, result in enumerate(results[:2], 1):
                    print(f"\n   Result {i}:")
                    print(f"   Title: {result.get('title', 'N/A')}")
                    print(f"   Link: {result.get('link', 'N/A')}")
            else:
                print("   Error searching web")

    print("\n" + "=" * 60)
    print("WORKFLOW COMPLETE")
    print("=" * 60)


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

Search Naver across multiple content types including web, blog, news, cafe, image, video, and shopping. Returns structured search results with titles, links, descriptions, and sources. Results are paginated with 10 results per page.

Input
ParamTypeDescription
pageintegerPage number for pagination (starts at 1).
queryrequiredstringSearch query string.
wherestringContent type to search. Accepts exactly one of: nexearch, blog, news, cafe, image, video, shop.
Response
{
  "type": "object",
  "fields": {
    "page": "integer",
    "query": "string",
    "where": "string",
    "results": "array of search result objects with title, link, description, and source fields",
    "total_results": "integer"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "python programming",
      "where": "blog",
      "results": [
        {
          "link": "https://blog.naver.com/jazzlubu/224260960970",
          "title": "파이썬 독학, Python 프로그래밍으로 컴퓨터 프로그래머 입문 시작",
          "source": "진실여포",
          "description": "이번 글에서는 파이썬 독학을 시작하려는 분들을 기준으로 Python 프로그래밍을 어떻게 보면 덜 어렵게 느껴지는지..."
        }
      ],
      "total_results": 10
    },
    "status": "success"
  }
}

About the Naver API

Search Endpoint

The search endpoint queries Naver across multiple content types controlled by the where parameter. Accepted values are nexearch (general web), blog, news, cafe, image, video, and shop. Each response includes a results array of objects containing title, link, description, and source, plus top-level page, query, where, and total_results fields. Pagination is handled through the page integer parameter starting at 1, with 10 results returned per page.

Autocomplete Endpoint

The autocomplete endpoint takes a query prefix string and returns up to 10 Korean-language suggestions as a flat suggestions array alongside the original query string. This is useful for building type-ahead search interfaces or discovering how Naver users phrase queries around a topic.

Coverage and Scope

Naver is the dominant search engine in South Korea, indexing Korean-language web content, blog posts (Naver Blog is a major publishing platform in Korea), news articles from Korean outlets, Naver Cafe community posts, and shopping listings. Results reflect the Korean-language web, so queries in Korean will yield the most representative results. The shop content type returns product-level results useful for Korean e-commerce research.

Reliability & maintenance

The Naver API is a managed, monitored endpoint for naver.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when naver.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official naver.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor Korean news coverage of a brand or topic by querying the news content type and tracking title and link fields over time.
  • Build a Korean-language type-ahead search widget using autocomplete suggestions responses.
  • Aggregate Naver Blog posts about a product category using the blog content type and extracting description and source fields.
  • Research Korean shopping trends by querying the shop content type and collecting product titles and links.
  • Track how Korean internet communities discuss a topic by querying the cafe content type.
  • Discover high-volume Korean search query variants by feeding seed terms into the autocomplete endpoint.
  • Collect total_results counts across content types to gauge relative interest in a keyword on the Korean web.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Naver have an official developer API?+
Yes. Naver provides the Naver Developers API (https://developers.naver.com), which includes search endpoints for news, blog, and other content types. It requires application registration and has its own quota limits.
What does the `where` parameter control, and what are the valid values?+
The where parameter selects the content type searched. Valid values are nexearch (general web results), blog, news, cafe, image, video, and shop. Only one value can be passed per request. Omitting it defaults to general web search.
Does the search endpoint return image or video media files directly?+
No. When where is set to image or video, the results array returns title, link, description, and source fields pointing to the content — it does not return binary media, thumbnails, or embeds directly. You can fork the API on Parse and revise it to extract additional media metadata fields if needed.
Is there support for filtering search results by date range or sorting by recency?+
Not currently. The search endpoint accepts query, where, and page but no date-range or sort parameters. You can fork the API on Parse and revise it to add date filtering for content types like news or blog where recency is relevant.
How deep can pagination go, and is there a cap on total pages retrievable?+
The page parameter starts at 1 and each page returns 10 results. The total_results field in the response indicates the full result count. In practice, Naver limits how many pages of results are accessible for any given query, so very high page numbers may return empty result sets regardless of total_results.
Page content last updated . Spec covers 2 endpoints from naver.com.
Related APIs in OtherSee all →
maersk.com API
Track your Maersk shipping containers in real-time, monitor vessel schedules and locations, and discover available routes between ports and countries. Access comprehensive port data, search for specific locations, and view detailed shipping route information to plan your logistics more effectively.
pexels.com API
Search and browse millions of free stock photos and videos on Pexels. Access trending content, photographer galleries, photo/video challenges, and search suggestions via a clean API.
powerball.com API
Check the latest Powerball drawing results, historical winning numbers, current jackpot amounts, and prize information all in one place. Browse past draws by date, view odds and prize breakdowns, and explore stories from winners to stay informed about your favorite lottery game.
pageviews.wmcloud.org API
Access Wikipedia pageview analytics across articles, languages, and time periods. Retrieve per-article view counts, top-viewed pages, cross-language traffic breakdowns, site-wide aggregates, category-level mass analysis, redirect traffic attribution, user contribution metrics, and Wikimedia Commons media request counts.
megamillions.com API
Check the latest Mega Millions winning numbers and jackpot amounts, browse historical drawings, and discover the top jackpots across participating lottery states. Stay updated on lottery results and track winning combinations whenever you need them.
lotteryusa.com API
Check the latest winning numbers and jackpot amounts across all US lotteries, and view detailed prize breakdowns by state and game. Stay updated on lottery results instantly without visiting multiple lottery websites.
identify.plantnet.org API
Identify and explore plant species by searching through Pl@ntNet's comprehensive botanical database to access detailed information like taxonomic families, genera, species descriptions, photos, and community observations. Track plant distributions, view contribution trends, and discover expert contributors within the platform's collaborative plant identification community.
bible.com API
Access Bible verses and chapters across multiple translations, retrieve daily devotional content, and build scripture-based applications with real-time data from Bible.com. Get specific verses, entire chapters, or the verse of the day to enhance your spiritual reading and study experience.