← 목록으로

블랙키위 없이 네이버 키워드 검색량 조회하기 - 검색광고 API 직접 호출, 두 달 실측 기록

노베삼촌 2026.09.07 6분 읽기
블랙키위 없이 네이버 키워드 검색량 조회하기 - 검색광고 API 직접 호출, 두 달 실측 기록

블로그 열고 얼마 안 돼 생긴 궁금증

7월 초, 이 블로그를 연 지 얼마 안 됐을 때야. 글은 쓰는데 제목에 무슨 말을 넣어야 사람들이 찾아오는지 감이 없었어. 검색으로 오게 하려면 사람들이 실제로 치는 말을 제목에 넣어야 하는데 그 말이 뭔지를 몰랐거든.

그러다 유튜브에서 블랙키위로 블로그 체급에 맞는 키워드를 고르는 영상을 봤어. 검색은 되는데 경쟁은 덜한 말을 찾아서 제목에 넣으라는 얘기였지.

물론 그 영상이 정답이 아닐 수도 있고 알다시피 카더라도 많잖아. 그래도 이쪽 세계에 전혀 지식이 없는 나에겐 모두에게 참고할 내용이 있기 마련이지. 몇 개 영상을 더보고 어느 정도 감을 잡았어.

그래서 녀석한테 통째로 시켰어(내가 한다는 말은 안 했잖아). 내가 하는 일은 녀석과 티격태격대며 벌이는 이런저런 일들을 요약해서 블로그 작성하자라고 하는 거야.

그러면 녀석이 우리 글감에 맞는 키워드를 가져와서 알려주고 편집도 해주는 거지. 그런데 문제가 생겼어.

"블랙키위는 API가 없어. 삼촌이 직접 조사해야 돼."

"..."

내 노동력을 여기에 낭비할 수는 없지. 내가 전문 블로거도 아니고 말이야.

"다른 방법은 없어?"

"대신 네이버가 광고주용으로 열어둔 키워드도구가 있는데 거기서 검색량을 바로 받을 수 있어."

"광고주용? 나 광고 안 하는데."

"광고를 꼭 내야 하는 건 아니야. 가입만 하면 도구는 쓸 수 있어."

그런 방법이 있다니 안 쓸 이유가 없잖아. 실제로 나는 광고를 한 번도 안 냈는데 두 달째 잘 쓰고 있어.

네이버 이용하면 검색이 공짜

블랙키위를 이용해서 하는 검색량 조회 서비스 말이야. 네이버 검색광고에 들어가면 광고주한테 키워드별 검색량을 보여주는 키워드도구가 있어. 광고 낼 사람이 어떤 키워드에 얼마나 몰리는지 보라고 만든 물건이지.

사업자가 없어도 개인으로 가입이 되더라고. 계정은 내가 직접 만들었어. 로그인이 필요한 일은 녀석이 못 하거든.

이게 블랙키위나 다른 유사한 사이트와 얼마나 다른지는 모르겠어. 써본 적도 없고 애초에 내게 크게 중요한 사항은 아니었거든.

내게 중요한 건 단 하나야. 녀석이 혼자 할 수 있느냐 없느냐.

아무튼 광고 관리 시스템에서 도구 메뉴 아래 「API 사용 관리」로 들어가서 아래 세 가지를 발급받아. 이름은 그 화면에 적힌 대로야.

이름 어디에 쓰나
CUSTOMER_ID 고객 ID. 검색광고 계정 번호
API_KEY 액세스라이선스. 호출할 때 붙이는 인증 키
SECRET_KEY 비밀키. 서명을 만드는 데 쓴다. 남한테 안 보여준다

📄 출처 · 네이버 검색광고 API 안내 저장소(GitHub), 키 발급 경로 (2026-09-07 확인)

여기서 사고가 하나 났어. 셋을 녀석한테 넘겨야 하는데 화면을 캡처해서 줬거든. 두 번 연속 서명이 틀렸다는 답이 왔어.

"삼촌, 서명 계산은 두 방식으로 다 맞춰봤는데 계속 거절이야. 키 자체가 다른 것 같아."

원인은 글자 하나였어. 비밀키에 있던 소문자 l을 녀석이 대문자 I로 읽은 거야. 그림으로 보면 그 둘은 똑같이 생겼거든. 화면에서 글자 그대로 복사해 붙여주니까 한 번에 통과했어.

나는 모르면 캡쳐해서 녀석한테 넘기거든. 그러면 대부분 해결이 되는데 사소한 에러가 있었던 거지.

이때 정한 규칙이 하나 있어. 비밀키 같은 건 캡처로 안 주고 글자로 준다.

스크립트 하나면 끝

키를 쥐여주니 나머지는 녀석이 알아서 했어. 따로 설치할 것 없이 파이썬으로 필요한 걸 뚝딱하고 만들더라고.

핵심은 이거 하나야. 부를 때마다 지금 시각과 비밀키로 서명을 만들어 헤더에 넣고 씨앗 키워드(hintKeywords)를 붙여 보내면 연관 키워드 목록을 받아.

import base64, hashlib, hmac, json, time, urllib.parse, urllib.request

def call(customer_id, api_key, secret_key, seeds):
    ts = str(int(time.time() * 1000))
    msg = f"{ts}.GET./keywordstool"
    sig = base64.b64encode(hmac.new(secret_key.encode(), msg.encode(), hashlib.sha256).digest()).decode()
    q = urllib.parse.urlencode({"hintKeywords": ",".join(seeds), "showDetail": "1"})
    req = urllib.request.Request(f"https://api.naver.com/keywordstool?{q}")
    for k, v in {"Content-Type": "application/json; charset=UTF-8", "X-Timestamp": ts, "X-API-KEY": api_key, "X-Customer": customer_id, "X-Signature": sig}.items():
        req.add_header(k, v)
    with urllib.request.urlopen(req, timeout=15) as r:
        return json.loads(r.read().decode())["keywordList"]

씨앗은 한 번에 다섯 개까지야. 문서에 그렇게 적혀 있어. 공백이 든 말은 넣어 보니 거부하길래 지렁이 게임이 아니라 지렁이게임으로 붙여 넣어.

받는 건 키워드 하나에 이런 숫자들이야.

항목 무슨 숫자
monthlyPcQcCnt 최근 30일 PC 검색 횟수
monthlyMobileQcCnt 최근 30일 모바일 검색 횟수
compIdx 경쟁정도. 낮음·중간·높음

검색이 열 번이 안 되면 숫자 대신 <10이라고 온다는 것도 네이버 검색광고 API 문서에 적혀 있어. 광고주가 프로그램으로 부를 때 보라고 네이버가 올려둔 안내 페이지야.

If the query count is less than 10, you get "<10".

📄 출처 · 네이버 검색광고 API 문서, KeywordsTool (2026-09-07 확인)

녀석은 여기에 하나를 더 얹었어. 경쟁정도가 낮고 한 달 검색이 일정 수 이상 되는 검색어만 남기는 필터였어. 영상에서 본 체급 맞추기를 그대로 옮긴 거지.

같은 게임인데 부르는 이름마다 검색량이 달랐다

검색 결과를 보고 이건 좀 놀랐는데 블로그에 올린 스네이크 게임을 사람들이 뭐라고 검색하는지 뽑아봤거든.

부르는 이름 월간 검색 경쟁정도
지렁이게임 22,400 낮음
스네이크게임 3,840 낮음
핑퐁게임 480 높음
퐁게임 10 높음

📄 출처 · 네이버 검색광고 키워드도구 API 응답 (2026-09-07 조회 · 월간 검색은 PC와 모바일을 더한 것이고 10 미만은 0으로 쳤다 · 다달이 바뀐다)

같은 게임인데 지렁이게임이 스네이크게임의 여섯 배 가까이 돼. 퐁은 더해. 나는 퐁이라고 알고 있었는데(녀석이 퐁이라고 했어) 사람들은 핑퐁이라고 치더라고.

이때서야 '아 이래서 키워드를 조사하고 블로그에 넣는구나.'라고 좀 와닿았달까.

그래서 지렁이 게임 글 제목에 그 말을 넣었어. 내가 아는 이름이 아니라 사람들이 치는 이름으로.

"삼촌, 이건 게임만 그런 게 아니야. 블로그 디자인 얘기를 쓸 때도 사람들은 블로그꾸미기라고 검색해."

같은 뜻 월간 검색
블로그꾸미기 5,230
블로그디자인 420

열 배가 넘어. 내가 쓰고 싶은 말과 사람들이 치는 말이 다르다는 걸 숫자로 보니까 제목 정하는 방식이 달라졌어.

낮음이 쉬움은 아니더라

경쟁정도 낮음이면 뚫기 쉽겠구나 하고 한 달 반쯤 그렇게 알고 있었는데 8월 중순에 이 숫자를 봤어. 아래 표는 이 글을 쓰며 다시 조회한 거야.

키워드 월간 검색 경쟁정도
클로드 830,400 낮음
클로드코드 21,000 높음

한 달에 팔십만 번 검색되는 말이 낮음이야. 이게 뚫기 쉬울 리가 없잖아. 녀석한테 물었더니 아까 그 API 문서를 열어 보여줬어.

A competitiveness index based on PC ad. low: low competitiveness, mid: middle competitiveness, high: high competitiveness

📄 출처 · 같은 문서, compIdx 항목 (2026-09-07 확인)

PC 광고 기준 경쟁 지수라고 적혀 있어. 블로그 글이 상위에 오르기 쉬우냐에 대해선 아무 말도 없어. 같은 응답에 그 키워드의 PC 검색 결과에 최근 4주 동안 광고가 평균 몇 개 실렸는지도 같이 오길래 나란히 놓아봤어.

키워드 월간 검색 월평균 노출 광고 수(PC) 경쟁정도
클로드 830,400 0 낮음
지렁이게임 22,400 2 낮음
클로드코드 21,000 7 높음
퐁게임 10 3 높음

📄 출처 · 같은 문서, plAvgDepth 항목 (2026-09-07 확인 · 최근 4주 PC 광고 평균 노출 깊이, 자료가 없을 때도 0으로 온다)

적어도 내가 뽑은 네 줄에선 낮음과 높음이 검색량이 아니라 광고 개수 쪽에 붙어 있었어. 클로드는 한 달에 팔십만 번 검색되는데 광고 관련 항목이 전부 0이고 낮음, 퐁게임은 검색이 열 번 남짓인데 광고가 셋이고 높음이야.

녀석 말로는 블랙키위 같은 사이트가 말하는 경쟁은 이것과 다르대. 그쪽은 검색량 옆에 월간 콘텐츠 발행량이나 콘텐츠 포화 지수 같은 항목을 따로 두는데 그 키워드로 글이 얼마나 올라오고 있느냐를 확인할 수 있다는 거지. 네이버가 광고주용으로 주는 숫자엔 그게 없고 말이야.

그래서 같은 클로드가 우리 표에선 낮음인데 그런 사이트에선 글이 많아서 어렵다고 나올 수 있다는 거야. 우리가 본 낮음은 광고 개수 얘기고 그런 사이트가 보여주는 건 글 개수 얘기지.

"그럼 낮음을 어떻게 받아들여야 해?"

"그 말에 광고가 몇 개 붙느냐까지만. 글이 몇 개 올라와 있는지는 이 숫자가 몰라."

함정이 둘 더 있어.

함정 뭐가 문제
대표 검색어만 크고 딸린 말이 없다 바이브코딩 31,500인데 네이버 연관 검색어 0개 직접 조회한 강의·하는법·툴이 800·130·100뿐이다
엉뚱한 분야가 섞인다 일레븐티에 자켓·패딩·매장이 딸려 온다 같은 이름의 옷 브랜드. 숫자를 그대로 믿으면 안 된다

바이브코딩은 이 블로그 부제인데 네이버가 붙여주는 연관 검색어가 하나도 없어. 녀석이 몇 개 골라 조회해 보니 바이브코딩강의 800에 하는법 130, 툴 100쯤이라 바이브코딩 31,500에 견주면 함께 검색되는 말이 거의 없는 셈이지. 일레븐티는 이 블로그를 만든 도구 이름인데 월간 1,440에 붙는 말이 매장·자켓·패딩뿐이고 도구 이름으로 조회한 11ty나 정적사이트생성기는 PC든 모바일이든 열 번이 안 돼. 그 1,440은 상당수가 옷 브랜드 검색으로 보여.

오늘 난 사고 하나

이 글을 쓰려고 녀석이 씨앗 마흔 개를 다섯 개씩 쉬지 않고 여덟 번 넣었더니 이런 응답이 왔어.

네이버 검색광고 API 응답 HTTP 429 Too Many Requests · You've exceeded the number of allowed requests.

녀석이 공지를 찾아왔는데 키워드도구는 호출 속도를 다른 기능의 5분의 1에서 6분의 1로 제한한다고 적혀 있고 429가 나면 이렇게 하래.

키워드 도구 서비스 이용시 429번 에러가 리턴되면 타 서비스들에 비해 5~6배 정도 긴 시간 Sleep 후 호출 하십시오

📄 출처 · 네이버 검색광고 API 공지, 키워드 도구 기능의 빈번한 429 에러 발생에 대한 가이드 (2020-12-18 공지, 2026-09-07 확인)

짧은 시간에 429가 쏟아지게 만들었으면 「최소 5분 이상 모든 호출을 중단」하라는 말도 같은 공지에 붙어 있어. 그래서 이제 스물다섯 개 넘으면 나눠서 부르고 재검색에는 여유를 둬.

두 달 뽑아보니

이 툴을 사용하는 순서는 간단해.

  1. 검색광고에 개인으로 가입한다광고를 안 내고도 두 달째 쓰고 있다. 로그인이 필요한 일이라 직접 한다.
  2. API 키 셋을 발급받는다도구 메뉴의 API 관리. 비밀키는 캡처 말고 글자로 넘긴다.
  3. 스크립트를 실행한다씨앗 다섯 개까지 한 번에. 공백 없이. 스물다섯 개 넘으면 쉬어가며.
  4. 숫자를 읽는다PC와 모바일을 더한다. 낮음은 광고 얘기다. 같은 대상도 부르는 이름마다 검색량이 다르다.

검색 자체는 공짜였어. 돈 든 건 없고 계정 하나 만든 게 다야. 그런데 두 달 지나고 보니 남은 건 검색량 숫자가 아니라 읽는 법이더라고. 낮음이 광고 얘기라는 건 문서 구석에라도 적혀 있지. 키워드 하나로 여섯 배가 갈리고 같은 이름의 옷 브랜드가 섞여 든다는 건 어디에도 안 적혀 있거든.

키워드가 뭔지도 왜 중요한지도 감이 없었어. 전문 블로거도 아니니 더 그랬지. 그런데 말이야 블로그를 두 달쯤 운영해보니 누가 봐줬으면 하는 마음이 점점 생기더라고. 이래서 사람들이 SNS를 하나 싶기도 하고. 참고로 난 SNS도 안 하거든.

결국 검색량을 보는 건 남 눈을 의식하는 일이었던 거야. 뭘 쓸지는 여전히 내가 정하는데 뭐라고 부를지는 이제 검색량을 한 번 보고 정해. 그 검색량 조회를 녀석이 혼자 하게 된 게 두 달 치 수확이지.

SNS는 기회가 되면 한번 해보려고. 내 블로그와 연계해서 말이야. 이 블로그... 여전히 파리가 날리거든.

이 키워드로 제목을 정한 글이 지렁이 게임이고 글마다 붙는 이미지를 만드는 얘기는 나노바나나 글에 따로 적어뒀어.