--- title: "検索キーワードトレンドのユースケース" slug: "naver-api-hub-search-trend-examples" updated: 2026-09-17T09:57:20Z published: 2026-09-17T09:57:20Z canonical: "api.ncloud-docs.com/naver-api-hub-search-trend-examples" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # 検索キーワードトレンドのユースケース Classic/VPC環境で利用できます。 検索キーワードトレンド APIを使用して、テーマごとの統合検索結果の推移を照会する実装例です。 参考 - サンプルコードの`YOUR_CLIENT_ID`には、NAVERクラウドプラットフォームコンソールで発行された Client IDを、`YOUR_CLIENT_SECRET`には、その Client IDとマッピングする Client Secretを入力してください。 - Client IDと Client Secretの発行方法は、[NAVER API HUBの概要](/docs/ja/naver-api-hub-overview#API%ED%82%A4)をご参照ください。 ## 統合検索キーワードトレンドの照会 テーマでグループ化した検索キーワードについて、NAVER統合検索での検索推移を照会する検索キーワードトレンド APIのサンプルコードを説明します。リクエストボディの`keywordGroups`と検索条件(`device`、`ages`、`gender`など)を別の値に置き換えることで、同様の方法で他の検索キーワードの推移を照会することができます。 ### Java Javaベースの検索キーワードトレンド APIのサンプルコードは次の通りです。 ``` package com.naver.apihub.example; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; public class ApiExampleSearchTrend { public static void main(String[] args) { String clientId = "YOUR_CLIENT_ID"; // アプリケーションの Client ID String clientSecret = "YOUR_CLIENT_SECRET"; // アプリケーションの Client Secret String apiUrl = "https://naverapihub.apigw.ntruss.com/search-trend/v1/search"; Map requestHeaders = new HashMap<>(); requestHeaders.put("X-NCP-APIGW-API-KEY-ID", clientId); requestHeaders.put("X-NCP-APIGW-API-KEY", clientSecret); requestHeaders.put("Content-Type", "application/json"); String requestBody = "{\"startDate\":\"2026-01-01\"," + "\"endDate\":\"2026-05-31\"," + "\"timeUnit\":\"month\"," + "\"keywordGroups\":[{\"groupName\":\"ハングル\",\"keywords\":[\"ハングル\",\"korean\"]}," + "{\"groupName\":\"英語\",\"keywords\":[\"英語\",\"english\"]}]," + "\"device\":\"pc\"," + "\"ages\":[\"1\",\"2\"]," + "\"gender\":\"f\"}"; String responseBody = post(apiUrl, requestHeaders, requestBody); System.out.println(responseBody); } private static String post(String apiUrl, Map requestHeaders, String requestBody) { HttpURLConnection con = connect(apiUrl); try { con.setRequestMethod("POST"); for (Map.Entry header : requestHeaders.entrySet()) { con.setRequestProperty(header.getKey(), header.getValue()); } con.setDoOutput(true); try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) { wr.write(requestBody.getBytes(StandardCharsets.UTF_8)); wr.flush(); } int responseCode = con.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 正常にレスポンス return readBody(con.getInputStream()); } else { // エラーを返す return readBody(con.getErrorStream()); } } catch (IOException e) { throw new RuntimeException("APIリクエストおよびレスポンス失敗", e); } finally { con.disconnect(); } } private static HttpURLConnection connect(String apiUrl) { try { URL url = new URL(apiUrl); return (HttpURLConnection) url.openConnection(); } catch (MalformedURLException e) { throw new RuntimeException("無効な API URLです。: " + apiUrl, e); } catch (IOException e) { throw new RuntimeException("接続できません。: " + apiUrl, e); } } private static String readBody(InputStream body) { InputStreamReader streamReader = new InputStreamReader(body, StandardCharsets.UTF_8); try (BufferedReader lineReader = new BufferedReader(streamReader)) { StringBuilder responseBody = new StringBuilder(); String line; while ((line = lineReader.readLine()) != null) { responseBody.append(line); } return responseBody.toString(); } catch (IOException e) { throw new RuntimeException("APIレスポンスを読み取れません。", e); } } } ``` ### PHP PHPベースの検索キーワードトレンド APIのサンプルコードは次の通りです。 ``` ``` ### Node.js Node.jsベースの検索キーワードトレンド APIのサンプルコードは次の通りです。 ``` const client_id = 'YOUR_CLIENT_ID'; const client_secret = 'YOUR_CLIENT_SECRET'; const api_url = 'https://naverapihub.apigw.ntruss.com/search-trend/v1/search'; const request_body = { startDate: '2026-01-01', endDate: '2026-05-31', timeUnit: 'month', keywordGroups: [ { groupName: 'ハングル', keywords: ['ハングル', 'korean'] }, { groupName: '英語', keywords: ['英語', 'english'] }, ], device: 'pc', ages: ['1', '2'], gender: 'f', }; (async () => { const response = await fetch(api_url, { method: 'POST', headers: { 'X-NCP-APIGW-API-KEY-ID': client_id, 'X-NCP-APIGW-API-KEY': client_secret, 'Content-Type': 'application/json', }, body: JSON.stringify(request_body), }); console.log(response.status); console.log(await response.text()); })(); ``` ### Python Pythonベースの検索キーワードトレンド APIのサンプルコードは次の通りです。 ``` import urllib.request client_id = "YOUR_CLIENT_ID" client_secret = "YOUR_CLIENT_SECRET" url = "https://naverapihub.apigw.ntruss.com/search-trend/v1/search" body = "{\"startDate\":\"2026-01-01\",\"endDate\":\"2026-05-31\",\"timeUnit\":\"month\",\"keywordGroups\":[{\"groupName\":\"ハングル\",\"keywords\":[\"ハングル\",\"korean\"]},{\"groupName\":\"英語\",\"keywords\":[\"英語\",\"english\"]}],\"device\":\"pc\",\"ages\":[\"1\",\"2\"],\"gender\":\"f\"}" request = urllib.request.Request(url) request.add_header("X-NCP-APIGW-API-KEY-ID", client_id) request.add_header("X-NCP-APIGW-API-KEY", client_secret) request.add_header("Content-Type", "application/json") response = urllib.request.urlopen(request, data=body.encode("utf-8")) rescode = response.getcode() if rescode == 200: response_body = response.read() print(response_body.decode("utf-8")) else: print("Error Code:" + str(rescode)) ``` ### C# C# ベースの検索キーワードトレンド APIのサンプルコードは次の通りです。 ``` using System; using System.IO; using System.Net; using System.Text; namespace NaverApiHubExample { public class ApiExampleSearchTrend { static void Main(string[] args) { string clientId = "YOUR_CLIENT_ID"; string clientSecret = "YOUR_CLIENT_SECRET"; string url = "https://naverapihub.apigw.ntruss.com/search-trend/v1/search"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Headers.Add("X-NCP-APIGW-API-KEY-ID", clientId); request.Headers.Add("X-NCP-APIGW-API-KEY", clientSecret); request.ContentType = "application/json"; request.Method = "POST"; string body = "{\"startDate\":\"2026-01-01\",\"endDate\":\"2026-05-31\",\"timeUnit\":\"month\",\"keywordGroups\":[{\"groupName\":\"ハングル\",\"keywords\":[\"ハングル\",\"korean\"]},{\"groupName\":\"英語\",\"keywords\":[\"英語\",\"english\"]}],\"device\":\"pc\",\"ages\":[\"1\",\"2\"],\"gender\":\"f\"}"; byte[] byteData = Encoding.UTF8.GetBytes(body); request.ContentLength = byteData.Length; using (Stream st = request.GetRequestStream()) { st.Write(byteData, 0, byteData.Length); } try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { Console.WriteLine(reader.ReadToEnd()); } } catch (WebException e) // エラーを返す { using (StreamReader reader = new StreamReader(e.Response.GetResponseStream(), Encoding.UTF8)) { Console.WriteLine(reader.ReadToEnd()); } } } } } ```