Naver AI Overview API
The Naver AI Overview API allows you to scrape the contents of the "AI Briefing" section in Naver search results, if they are not already included in the AI Briefing Results of a regular web search.
The API endpoint is https://serpapi.com/search?engine=naver_ai_overview
Head to the playground for a live and interactive demo.
New Naver AI Mode API
You can now use the Naver AI Mode API to fetch results from the Naver AI Mode Tab.
API Parameters
Advanced Filters
page_token
Optional
Parameter defines the token needed to retrieve the business AI Briefing. Use ai_briefing.page_token from our Naver Search API.
page_token and query parameters can't be used together.
Serpapi Parameters
device
Optional
Parameter defines the device to use to get the results. It can be set to desktop (default) to use a regular browser, tablet to use a tablet browser (currently using iPads), or mobile to use a mobile browser.
no_cache
Optional
Parameter will force SerpApi to fetch the Naver AI Overview results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to false (default) to allow results from the cache, or true to disallow results from the cache. no_cache and async parameters should not be used together.
async
Optional
Parameter defines the way you want to submit your search to SerpApi. It can be set to false (default) to open an HTTP connection and keep it open until you got your search results, or true to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.
zero_trace
Optional
Enterprise only. Parameter enables ZeroTrace mode. It can be set to false (default) or true. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.
output
Optional
Parameter defines the format of the result. It can be set to json (default) to get a structured JSON of the results, html to get the raw HTML retrieved, or md to get a markdown-formatted version optimized for LLMs and AI agents.
json_restrictor
Optional
Parameter defines the fields you want to include in the output, reducing payload size for faster response. See the JSON Restrictor documentation for more details.
API Results
JSON Results
JSON output includes structured data for text_blocks, media and references.
A search status is accessible through search_metadata.status.
It flows this way: Processing -> Success || Error.
If a search has failed, error will contain an error message.
search_metadata.id is the search ID inside SerpApi.
HTML Results
HTML output is useful to debug JSON results or support features not yet supported by SerpApi. It gives you the raw HTML results from Naver AI Overview.
Markdown Results
Markdown output is optimized for LLMs and AI agents. It provides most of the same informational content as JSON
in a token-efficient format using tables, markdown links, and YAML frontmatter.
To access, use the output=md parameter, the /search.md endpoint, or request header Accept: text/markdown.
API Examples
Example with table response for query: table comparing ruby and javascript
{
...
"markdown": "Ruby와 JavaScript는 각각 고유한 특징을 가진 프로그래밍 언어이며, 사용 목적과 개발 환경에 따라 적합성이 달라집니다.\n\n### Ruby와 JavaScript의 특징 비교[1] [8]\n\n| 특징 | Ruby | JavaScript |\n|---|---|---|\n| 주요 용도 | 스크립팅 언어, 웹 개발 등 | 동적 웹 애플리케이션 개발, 웹 페이지 상호작용 |\n| 특징 | 객체 지향적 접근, 표현력 중시 | 동적 언어, 브라우저 환경에서 널리 사용됨 |\n| 관련 정보 | Bundler를 사용하여 Bootstrap 설치 가능 | Node.js 환경에서 사용되며, DOM 조작에 활용됨 |\n\nRuby는 스크립팅 및 동적 언어 중 하나로 언급되며, JavaScript는 동적 웹 애플리케이션 개발에 필수적인 언어로 설명됩니다.[8]\n\n### 언어별 활용 및 관련 정보\n\n* Ruby: RubyGems를 통해 Bootstrap을 설치할 수 있는 방법이 있으며[2], Ruby는 다중 언어 환경인 Jupyter Notebook에서 사용될 수 있습니다.[6] 또한, `daff` 라이브러리는 Ruby를 지원하는 타겟을 가지고 있습니다.[9]\n* JavaScript: JavaScript는 동적 웹 애플리케이션 개발에 있어 거의 필수적인 언어로 간주되며[8], 브라우저 환경에서 DOM(Document Object Model)을 다루는 데 사용됩니다.[4] JavaScript는 콜백, 프로미스, 비동기 함수 등 다양한 프로그래밍 패러다임을 지원합니다.[4]\n\n두 언어 모두 다양한 개발 환경에서 사용될 수 있으며, 예를 들어 Jupyter Notebook과 같은 환경에서는 여러 언어를 함께 사용할 수 있도록 시스템을 구축할 수 있습니다.[6]",
"text_blocks": [
{
"type": "paragraph",
"snippet": "Ruby와 JavaScript는 각각 고유한 특징을 가진 프로그래밍 언어이며, 사용 목적과 개발 환경에 따라 적합성이 달라집니다."
},
{
"type": "header",
"level": 3,
"snippet": "Ruby와 JavaScript의 특징 비교",
"reference_indexes": [
1,
8
]
},
{
"type": "table",
"table": [
[
"특징",
"Ruby",
"JavaScript"
],
[
"주요 용도",
"스크립팅 언어, 웹 개발 등",
"동적 웹 애플리케이션 개발, 웹 페이지 상호작용"
],
[
"특징",
"객체 지향적 접근, 표현력 중시",
"동적 언어, 브라우저 환경에서 널리 사용됨"
],
[
"관련 정보",
"Bundler를 사용하여 Bootstrap 설치 가능",
"Node.js 환경에서 사용되며, DOM 조작에 활용됨"
]
],
"formatted": [
{
"특징": "주요 용도",
"ruby": "스크립팅 언어, 웹 개발 등",
"java_script": "동적 웹 애플리케이션 개발, 웹 페이지 상호작용"
},
{
"특징": "특징",
"ruby": "객체 지향적 접근, 표현력 중시",
"java_script": "동적 언어, 브라우저 환경에서 널리 사용됨"
},
{
"특징": "관련 정보",
"ruby": "Bundler를 사용하여 Bootstrap 설치 가능",
"java_script": "Node.js 환경에서 사용되며, DOM 조작에 활용됨"
}
]
},
{
"type": "paragraph",
"snippet": "Ruby는 스크립팅 및 동적 언어 중 하나로 언급되며, JavaScript는 동적 웹 애플리케이션 개발에 필수적인 언어로 설명됩니다.",
"reference_indexes": [
8
]
},
{
"type": "header",
"level": 3,
"snippet": "언어별 활용 및 관련 정보"
},
{
"type": "list",
"list_type": "unordered",
"list": [
{
"snippet": "Ruby: RubyGems를 통해 Bootstrap을 설치할 수 있는 방법이 있으며, Ruby는 다중 언어 환경인 Jupyter Notebook에서 사용될 수 있습니다. 또한, `daff` 라이브러리는 Ruby를 지원하는 타겟을 가지고 있습니다.",
"reference_indexes": [
2,
6,
9
]
},
{
"snippet": "JavaScript: JavaScript는 동적 웹 애플리케이션 개발에 있어 거의 필수적인 언어로 간주되며, 브라우저 환경에서 DOM(Document Object Model)을 다루는 데 사용됩니다. JavaScript는 콜백, 프로미스, 비동기 함수 등 다양한 프로그래밍 패러다임을 지원합니다.",
"reference_indexes": [
4,
8
]
}
]
},
{
"type": "paragraph",
"snippet": "두 언어 모두 다양한 개발 환경에서 사용될 수 있으며, 예를 들어 Jupyter Notebook과 같은 환경에서는 여러 언어를 함께 사용할 수 있도록 시스템을 구축할 수 있습니다.",
"reference_indexes": [
6
]
}
],
...
}
Example with code block response for query: how to code a pie chart in python
{
...
"markdown": "Python에서 파이 차트를 생성하는 방법은 주로 Matplotlib 라이브러리를 사용하는 것입니다.\n\n### 파이 차트 생성 방법 및 관련 정보\n파이 차트는 전체에 대한 각 범주의 비율을 원형 그래프의 조각으로 나타내는 통계적 그래픽입니다.[7] Python에서 파이 차트를 만들 때는 `matplotlib.pyplot` 모듈을 사용하며, `plt.pie()` 함수를 활용할 수 있습니다.[7]\n\n### 파이 차트 구현 예시\n파이 차트를 생성하기 위해서는 먼저 Matplotlib을 설치해야 하며, `pip install matplotlib` 명령어를 터미널에서 실행하여 설치할 수 있습니다.[7]\n\n```python\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\n# 데이터프레임 생성\ndata = {'Product': ['Product A', 'Product B', 'Product C', 'Product D'], 'Sales': [350, 450, 300, 600]}\ndf = pd.DataFrame(data)\n\n# 파이 차트 그리기\nplt.pie(df['Sales'], labels=df['Product'])\nplt.show()\n```\n이 예시에서는 'Product' 열에 제품 이름을, 'Sales' 열에 해당 판매 수치를 사용하여 파이 차트를 시각화합니다.[7]\n\n### 데이터 시각화 관련 라이브러리 및 기능\nPython은 데이터 과학, 웹 개발, 자동화 등 다양한 분야에 사용되며, 파이 차트 외에도 선 그래프, 막대 그래프, 히스토그램, 3D 플롯 등 다양한 데이터 시각화를 지원합니다.[2]\n\n* Matplotlib: 파이 차트와 같은 다양한 차트와 플롯을 생성하고 스타일을 사용자 정의하는 데 사용되는 핵심 라이브러리입니다.[1] [7]\n* Pandas: 범주형 데이터의 분포를 확인하기 위해 `.value_counts()` 메서드를 사용하여 각 범주의 개수나 비율을 계산할 수 있으며, 이를 통해 파이 차트를 만들 수 있습니다.[4]\n* Seaborn: Matplotlib과 함께 사용되어 데이터 시각화를 돕는 패키지 중 하나입니다.[5]\n\n또한, Micro:bit 환경에서는 막대 차트나 파이 차트를 사용하여 집계된 데이터를 시각화할 수 있으며, 파이 차트 옵션은 음수가 아닌 데이터에 대해서만 사용할 수 있습니다.[9]",
"text_blocks": [
{
"type": "paragraph",
"snippet": "Python에서 파이 차트를 생성하는 방법은 주로 Matplotlib 라이브러리를 사용하는 것입니다."
},
{
"type": "header",
"level": 3,
"snippet": "파이 차트 생성 방법 및 관련 정보"
},
{
"type": "paragraph",
"snippet": "파이 차트는 전체에 대한 각 범주의 비율을 원형 그래프의 조각으로 나타내는 통계적 그래픽입니다. Python에서 파이 차트를 만들 때는 `matplotlib.pyplot` 모듈을 사용하며, `plt.pie()` 함수를 활용할 수 있습니다.",
"reference_indexes": [
7
]
},
{
"type": "header",
"level": 3,
"snippet": "파이 차트 구현 예시"
},
{
"type": "paragraph",
"snippet": "파이 차트를 생성하기 위해서는 먼저 Matplotlib을 설치해야 하며, `pip install matplotlib` 명령어를 터미널에서 실행하여 설치할 수 있습니다.",
"reference_indexes": [
7
]
},
{
"type": "code",
"language": "python",
"code": "import matplotlib.pyplot as plt\nimport pandas as pd\n\n# 데이터프레임 생성\ndata = {'Product': ['Product A', 'Product B', 'Product C', 'Product D'], 'Sales': [350, 450, 300, 600]}\ndf = pd.DataFrame(data)\n\n# 파이 차트 그리기\nplt.pie(df['Sales'], labels=df['Product'])\nplt.show()"
},
{
"type": "paragraph",
"snippet": "이 예시에서는 'Product' 열에 제품 이름을, 'Sales' 열에 해당 판매 수치를 사용하여 파이 차트를 시각화합니다.",
"reference_indexes": [
7
]
},
{
"type": "header",
"level": 3,
"snippet": "데이터 시각화 관련 라이브러리 및 기능"
},
{
"type": "paragraph",
"snippet": "Python은 데이터 과학, 웹 개발, 자동화 등 다양한 분야에 사용되며, 파이 차트 외에도 선 그래프, 막대 그래프, 히스토그램, 3D 플롯 등 다양한 데이터 시각화를 지원합니다.",
"reference_indexes": [
2
]
},
{
"type": "list",
"list_type": "unordered",
"list": [
{
"snippet": "Matplotlib: 파이 차트와 같은 다양한 차트와 플롯을 생성하고 스타일을 사용자 정의하는 데 사용되는 핵심 라이브러리입니다.",
"reference_indexes": [
1,
7
]
},
{
"snippet": "Pandas: 범주형 데이터의 분포를 확인하기 위해 `.value_counts()` 메서드를 사용하여 각 범주의 개수나 비율을 계산할 수 있으며, 이를 통해 파이 차트를 만들 수 있습니다.",
"reference_indexes": [
4
]
},
{
"snippet": "Seaborn: Matplotlib과 함께 사용되어 데이터 시각화를 돕는 패키지 중 하나입니다.",
"reference_indexes": [
5
]
}
]
},
{
"type": "paragraph",
"snippet": "또한, Micro:bit 환경에서는 막대 차트나 파이 차트를 사용하여 집계된 데이터를 시각화할 수 있으며, 파이 차트 옵션은 음수가 아닌 데이터에 대해서만 사용할 수 있습니다.",
"reference_indexes": [
9
]
}
],
...
}
Example with Page Token for query: SIGNIEL SEOUL
{
...
"markdown": "사용자들의 리뷰를 바탕으로 요약했습니다.\n- **시설 정보:** 라운지에서는 다양한 음료와 커피, 핑거푸드가 상시 제공됩니다. 수영장 이용 시 가운을 미리 챙기면 편리합니다. [1][2][3]\n- **객실 정보:** 욕실에 세면대가 두 개 있어 동시 사용이 가능하고, 옆에 화장대와 다이슨 헤어드라이어가 구비되어 있습니다. 어메니티는 딥디크 제품으로 제공됩니다. 객실에서 시티뷰가 펼쳐져 야경을 감상할 수 있습니다. [4][5][6][7]\n- **다이닝 정보:** 하루 3회 티타임과 와인 타임에 무제한 와인이 제공되며, 애프터눈 티 세트도 마련되어 있습니다. [8][9]",
"text_blocks": [
{
"type": "paragraph",
"snippet": "사용자들의 리뷰를 바탕으로 요약했습니다."
},
{
"type": "list",
"list_type": "unordered",
"list": [
{
"snippet": "시설 정보: 라운지에서는 다양한 음료와 커피, 핑거푸드가 상시 제공됩니다. 수영장 이용 시 가운을 미리 챙기면 편리합니다.",
"snippet_highlighted_words": [
"시설 정보:"
],
"reference_indexes": [
1,
2,
3
]
},
{
"snippet": "객실 정보: 욕실에 세면대가 두 개 있어 동시 사용이 가능하고, 옆에 화장대와 다이슨 헤어드라이어가 구비되어 있습니다. 어메니티는 딥디크 제품으로 제공됩니다. 객실에서 시티뷰가 펼쳐져 야경을 감상할 수 있습니다.",
"snippet_highlighted_words": [
"객실 정보:"
],
"reference_indexes": [
4,
5,
6,
7
]
},
{
"snippet": "다이닝 정보: 하루 3회 티타임과 와인 타임에 무제한 와인이 제공되며, 애프터눈 티 세트도 마련되어 있습니다.",
"snippet_highlighted_words": [
"다이닝 정보:"
],
"reference_indexes": [
8,
9
]
}
]
}
],
"references": [
{
"index": 1,
"snippet": "라운지에는 항상 다양한 음료와 커피, 간단한 핑거푸드가 마련되어 있고요. 하루 3번 티타임/와인 타임에는 좀 더 풍성하게 준비됩니다. 특히 하이라이트는 노을 지는 저녁 2시간의 무제한 와인 타임",
"link": "https://blog.naver.com/art-dine/224327492629",
"source": "다인",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyMzA4MTdfMjg1/MDAxNjkyMjUzMjIxMzU3.jgkHBliVsaIlQSuix-8ZaEmuCNEIYcIgBH1Y5NOxJQog.SMA-rRL4GsHo2GuHlnf3pBbotYhLomcVXlXWKpEJzjQg.JPEG.lalee0313/profileImage.jpg",
"date": "26.06.25."
},
{
"index": 2,
"snippet": "시그니엘 수영장 85F 통창으로 도심·산 뷰가 한눈에 볼 수 있고 레인이 있는 라운지풀이라 가볍게 수영하기에도 좋았어요 수심은 163 성인 여자 기준 가슴까지 오는 정도여서 마냥 낮지는 않더라고요!",
"link": "https://blog.naver.com/ribbon1209/224328758006",
"source": "언듀",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNTAyMDFfMTg5/MDAxNzM4NDExMTc4MzUy.WLCuFTgWqZWkobMhgFBfHeFWkhnUB9vn4DLLwanohBYg.rtQRpECZZpDwFT28XEkWx_73PAJVVQAGJi6FDpSUaHkg.PNG/profileImage.png",
"date": "26.06.27."
},
{
"index": 3,
"snippet": "다른 곳은 주류주는 라운지 이용하려면 이그제큐티브라운지 포함으로 결제를 해야하는데 룸안에 포함이라 굿이실게요.",
"link": "https://blog.naver.com/1225_79/224315796872",
"source": "냥냥이",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNTAzMjNfMTY3/MDAxNzQyNzA1NDE0MTg5.oSouXbBpriArFJESslsyjcK5qZlCpt_A1fPqSRM9POkg.ljF_kaHWh18crDBdx5hUApYokkw4Hl01TlO8hDwMoPgg.JPEG/profileImage.jpg",
"date": "26.06.14."
},
{
"index": 4,
"snippet": "욕실은 들어가기도 전에 뷰가 기대됐고요 멀리서부터 딥디크인 어메니티 취저에요 세면대도 두개라서 각자 같이 양치하기 좋고 왼편으로는 작은 화장대같은 공간이 있어서 편하게 화장하고 머리말리기 좋았어요",
"link": "https://blog.naver.com/pearl2727_/224330883250",
"source": "쥬쥬",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNTA4MjlfODkg/MDAxNzU2NDM5NTMzMDUx.tJJLQJ3QbN1diB5dAyaaMYpaw-VgfYNp0Pk3lckVVk0g.PKRJe6_CilYlaA723ID43uZ7N3NqbDSvoCDYJpZs0Psg.PNG/profileImage.png",
"date": "26.06.29."
},
{
"index": 5,
"snippet": "욕실 세면대가 두개라서 편했고요! 사진엔 안 나오지만, 세면대 맞은편에 화장대가 있어요 다이슨 헤어드라이어도 마련되어 있습니다",
"link": "https://blog.naver.com/moondiary_/224326753096",
"source": "봄찬",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNDA4MTZfNDMg/MDAxNzIzNzQzNzkzMTA4.letCUO_ocYb3DtqyGac19IiB_3JzP3qf_UT1l14vlrYg.nxjxG49s3QW1Z6RTT1etBclipyPl9hWpDvWlBYBXvssg.JPEG/profileImage.jpg",
"date": "26.06.25."
},
{
"index": 6,
"snippet": "어메니티 구성은 딥디크 제품으로 준비되어있고, 향은 무난했구요 욕실 고급미 뿜뿜 -",
"link": "https://blog.naver.com/yoonny_tami/224325940122",
"source": "템미",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNTA0MjNfMTc2/MDAxNzQ1Mzg2NTg2MDM3.Z0iIdo1MWr0ImCRG1buIa0ONCEye1GBtBJCuZLoeUUYg.20lSj2XlY0ww-iLXlitW0KcN5ki8fS8KMVNw0MZq2j4g.PNG/profileImage.png",
"date": "26.06.24."
},
{
"index": 7,
"snippet": "어메니티는 딥티크 제품이 준비되어 있었는데 향도 고급스럽고 사용감도 만족스러웠습니다.",
"link": "https://blog.naver.com/8jzopmqkq/224328350303",
"source": "90년생대표변호사",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNTA4MTBfMjAy/MDAxNzU0ODA0ODE5OTEw.3CXwg9pHI_yMGvi8ScH3IKNNR5nPnH83cXkFc0cClMwg.G0quLKRbUJdksLYAB3GDUSjhNQGM0L4clyEZyBrV3cIg.PNG/1742197236.png/1742197236.png",
"date": "26.06.26."
},
{
"index": 8,
"snippet": "시그니엘 서울 라운지 애프터눈티 메뉴",
"link": "https://blog.naver.com/jenny_good/224311723596",
"source": "달콤한제니",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAxODEwMTZfMzQg/MDAxNTM5NjkwMjA0MjU0.NSr1LC2tNqQjRmmdOgECX9OH-0kNIYEKRzXB1aGsXqgg.rk70NJeryIoP0p0DLO9wToMnMpqKmoI7dvYcgsfDbRUg.JPEG.jenny_good/profileImage.jpg",
"date": "26.06.10."
},
{
"index": 9,
"snippet": "호텔 결혼식 중에서 가장 만족스러웠던 파인다이닝 코스 는 미슐랭 3스타 셰프의 디렉팅으로 완성된 코스요리에요!",
"link": "https://blog.naver.com/zoeful-/224314114553",
"source": "조이한 세상",
"source_icon": "https://blogpfthumb-phinf.pstatic.net/MjAyNjA0MDlfMzYg/MDAxNzc1NzEyMTQ2NTY1.24by_-VT_hYGPGH96rTLCQO8bPC90xtFkumch_ji6Hcg.yqAXu4-LSxq6gPZyI554L5Zx3z1eMvqoj7Xt0y8Rffkg.PNG/Gemini_Generated_Image_srn52psrn52psrn5.png/Gemini_Generated_Image_srn52psrn52psrn5.png",
"date": "26.06.12."
}
]
}
JSON Structure Overview
{
...
"markdown": "String - Markdown formatted text representing the main content",
"text_blocks": [
{
"type": "String - Type of the text block. Can be 'header', 'paragraph', 'list', 'table', 'code'",
"snippet": "String - Snippet of the text block",
"snippet_highlighted_words": "Array of Strings - Highlighted words in the snippet",
"reference_indexes": "Array of Integers - Indexes of references related to this text block",
// Only for 'header' type
"level": "Integer - Level of the header (1-6)",
// Only for 'list' type
"list_type": "String - Type of the list. Can be 'ordered' or 'unordered'",
"list": [
{
"position": "Integer - Position of the list item (only for ordered lists)",
"snippet": "String - Snippet of the list item",
"snippet_highlighted_words": "Array of Strings - Highlighted words in the snippet",
"reference_indexes": "Array of Integers - Indexes of references related to this list item"
}
],
// Only for 'table' type
"table": [
[
"String - Table header cell",
...
],
[
"String - Table row cell",
...
],
...
],
"formatted": [
{
"header_cell_snake_case": "String - Value from the corresponding column for this row"
},
...
],
// Only for 'code' type
"language": "String - Programming language of the code block",
"code": "String - Code snippet"
}
],
"references": [
{
"index": "Integer - Index of the reference",
"title": "String - Title of the reference",
"snippet": "String - Snippet of the reference",
"link": "String - URL of the reference",
"source": "String - Source name of the reference",
"source_icon": "String - URL of the source icon",
"date": "String - Date of the reference (if available)"
},
...
],
"media": [
{
"position": "Integer - Position of the media in the list",
"type": "String - Type of the media. Can be 'image' or 'longform'",
"title": "String - Title of the media",
"name": "String - Name of the source or author",
"link": "String - URL of the media",
"thumbnail": "String - URL of the media thumbnail",
"platform": "String - Platform name of the media"
},
...
],
"related_questions": [
{
"question": "String - Related question",
"serpapi_link": "String - SerpApi link for the related question"
},
...
],
...
}