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(배수)
퀴즈

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