Marketing

비개발자도 쓰기 편하게 정리한 카카오모먼트 API 데이터

카카오모먼트 광고 데이터를 API로 가져오고 싶은 마케터를 위한 가이드입니다. 공식대행사 전용 권한 신청, 비즈 앱 전환 심사, 비즈니스 토큰 인증, 보고서 API의 metricsGroup 구조까지 — 카카오모먼트 API의 진입 장벽과 실전 사용법을 정리했습니다.

카카오모먼트 API, 시작하기 전에 알아야 할 것

구글 Ads API, Meta Ads API, 네이버 검색광고 API에 이어 카카오모먼트 API를 정리합니다.

카카오모먼트 API는 네 매체 중 진입 장벽이 가장 높다고 볼 수 있습니다. 구글·메타는 개발자 앱을 만들면 바로 데이터에 접근할 수 있고, 네이버도 약관 동의만으로 즉시 키가 발급됩니다. 하지만 카카오모먼트 API는 카카오 공식대행사이거나, 심의를 통해 카카오와 사전 협의된 광고주만 권한을 받을 수 있습니다.

이 글에서는 권한 신청 과정의 현실적인 과정부터 시작해서, 실제 데이터를 가져오는 방법까지 정리합니다.

API 접근 준비 — 6단계 (심사 포함)

누가 신청할 수 있나요?

카카오모먼트 공식 고객센터 문서의 원문은 이렇습니다.

"모먼트 오픈API는 카카오 광고 공식대행사와 사전에 협의된 광고주에 한하여 권한을 부여하고, 해당 권한이 있어야 사용할 수 있습니다."

대상신청 가능 여부경로
카카오 광고 공식대행사O카카오 채널 담당자 또는 통합 에이전시 문의게시판
일반 개발자·소규모 광고주X담당 카카오 마케터를 통해 신청

이 점이 구글·메타·네이버와 가장 크게 다릅니다. API를 사용하려면 먼저 카카오에 신청하여 심사에 통과되어야 합니다.

Step 1~6 전체 과정

단계내용소요 시간
Step 1카카오 계정 본인인증즉시
Step 2developers.kakao.com에서 앱 생성10분
Step 3비즈 앱으로 전환 신청 (심사)수 영업일
Step 4카카오비즈니스 이용약관 동의즉시
Step 5비즈니스 인증 설정 (Redirect URI, Client Secret)10분
Step 6모먼트 API 권한 신청 (별도 승인)카카오 확인 후

가장 시간이 걸리는 단계는 Step 3 (비즈 앱 전환 심사)Step 6 (API 권한 승인)입니다.

Step 3: 비즈 앱 전환 — 무엇을 심사하나요?

Kakao Developers에서 만든 일반 앱을 비즈 앱(Biz App)으로 전환해야 합니다. 이 과정에서 카카오가 심사하는 항목은 다음과 같습니다.

  • 등록한 서비스와 앱의 일치 여부
  • 카카오 운영정책 준수 여부
  • 비즈니스 정보의 정확성

비즈 앱 전환이 승인되어야 비즈니스 인증(OAuth)과 모먼트 API 권한 신청이 가능합니다.

Step 5: 비즈니스 인증 설정

카카오모먼트 API는 일반 카카오 로그인 토큰이 아닌 비즈니스 토큰(Business Token)을 사용합니다. 이를 위해 앱 설정에서 다음을 완료해야 합니다.

  • Redirect URI 등록: 토큰 발급 시 인가 코드를 수신할 URL
  • Client Secret 활성화: REST API 키와 함께 사용
  • 비즈니스 동의항목 설정: moment_management 등 필요 스코프 선택

인증 — 비즈니스 토큰 발급 흐름

구글·메타의 OAuth와 유사하지만, 비즈니스 전용 엔드포인트를 사용하는 점이 다릅니다.

1. 인가 코드 요청 (브라우저에서 사용자 동의) GET https://kauth.kakao.com/oauth/business/authorize ?client_id={REST_API_KEY} &redirect_uri={REDIRECT_URI} &response_type=code &scope=moment_management 2. 인가 코드 → 비즈니스 토큰 교환 POST https://kauth.kakao.com/oauth/business/token grant_type=authorization_code &client_id={REST_API_KEY} &client_secret={CLIENT_SECRET} &redirect_uri={REDIRECT_URI} &code={AUTH_CODE} 3. API 호출 시 헤더 Authorization: Bearer {BUSINESS_ACCESS_TOKEN} adAccountId: {AD_ACCOUNT_ID}

일반 카카오 로그인(/oauth/authorize)이 아닌 /oauth/business/authorize를 사용해야 합니다. 이 차이를 놓치면 토큰은 발급되지만 모먼트 API에 접근할 수 없습니다.

카카오모먼트 API로 가져올 수 있는 데이터

보고서 API 엔드포인트

엔드포인트수준한 번에 최대Rate Limit
/openapi/v4/adAccounts/report광고계정5개5초에 1회
/openapi/v4/campaigns/report캠페인5개5초에 1회
/openapi/v4/adGroups/report광고그룹40개1초에 1회
/openapi/v4/creatives/report소재100개5초에 1회

주의: 캠페인 보고서는 한 번에 최대 5개만 조회 가능합니다. 캠페인이 20개면 4번 호출해야 하고, 각 호출 사이에 5초를 기다려야 합니다. 이 점이 구글·메타·네이버와 비교해서 데이터 수집 속도가 느린 가장 큰 원인입니다.

metricsGroup — 카카오만의 지표 분류 체계

카카오모먼트 API는 필드를 개별 지정하는 것이 아니라, metricsGroup(지표 그룹)을 선택하는 방식입니다.

metricsGroup포함 지표용도
BASIC노출(imp), 클릭(click), CTR, 비용(cost)기본 성과
ADDITION도달(reach), CPM, CPC, CPR추가 효율 지표
VIDEO재생수, 3s/5s/10s/25%/50%/75%/100% 재생, VTR영상 캠페인
MESSAGE발송수, 열람수, 클릭수, 발송실패수메시지 캠페인
PIXEL_SDK_CONVERSION구매, 회원가입, 장바구니 등 (1일/7일 기여)전환 추적
BIZ_BOARD비즈보드 확장 영역 노출·클릭비즈보드 전용

여러 그룹을 쉼표로 함께 요청할 수 있습니다.

metricsGroup=BASIC,ADDITION,PIXEL_SDK_CONVERSION

메시지 캠페인 주의: 메시지 캠페인은 BASIC이나 ADDITION 그룹을 지원하지 않습니다. 반드시 MESSAGE,MESSAGE_ADDITION 그룹을 사용해야 합니다.

조회 기간 제한

항목제한
최대 조회 기간31일 (start/end 직접 지정 시)
날짜 형식yyyyMMdd (예: 20250115)
전일 데이터 확정 시간매일 오전 5시 이후

Breakdown(세분화) 차원

dimension 값설명
CREATIVE_FORMAT소재 형식별
PLACEMENT게재 지면별
AGE_BAND연령대별
GENDER성별
AGE_BAND_GENDER연령대+성별
DEVICE_TYPE기기 유형별
LOCATION지역별

한 번에 1개의 dimension만 선택할 수 있습니다 (구글·메타와 달리 조합 불가).

마케터 용어 vs API 필드 매핑

마케터 용어카카오 필드구글 대응Meta 대응네이버 대응
노출수impimpressionsimpressionsimpCnt
클릭수clickclicksinline_link_clicksclkCnt
클릭률ctrctrinline_link_click_ctrctr
광고비costcost_micros (÷1M)spendsalesAmt
도달수reachreach
CPCcost_per_clickaverage_cpccpccpc
CPMcost_per_impcpm
영상 완료 재생video_play_100pvideo_quartile_p100_ratevideo_p100_watched_actions
구매 전환 (1일)pixel_purchase_1dconversionsactions (파싱)ccnt
구매 전환 (7일)pixel_purchase_7d

비용 단위: 카카오는 네이버와 동일하게 원화 정수입니다. 구글처럼 마이크로 단위 변환이 필요 없습니다.

전환 지표: 카카오는 기여 기간(1일/7일)이 필드명에 포함되어 있어, 구글·메타처럼 귀속 기간을 파라미터로 조정하는 것이 아니라 원하는 기간의 필드를 직접 선택하는 방식입니다.

Python 코드 예시 — 캠페인 성과 데이터 추출

import requests import time from datetime import datetime, timedelta BASE = "https://apis.moment.kakao.com/openapi/v4" TOKEN = "your_business_access_token" AD_ACCOUNT_ID = "your_ad_account_id" HEADERS = { "Authorization": f"Bearer {TOKEN}", "adAccountId": str(AD_ACCOUNT_ID), } # 1. 캠페인 목록 조회 def get_campaigns(): resp = requests.get(f"{BASE}/campaigns", headers=HEADERS) resp.raise_for_status() return resp.json().get("data", []) # 2. 캠페인 보고서 조회 (최대 5개씩, 5초 간격) def get_campaign_report(campaign_ids, start_date, end_date): params = { "campaignId": ",".join(str(c) for c in campaign_ids), "start": start_date, "end": end_date, "metricsGroup": "BASIC,ADDITION", "level": "CAMPAIGN", } resp = requests.get(f"{BASE}/campaigns/report", headers=HEADERS, params=params) if resp.status_code == 429: time.sleep(10) return get_campaign_report(campaign_ids, start_date, end_date) resp.raise_for_status() return resp.json().get("data", []) # 3. 전체 캠페인 보고서 수집 def fetch_all(start_date, end_date): campaigns = get_campaigns() ids = [c["id"] for c in campaigns] name_map = {c["id"]: c.get("name", "") for c in campaigns} # 5개씩 분할 chunks = [ids[i:i+5] for i in range(0, len(ids), 5)] all_data = [] for i, chunk in enumerate(chunks): print(f" [{i+1}/{len(chunks)}] 조회 중...") rows = get_campaign_report(chunk, start_date, end_date) for row in rows: metrics = row.get("metrics", {}) dims = row.get("dimensions", {}) if not metrics: continue all_data.append({ "시작일": row.get("start"), "종료일": row.get("end"), "캠페인ID": dims.get("campaign_id"), "캠페인명": name_map.get(int(dims.get("campaign_id", 0)), ""), "노출수": metrics.get("imp", 0), "클릭수": metrics.get("click", 0), "CTR": metrics.get("ctr", 0), "광고비": metrics.get("cost", 0), "도달수": metrics.get("reach", 0), "CPC": metrics.get("cost_per_click", 0), "CPM": metrics.get("cost_per_imp", 0), }) if i < len(chunks) - 1: time.sleep(5) # Rate Limit 준수 return all_data # 실행: 최근 7일 end = datetime.today() start = end - timedelta(days=7) result = fetch_all(start.strftime("%Y%m%d"), end.strftime("%Y%m%d")) for r in result: print(f"{r['시작일']} | {r['캠페인명']} | 노출 {r['노출수']:,} | 클릭 {r['클릭수']:,} | 비용 {r['광고비']:,.0f}원")

주의사항 5가지

1. 직접 API 작업을 위한 신청이 까다롭습니다

카카오모먼트 API는 구글·메타·네이버와 달리 누구나 신청할 수 없습니다. 공식대행사이거나 카카오 담당자와 사전 협의된 광고주만 권한을 받을 수 있습니다. 소규모 광고주라면 대행사를 통하거나, 카카오 비즈니스 영업팀에 문의해야 합니다.

2. 비즈 앱 전환 심사가 반드시 필요합니다

일반 카카오 개발자 앱으로는 모먼트 API에 접근할 수 없습니다. 비즈 앱 전환 심사를 통과해야 하며, 서비스-앱 일치 여부와 운영정책 준수 여부를 검토합니다. 심사 기간은 수 영업일이 소요됩니다.

3. Rate Limit이 매우 엄격합니다

캠페인 보고서가 5초에 1회, 한 번에 최대 5개 캠페인만 조회 가능합니다. 캠페인 50개의 일별 데이터를 수집하려면 최소 50초가 걸립니다. 구글이나 메타에 비해 데이터 수집 속도가 상당히 느리므로, 자동화 스케줄링 시 충분한 시간을 확보해야 합니다.

4. 메시지 캠페인은 별도 지표 그룹을 사용합니다

카카오톡 메시지 캠페인의 성과를 조회할 때 metricsGroup=BASIC을 사용하면 데이터가 반환되지 않습니다. 반드시 MESSAGE, MESSAGE_ADDITION 그룹을 사용해야 합니다.

5. Dimension은 1개만 선택 가능합니다

구글·메타는 연령+성별+디바이스를 동시에 Breakdown할 수 있지만, 카카오는 한 번에 1개의 dimension만 선택 가능합니다. 연령+성별 조합이 필요하면 AGE_BAND_GENDER라는 전용 dimension을 사용합니다.

4개 매체 API 접근 난이도 비교

항목구글 AdsMeta Ads네이버 검색광고카카오모먼트
키/토큰 발급Developer Token + OAuth앱 생성 + 시스템 유저 토큰약관 동의로 즉시비즈 앱 심사 + 담당자 승인
심사 필요 여부Developer Token 신청Advanced Access 시 앱 검수없음비즈 앱 심사 + API 권한 승인
진입 난이도중간중간낮음높음
비용 단위마이크로 (÷1,000,000)원화 그대로원화 그대로원화 그대로
전환 데이터단일 숫자배열 파싱 필요단일 숫자필드명에 기여기간 포함
ROAS배수 (3.5)직접 계산% 단위 (350)직접 계산
한 번 최대 조회 기간제한 없음제한 없음92일31일
Rate Limit 체감넉넉함보통보통엄격함

AI로 카카오모먼트 API 구현하기 — 프롬프트 모음

기본 데이터 추출

카카오모먼트 API를 사용해서 Python 코드를 작성해줘. - Base URL: https://apis.moment.kakao.com/openapi/v4 - 인증: 비즈니스 토큰 (Authorization: Bearer {token}) - 헤더에 adAccountId 포함 필수 - 먼저 /campaigns로 캠페인 목록 조회 - /campaigns/report로 보고서 조회 (최대 5개씩, 5초 간격) - metricsGroup: BASIC,ADDITION - 기간: 최근 7일 (yyyyMMdd 형식) - 캠페인명과 보고서 데이터를 조인해서 CSV 저장

전환 데이터 포함

카카오모먼트 API에서 전환 데이터를 가져오는 코드를 작성해줘. - metricsGroup에 PIXEL_SDK_CONVERSION 추가 - 구매 전환: pixel_purchase_1d (1일 기여), pixel_purchase_7d (7일 기여) - 회원가입 전환: pixel_complete_registration_1d - ROAS 계산: pixel_purchase_value / cost

4개 매체 통합 리포트

구글 Ads, Meta Ads, 네이버 검색광고, 카카오모먼트 데이터를 하나의 통합 리포트로 만드는 코드를 작성해줘. 단위 변환 주의: - 구글 비용: cost_micros ÷ 1,000,000 - Meta/네이버/카카오 비용: 그대로 사용 - Meta 클릭: inline_link_clicks 사용 - 네이버 ROAS: ror ÷ 100 - 카카오 ROAS: 직접 계산 (conversion_value / cost) - 통합 컬럼: 매체명, 날짜, 캠페인명, 노출수, 클릭수, 광고비(원), 전환수, ROAS(배수)

다음으로 읽어볼 글

Marketing비개발자도 쓰기 편하게 정리한 네이버 검색광고 API 데이터

네이버 검색광고 데이터를 API로 직접 가져오고 싶은 마케터를 위한 가이드입니다. HMAC 인증 방식, 마스터 데이터와 통계 데이터의 분리 구조, 다른 매체와 필드가 다른 이유, 그리고 구글·메타 데이터와 합칠 때의 주의점까지 — 네이버 API만의 특이점을 중심으로 정리했습니다.

2026. 2. 24.
Marketing비개발자도 쓰기 편하게 정리한 Meta Ads API 데이터

Meta(Facebook/Instagram) 광고 데이터를 API로 직접 가져오고 싶은 마케터를 위한 가이드입니다. 앱 생성부터 시스템 유저 토큰 발급, Insights API 필드 매핑, 전환 데이터 파싱까지 — 비개발자가 AI에게 코드를 맡기기 전에 알아야 할 핵심을 정리했습니다.

2026. 2. 24.
MarketingSEO 성과도 빠르게 나올 수 있습니다.

SEO는 최소 6개월 이상 걸린다는 인식이 일반적이지만, 본 블로그는 개설 2달 시점에 서치콘솔 1.2K 클릭 배지를 받았습니다. SEO·AEO·GEO를 본인 블로그로 직접 검증한 2달치 GSC·GA4 데이터, 마이그레이션 회복 곡선, 5가지 조치를 그대로 공개합니다.

2026. 5. 1.
Marketing비개발자도 쓰기 편하게 정리한 구글 Ads API 데이터

구글 Ads API로 가져올 수 있는 필드, 마케터가 보는 지표와 API 필드명 매핑, 연결 과정, 주의사항, 그리고 AI로 쉽게 구현하는 팁까지. 비개발자를 위한 실전 가이드.

2026. 2. 23.
퀴즈

카카오모먼트 API의 접근 권한에 대한 설명으로 가장 정확한 것은 무엇일까요?