안녕하세요. 지난 시간에는 네이버 검색 API를 활용하여 블로그 검색 순위를 알아봤는데요. 이번에는 네이버 데이터 랩의 API를 활용해서 검색어 트렌드를 분석해 볼게요. 기간별 검색어 트렌드를 기기, 연령, 성별 등으로 구분해서 세분화된 정보를 가져올 수 있답니다. 한번 발급받은 API는 계속 사용할 수 있으니 네이버 개발자 센터에서 받아보시길 바랍니다. (1분이면 끝!)
검색어 트렌드란?
검색어 트렌드는 검색량이나 인기 검색어 등을 조회하는 게 아니에요. 키워드 간의 상대적인 인기도를 확인할 수 있는 거예요. 즉 키워드의 검색량 비율을 비교해서 어떤 키워드가 더 많은 관심을 받고 있는지 검색 점유율 등을 추정할 수 있는 거죠. 시간에 따른 인기도라든가, 연령이나 성별 검색량을 비교해서 어떤 연령대와 성별에게 인기가 있는지 분석할 수 있어요.
아래는 네이버 데이터 랩 공식 페이지의 설명 중 일부분입니다.

검색어 트렌드를 잘못 알고 계신 분들이 있어서 설명을 드렸는데요, 이제 하나하나씩 시작해 봅시다!
데이터랩 - SERVICE-API
데이터랩 통합검색어 트렌드 통합검색어 트렌드는 네이버 통합검색에서 발생하는 검색어를 연령별, 성별, 기기별(PC, 모바일)로 세분화해서 조회할 수 있는 API입니다. 분석하고 싶은 주제군을
developers.naver.com
위 url 접속 후 하단의 오픈 API 이용 신청 클릭 -> 다음 화면에서 Application 등록 클릭 > 그 후 입력은 아래 이미지 참고

완료가 되었으면 Client ID와 Client Secret 키가 발급되는데 소중히 보관해 주세요. API호출 시 사용됩니다. 데이터 랩 API의 경우 하루 1,000번 호출이 가능해요. 검색 API의 25,000번에 비해 많이 부족하지만 개인이 사용하기에는 역시 충분하죠!
오늘도 역시 크롬에서 코드를 실행하기 위해서는 프록시 서버가 필요해요. 아래 '웹스크래핑 하는 법' 내용 중 CORS 우회 프록시 서버 글을 참고하세요. (이건 10초면 끝!) 다시 한번 말씀드리지만 API는 서버사이드 언어에 사용하는 게 일반적입니다만, 번거로운 프로그램 설치와 설정 없이 누구든 쉽게 크롬이나 엣지에서 사용하기 위해는 CORS라는 정책을 우회해야 합니다.
쉽게 말해서 서버에서 서버로 호출 시에는 문제없지만, 웹 브라우저에서 호출 시에는 CORS라는 에러가 발행하는 데 이를 건너띄기 위함입니다. (사실 로컬에서 서버를 띄우면 CORS 문제가 없지만 누구나 쉽게 따라 할 수 있도록 크롬 콘솔에서 하려고 합니다.)
자바스크립트로 웹스크래핑 하는 방법
안녕하세요. 오늘은 자바스크립트(JavaScript)로 웹 스크래핑(Web Scraping) 하는 방법에 대해 알아볼 거예요. 웹 스크래핑이란 웹 페이지에 있는 정보를 추출하는 과정이에요. 웹페이지는 HTML로 작성
toyou101.tistory.com
자 이제 모든 준비가 완료되었습니다. 먼저 3월의 일별 키워드 트렌드를 조회하는 함수를 만들어볼게요!
*클라이언트 ID와 시크릿키는 위에서 발급받은 걸로 넣어주세요.
// 네이버 데이터랩 API 클라이언트 ID와 시크릿 입력
const CLIENT_ID = "YOUR_CLIENT_ID";
const CLIENT_SECRET = "YOUR_CLIENT_SECRET";
// CORS를 우회하기 위한 프록시 서버 URL
const proxyURL = "https://cors-anywhere.herokuapp.com/";
// 네이버 데이터랩 API URL
const baseURL = "https://openapi.naver.com/v1/datalab/search";
// API 요청 헤더를 설정
const headers = new Headers({
"Content-Type": "application/json",
"X-Naver-Client-Id": CLIENT_ID,
"X-Naver-Client-Secret": CLIENT_SECRET,
});
// 검색어 트렌드를 조회하는 함수 생성
async function searchKeyword(keywords, timeUnit, startDate, endDate) {
// 데이터를 전송할 때 사용할 요청 본문을 생성
const requestBody = JSON.stringify({
startDate: startDate, //조회 시작 일자
endDate: endDate, //조회 종료 일자
timeUnit: timeUnit, //기간 단위(일별,월별)
keywordGroups: keywords.map((keyword, index) => ({ //배열로 받은 키워드를 하나씩 넣는다
groupName: `group${index + 1}`, //아래 키워드의 그룹명
keywords: [keyword], //조회할 키워드 (최대 20개까지 배열로 입력 가능)
})),
});
try {
// 프록시 서버를 사용하여 네이버 데이터랩 API에 요청
const response = await fetch(proxyURL + baseURL, {
method: "POST",
headers: headers,
body: requestBody,
});
if (!response.ok) {
throw new Error("네이버 데이터랩 API 요청 실패");
}
// 응답을 JSON 형태로 변환
const data = await response.json();
// 데이터 출력
console.log("결과 데이터:", data);
} catch (error) {
console.error("API 요청 중 에러 발생:", error);
}
}
차례대로 검색 키워드, 기간 단위, 검색 시작일, 검색 종료일을 받는 searchKeyword() 함수를 생성했습니다. 이제 실행해 봅시다!
searchKeyword(['웅남이','소울메이트'], "date","2023-03-01", "2023-03-22")
실행 결과 ▼



키워드로 현재 상영 중인 한국 영화 '웅남이'와 '소울메이트'를 넣어서 일별 검색어 트렌드를 받아왔어요. 시간이 지날수록 웅남이의 관심이 높아지고 있네요! 검색어 트렌드는 이렇게 시간에 따른 검색어 트렌드를 비교할 수 있는 API에요.
이번엔 다른 주제를 월별로 조회해 볼게요! 월별로 조회하려면 기존의 'date'가 아닌 'month'로 넣고 날짜도 월 단위로 입력해야 돼요.
searchKeyword(['강원도','제주도'], "month", "2022-10-01", "2023-03-23")
실행 결과 ▼

강원도와 제주도의 월별 검색어 트렌드를 조회해 봤는데요, 음.. 제가 예상했던 결과와 많은 차이가 있네요. 날이 이 풀리면서 강원도의 관심이 많아질 줄 알았지만 제주도가 훨씬 더 높은 관심도를 가지고 있어요. 성별이나 연령을 추가해 보면 또 다른 결과가 나올 거 같은데 여러분이 한번 해보시는 것도 좋을 거 같네요. 성별, 연령별 조회 팁은 알려드리고 갈게요!
const requestBody = JSON.stringify({
startDate: startDate, //조회 시작 일자
endDate: endDate, //조회 종료 일자
timeUnit: timeUnit, //기간 단위(일별,월별)
keywordGroups: keywords.map((keyword, index) => ({ //배열로 받은 키워드를 하나씩 넣는다
groupName: `group${index + 1}`, //아래 키워드의 그룹명
keywords: [keyword], //조회할 키워드 (최대 20개까지 배열로 입력 가능)
})),
gender: "f", // 성별 설정: "f"는 여성, "m"은 남성, 생략하면 전체 성별
ages: ["1", "2", "3"] // 연령 설정: "1"은 10대, "2"는 20대, "3"은 30대,
});
오늘은 이렇게 네이버 데이터 랩 API를 활용해서 다양한 검색어 트렌드를 살펴봤어요. 여러분이 관심 있는 키워드와 비교하면서 시간이 지남에 따라 트렌드가 어떻게 변화하는지 관찰하는 것도 재미있을 거 같네요!- 끝 -