ugwanggi Partner API
소셜미디어(YouTube · Instagram) 마케팅 데이터를 제공하는 파트너용 REST API입니다. 크리에이터 · 콘텐츠 · 트렌드 데이터를 조회할 수 있습니다.
Base URL https://partner-api.ugwanggi.com
모든 응답은 application/json (UTF-8)이며, 인증은 API 키(Bearer)로 이루어집니다. 아래 Quickstart로 1분 안에 첫 요청을 보낼 수 있습니다.
Quickstart
발급받은 API 키(ug_live_로 시작)를 Authorization 헤더에 담아 요청합니다.
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/creators?sort=subscriber_growth&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/creators",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={"sort": "subscriber_growth", "limit": 10},
)
print(resp.json())
const params = new URLSearchParams({ sort: "subscriber_growth", limit: 10 });
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/creators?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Authentication
모든 요청에 API 키를 Bearer 토큰으로 포함해야 합니다. 키는 발급 시 1회만 전달되며 안전하게 보관하세요. 노출이 의심되면 재발급(로테이션)을 요청하면 됩니다.
Authorization: Bearer ug_live_xxxxxxxxxxxxxxxxxxxxxxxx
headers = {"Authorization": "Bearer ug_live_xxxxxxxxxxxx"}
const headers = { Authorization: "Bearer ug_live_xxxxxxxxxxxx" };
401 Unauthorized를 반환합니다.Errors
| 코드 | 의미 |
|---|---|
401 | API 키 누락 · 유효하지 않음 · 만료 |
404 | 요청한 리소스를 찾을 수 없음 (존재하지 않는 channel_id 등) |
422 | 파라미터 형식 오류 (범위 초과 등) |
429 | 요청 속도 제한 초과 — 잠시 후 재시도 |
5xx | 서버 오류 — 지속되면 문의 |
크리에이터 목록 조회
조건에 맞는 YouTube 크리에이터를 정렬·필터하여 반환합니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
sort optional | enum | 정렬 기준 (아래 값 참고). 기본 subscribers |
order optional | asc · desc | 정렬 방향. 기본 desc |
limit optional | integer (1–100) | 가져올 개수. 기본 20 |
offset optional | integer (≥0) | 페이지네이션 시작 위치 |
category optional | string | 카테고리. 예: 뷰티, 패션, 푸드, 여행, 육아, 운동 |
channel_keyword optional | string (1–50자) | 채널 키워드 검색어. 부분일치이며 대소문자를 구분하지 않습니다. 예: 다이어트 → 다이어트식단·다이어트레시피도 매칭 |
format optional | enum | 영상 유형. 아래 format 값 23종 중 하나와 정확히 일치해야 하며, 목록에 없는 값은 422 |
min_subscribers optional | integer | 최소 구독자 수 |
max_subscribers optional | integer | 최대 구독자 수 (숨은 라이징 탐색 등) |
has_ad optional | boolean | 광고 이력 보유 여부 |
country optional | string | 국가 코드. 예: KR |
q optional | string | 채널명 검색어 |
sort 값
subscribers 구독자 수 subscriber_growth 최근 성장률 avg_views 평균 조회수 avg_views_short 숏폼 평균 조회수 view_efficiency 구독자 대비 조회효율 ad_views 광고 평균 조회수 engagement 참여율 recent_ad 최근 광고 활동 trend 트렌드 편입
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/creators?sort=subscriber_growth&order=desc&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/creators",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"sort": "subscriber_growth",
"order": "desc",
"limit": 10,
# "category": "뷰티",
# "channel_keyword": "다이어트", # 부분일치
# "format": "먹방", # 23종 중 하나
# "max_subscribers": 100000,
},
)
print(resp.json())
const params = new URLSearchParams({
sort: "subscriber_growth",
order: "desc",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/creators?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"total": 12345,
"limit": 10,
"offset": 0,
"sort": "subscriber_growth",
"order": "desc",
"data": [
{
"channel_id": "UCxxxxxxxx",
"title": "채널명",
"thumbnail": "https://...",
"email": "contact@example.com",
"countryCode": "KR",
"topic": ["뷰티 & 메이크업", "일상 & 라이프스타일"],
"format": ["리뷰 & 언박싱", "브이로그"],
"channel_keywords": ["뷰티", "메이크업", "코스메틱"],
"subscribers": 523000,
"totalViews": 87000000,
"total_videos": 412,
"average_views": 95000,
"average_views_short": 210000,
"average_views_subs": 0.18,
"engagement_rate": 0.042,
"short_ratio": 0.63,
"subs_growth_3_months": 0.12,
"subs_growth_3_months_amount": 56000,
"has_ad": true,
"average_views_ads": 88000,
"last_ppl_diff": 5,
"top_industries": [
{ "industry": "IT & 전자기기", "percentage": 25.0 },
{ "industry": "뷰티 & 메이크업", "percentage": 25.0 }
],
"top_brands": [
{ "brand": "브랜드1", "brand_logo": "https://...", "sponsored_videos": 3 },
{ "brand": "브랜드2", "brand_logo": "https://...", "sponsored_videos": 1 }
],
"demographics": {
"top_demographic": "F25_34",
"top_demographic_value": 32,
"breakdown": {
"F13_17": 2, "F18_24": 15, "F25_34": 32, "F35_44": 20,
"F45_54": 8, "F55_64": 3, "F65": 1,
"M13_17": 1, "M18_24": 9, "M25_34": 5, "M35_44": 3,
"M45_54": 1, "M55_64": 0, "M65": 0
}
},
"registerYouTubeDate": "2019-03-01",
"last_update": "2026-06-30"
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
channel_id | string | YouTube 채널 고유 ID |
custom_channel_id | string | 커스텀 채널 핸들(@handle). 없을 수 있음 |
title | string | 채널명 |
thumbnail | string (URL) | 채널 썸네일 이미지 URL |
email | string | 공개 비즈니스 이메일. 없을 수 있음 |
countryCode | string | 국가 코드. 예: KR |
topic | array<enum> | 채널 주제 카테고리 (복수). 아래 topic 값 참고 |
format | array<string> | 채널이 주로 만드는 영상 유형 (복수). 아래 format 값 23종이 대표값이며, 그 밖의 값도 나올 수 있습니다 |
channel_keywords | array<string> | 채널 키워드 (대표 키워드 목록) |
subscribers | integer | 구독자 수 |
totalViews | integer | 누적 총 조회수 |
total_videos | integer | 총 영상 수 |
average_views | integer | 평균 조회수 |
average_views_short | integer | 숏폼 평균 조회수 |
average_views_subs | float | 구독자 대비 평균 조회수 (도달 효율) |
engagement_rate | float | 참여율 |
short_ratio | float | 전체 영상 중 숏폼 비율 |
subs_growth_3_months | float | 최근 3개월 구독자 성장률 |
subs_growth_3_months_amount | integer | 최근 3개월 구독자 증가 수 |
has_ad | boolean | 광고/협찬 이력 보유 여부 |
average_views_ads | integer | 광고 콘텐츠 평균 조회수 |
last_ppl_diff | integer | 마지막 광고(PPL) 이후 경과일 |
top_industries | array<object> | 광고한 산업군 비중 상위 3개 (아래 top_industries 참고). 광고 이력이 없으면 [] |
top_brands | array<object> | 광고한 브랜드 상위 5개 (아래 top_brands 참고). 광고 이력이 없으면 [] |
demographics | object | 시청자 인구통계 (아래 demographics 참고) |
registerYouTubeDate | date | 채널 개설일. YYYY-MM-DD |
last_update | date | 데이터 최종 갱신일. YYYY-MM-DD |
top_industries 객체
해당 크리에이터가 광고한 브랜드들의 산업군 분포입니다. 비중이 높은 순으로 최대 3개이며, 광고 이력이 없으면 빈 배열입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
industry | string | 산업군 이름. 예: IT & 전자기기 |
percentage | float | 전체 광고 영상 중 해당 산업군이 차지하는 비율(%). 상위 3개만 반환하므로 합이 100이 되지는 않습니다 |
top_brands 객체
해당 크리에이터가 광고한 브랜드입니다. 협찬 영상 수가 많은 순으로 최대 5개이며, 광고 이력이 없으면 빈 배열입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
brand | string | 브랜드명 |
brand_logo | string (URL) | 브랜드 로고 이미지 URL. 없을 수 있음(null) |
sponsored_videos | integer | 해당 브랜드의 협찬 영상 수 |
demographics 객체
시청자의 성별·연령 분포를 담은 객체입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
top_demographic | string | breakdown 중 비율이 가장 높은 세그먼트. {성별}{연령대} 형식. 예: F25_34 |
top_demographic_value | integer | breakdown 중 가장 높은 비율(%). 즉 top_demographic 세그먼트의 시청자 비율 |
breakdown | object | 성별×연령대별 시청자 비율(%). 키는 F(여성)·M(남성) + 연령대(13_17, 18_24, 25_34, 35_44, 45_54, 55_64, 65) |
topic 값
뷰티 & 메이크업 피트니스 & 다이어트 패션 & 의류 음식 & 음료 일상 & 라이프스타일 리빙 & 인테리어 부동산 연애 & 결혼 육아 게임 IT & 전자기기 레저 & 스포츠 의료 & 건강 엔터테인먼트 주식 & 투자 금융 & 보험 경제 & 경영 수학 & 과학 종교 교육 & 커리어 동물 (펫) 사회 & 이슈 취미 & 공예 & 디자인 자동차 여행 & 캠핑 기타 뉴스 & 정치 음악 코미디
format 값
아래 23종이 format 쿼리 파라미터에 넣을 수 있는 값의 전부입니다. 그 밖의 값을 보내면 422를 반환합니다.
토크쇼 브이로그 리뷰 & 언박싱 꿀팁 튜토리얼 ASMR 토크 커버영상 강의 클립 먹방 챌린지 예능형 콘텐츠 하울 몰래카메라 리액션 인터뷰 다큐멘터리 예고편 라이브 영상 뮤직비디오 코미디 음악
활용 예시
| 목적 | 파라미터 |
|---|---|
| 급상승 크리에이터 TOP 10 | ?sort=subscriber_growth&order=desc&limit=10 |
| 카테고리별 라이징 (예: 뷰티) | ?category=뷰티&sort=subscriber_growth&limit=10 |
| 광고 반응이 좋은 크리에이터 | ?has_ad=true&sort=ad_views&limit=10 |
| 숏폼 도달력이 높은 크리에이터 | ?sort=avg_views_short&limit=10 |
| 최근 협찬/광고가 활발한 크리에이터 | ?has_ad=true&sort=recent_ad&order=asc&limit=10 |
| 숨은 라이징 크리에이터 | ?max_subscribers=100000&sort=view_efficiency&limit=10 |
| 특정 키워드를 다루는 크리에이터 | ?channel_keyword=다이어트&sort=subscribers&limit=10 |
| 영상 유형으로 좁히기 (예: 먹방) | ?format=먹방&sort=avg_views&limit=10 |
| 키워드 + 유형 + 광고 이력 조합 | ?channel_keyword=다이어트&format=먹방&has_ad=true&limit=10 |
크리에이터 단건 조회
channel_id로 특정 YouTube 크리에이터의 상세 정보를 반환합니다.
Path parameters
| 이름 | 타입 | 설명 |
|---|---|---|
channel_id required | string | YouTube 채널 ID. 예: UCxxxxxxxx |
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/creators/UCxxxxxxxx"
import requests
channel_id = "UCxxxxxxxx"
resp = requests.get(
f"https://partner-api.ugwanggi.com/v1/youtube/creators/{channel_id}",
headers={"Authorization": "Bearer ug_live_xxxxx"},
)
print(resp.json())
const channelId = "UCxxxxxxxx";
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/creators/${channelId}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"data": {
"channel_id": "UCxxxxxxxx",
"title": "채널명",
"thumbnail": "https://...",
"email": "contact@example.com",
"countryCode": "KR",
"topic": ["뷰티 & 메이크업", "일상 & 라이프스타일"],
"format": ["리뷰 & 언박싱", "브이로그"],
"channel_keywords": ["뷰티", "메이크업", "코스메틱"],
"subscribers": 523000,
"totalViews": 87000000,
"total_videos": 412,
"average_views": 95000,
"average_views_short": 210000,
"average_views_subs": 0.18,
"engagement_rate": 0.042,
"short_ratio": 0.63,
"subs_growth_3_months": 0.12,
"subs_growth_3_months_amount": 56000,
"has_ad": true,
"average_views_ads": 88000,
"last_ppl_diff": 5,
"top_industries": [
{ "industry": "IT & 전자기기", "percentage": 25.0 },
{ "industry": "뷰티 & 메이크업", "percentage": 25.0 }
],
"top_brands": [
{ "brand": "말해보카", "brand_logo": "https://...", "sponsored_videos": 3 }
],
"demographics": {
"top_demographic": "F25_34",
"top_demographic_value": 32,
"breakdown": {
"F13_17": 2, "F18_24": 15, "F25_34": 32, "F35_44": 20,
"F45_54": 8, "F55_64": 3, "F65": 1,
"M13_17": 1, "M18_24": 9, "M25_34": 5, "M35_44": 3,
"M45_54": 1, "M55_64": 0, "M65": 0
}
},
"registerYouTubeDate": "2019-03-01",
"last_update": "2026-06-30"
}
}
크리에이터 벌크 조회
여러 channel_id(최대 50개)를 한 번에 조회합니다. 존재하는 것은 요청 순서대로 data에, 없는 것은 not_found에 담아 반환합니다.
Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
channel_ids required | string[] | 조회할 YouTube 채널 ID 배열. 1~50개. 중복은 자동 제거됩니다. |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"channel_ids": ["UCaaaaaaaa", "UCbbbbbbbb", "UCcccccccc"]}' \
"https://partner-api.ugwanggi.com/v1/youtube/creators/batch"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/youtube/creators/batch",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"channel_ids": ["UCaaaaaaaa", "UCbbbbbbbb", "UCcccccccc"]},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/youtube/creators/batch",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
channel_ids: ["UCaaaaaaaa", "UCbbbbbbbb", "UCcccccccc"],
}),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"requested": 3,
"found": 2,
"data": [
{ "channel_id": "UCaaaaaaaa", "title": "채널 A", "subscribers": 523000, ... },
{ "channel_id": "UCbbbbbbbb", "title": "채널 B", "subscribers": 128000, ... }
],
"not_found": ["UCcccccccc"]
}
data와 동일합니다. 요즘 뜨는 크리에이터 (Rising)
최근 기간 동안 구독자를 크게 모은 YouTube 크리에이터를 기간·티어별로 훑어봅니다. 깊이 있는 마케팅 분석용 데이터라기보단, 지금 트렌드상 갑자기 인기를 끌거나 핫해진 인플루언서를 가볍게 찾아보는 재미 위주의 데이터입니다. "이번 주에 확 뜬 채널 누구야?" 같은 질문에 어울립니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 성장을 재는 기간창. 7d · 30d · 60d. 기본 7d |
tier optional | enum | 구독자 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. growth(성장량) · growth_pct(성장률%). 기본 growth |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
tier 값 (현재 구독자 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 10만 미만 Mid-tier 10만 이상 ~ 50만 미만 Macro 50만 이상 ~ 100만 미만 Mega 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/rising?period=7d&tier=Micro&sort=growth&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/rising",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "growth", # "growth_pct"면 성장률 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
tier: "Micro",
sort: "growth",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/rising?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"period": "7d",
"tier": "Micro",
"sort": "growth",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"channel_id": "UCxxxxxxxx",
"title": "채널명",
"tier": "Micro",
"current_subs": 82000,
"base_subs": 61000,
"growth": 21000,
"growth_pct": 34.43
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].channel_id | string | YouTube 채널 고유 ID |
data[].title | string | 채널명 |
data[].tier | enum | 구독자 규모 티어 |
data[].current_subs | integer | 현재 구독자 수 |
data[].base_subs | integer | 기준 시점(N일 전) 구독자 수 |
data[].growth | integer | 성장량 (현재 − 기준) |
data[].growth_pct | float | 성장률 %. 기준이 0이면 null |
·
current_subs — 현재 기준 구독자 수·
base_subs — 비교 기준이 되는 과거 구독자 수. 예: period=7d이면 약 7일 전 구독자 수·
growth = current_subs − base_subs·
growth_pct = growth ÷ base_subs × 100
광고 반응 TOP 크리에이터 (Ad Top · YouTube)
협찬·PPL 영상으로 실제 반응(조회수)을 잘 뽑아내는 YouTube 크리에이터를 기간·티어별로 훑어봅니다. Rising이 구독자 성장세를 본다면, 이 데이터는 광고 콘텐츠의 반응을 기준으로 한 TOP 50입니다. 어떤 크리에이터에게 협찬을 맡겼을 때 조회수가 잘 나오는지 가볍게 살펴보는 용도입니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 집계 기간창. 7d · 30d · 60d. 기본 7d |
tier optional | enum | 구독자 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. total_views(광고 영상 조회수 합) · ad_post_count(광고 영상 수). 기본 total_views |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
tier 값 (현재 구독자 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 10만 미만 Mid-tier 10만 이상 ~ 50만 미만 Macro 50만 이상 ~ 100만 미만 Mega 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/ad-top?period=7d&tier=Micro&sort=total_views&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/ad-top",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "total_views", # "ad_post_count"면 광고 영상 수 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
tier: "Micro",
sort: "total_views",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/ad-top?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"period": "7d",
"tier": "Micro",
"sort": "total_views",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"title": "크리에이터 채널명",
"tier": "Micro",
"subscribers": 52000,
"ad_post_count": 8,
"total_views": 1240000
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].channel_id | string | YouTube 채널 고유 ID (조인 키) |
data[].title | string | 채널명 |
data[].tier | enum | 구독자 규모 티어 |
data[].subscribers | integer | 집계 시점 구독자 수 |
data[].ad_post_count | integer | 해당 기간 광고(협찬/PPL) 영상 수 |
data[].total_views | integer | 해당 기간 광고 영상 조회수 합산 |
카테고리별 숏폼 반응 TOP 크리에이터 (Category Top · YouTube)
특정 카테고리·체급에서 숏폼(Shorts)으로 실제 반응(조회수)을 잘 뽑아내는 YouTube 크리에이터를 훑어봅니다. Ad Top이 광고 영상만 보는 반면, 이 데이터는 전체 숏폼을 대상으로 기간×카테고리×티어별 TOP을 담고 있습니다. "게임 마이크로 크리에이터 중 요즘 숏폼 조회수가 잘 나오는 사람"처럼 카테고리를 좁혀 살펴보는 용도입니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 집계 기간창. 7d · 30d · 60d. 기본 7d |
category optional | enum | 콘텐츠 카테고리 (아래 category 값 참고). 생략 시 전 카테고리 대상 |
tier optional | enum | 구독자 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. total_views(숏폼 조회수 합) · video_count(숏폼 영상 편수). 기본 total_views |
limit optional | integer (1–50) | 가져올 개수. 기본 10 |
category 값
뷰티 & 메이크업 피트니스 & 다이어트 패션 & 의류 음식 & 음료 일상 & 라이프스타일 리빙 & 인테리어 부동산 연애 & 결혼 육아 게임 IT & 전자기기 레저 & 스포츠 의료 & 건강 엔터테인먼트 주식 & 투자 금융 & 보험 경제 & 경영 수학 & 과학 종교 교육 & 커리어 동물 (펫) 사회 & 이슈 취미 & 공예 & 디자인 자동차 여행 & 캠핑 기타 뉴스 & 정치 음악 코미디
tier 값 (현재 구독자 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 10만 미만 Mid-tier 10만 이상 ~ 50만 미만 Macro 50만 이상 ~ 100만 미만 Mega 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/category-top?period=7d&category=게임&tier=Micro&sort=total_views&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/category-top",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"category": "게임", # 생략하면 전 카테고리 대상
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "total_views", # "video_count"면 숏폼 영상 편수 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
category: "게임",
tier: "Micro",
sort: "total_views",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/category-top?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"period": "7d",
"category": "게임",
"tier": "Micro",
"sort": "total_views",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"title": "채널명",
"category": "게임",
"tier": "Micro",
"subscribers": 52000,
"video_count": 8,
"total_views": 1240000
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].channel_id | string | YouTube 채널 고유 ID (조인 키) |
data[].title | string | 채널명 |
data[].category | enum | 콘텐츠 카테고리 |
data[].tier | enum | 구독자 규모 티어 |
data[].subscribers | integer | 집계 시점 구독자 수 |
data[].video_count | integer | 해당 기간 숏폼 영상 편수 |
data[].total_views | integer | 해당 기간 숏폼 영상 조회수 합산 |
광고 콘텐츠 목록 (Ad Content · YouTube)
브랜드 협찬·PPL이 붙은 YouTube 광고 영상 하나하나를 기간·브랜드 카테고리·구독자 규모(tier)로 필터해 지표(조회수·좋아요·댓글) 순으로 반환합니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 업로드 기간창. 최근 7d · 30d · 60d 이내 업로드분만 조회. 기본 7d |
sort optional | enum | 정렬 기준(내림차순). views · likes · comments · subscribers. 기본 views |
category optional | enum | 브랜드 카테고리 (아래 category 값 참고). 생략 시 전 카테고리 대상 |
tier optional | enum | 구독자 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
category 값
뷰티 & 메이크업 피트니스 & 다이어트 패션 & 의류 음식 & 음료 리빙 & 인테리어 정부기관 결혼 & 육아 게임 IT & 전자기기 레저 & 스포츠 의료 & 건강 엔터테인먼트 주식 & 투자 경제 & 경영 교육 & 커리어 동물 (펫) 취미 & 공예 & 디자인 자동차 여행
tier 값 (현재 구독자 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 10만 미만 Mid-tier 10만 이상 ~ 50만 미만 Macro 50만 이상 ~ 100만 미만 Mega 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/ad-content/list?period=30d&category=%EB%B7%B0%ED%8B%B0%20%26%20%EB%A9%94%EC%9D%B4%ED%81%AC%EC%97%85&sort=views&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/ad-content/list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "30d",
"sort": "views", # views / likes / comments / subscribers
"category": "뷰티 & 메이크업", # 생략하면 전 카테고리 대상
"tier": "Micro", # 생략하면 전 티어 대상
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "30d",
sort: "views",
category: "뷰티 & 메이크업",
tier: "Micro",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/ad-content/list?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"count": 10,
"data": [
{
"video_id": "abcd1234",
"video_url": "https://www.youtube.com/watch?v=abcd1234",
"video_thumbnails_url": "https://i.ytimg.com/vi/abcd1234/hqdefault.jpg",
"video_type": 0,
"channel_id": "UCxxxxxxxx",
"channel_title": "채널명",
"title": "신제품 협찬 리뷰",
"video_description": "이 영상은 유료 광고를 포함하고 있습니다 ...",
"views": 421000,
"likes": 12800,
"comments": 640,
"subscribers": 52000,
"duration_seconds": 492,
"ads_yn": 1,
"brand1": "브랜드A",
"brand2": null,
"brand3": null,
"publishDate": "2026-07-02T09:00:00",
"last_update": "2026-07-15T04:00:00"
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
count | integer | 반환된 항목 수 |
data[].video_id | string | YouTube 영상 고유 ID |
data[].video_url | string (URL) | 영상 URL |
data[].video_thumbnails_url | string (URL) | 영상 썸네일 URL |
data[].video_type | integer | 영상 유형 코드 (롱폼/숏폼 등) |
data[].channel_id | string | 업로드 채널 ID |
data[].channel_title | string | 채널명 |
data[].title | string | 영상 제목 |
data[].video_description | string | 영상 설명(본문) |
data[].views | integer | 조회수 |
data[].likes | integer | 좋아요 수 |
data[].comments | integer | 댓글 수 |
data[].subscribers | integer | 업로드 채널의 구독자 수 |
data[].duration_seconds | integer | 영상 길이(초) |
data[].ads_yn | integer | 광고 여부 (0/1) |
data[].brand1 · brand2 · brand3 | string | 영상에 언급된 브랜드(최대 3개). 없으면 null |
data[].publishDate | datetime | 업로드 일시 |
data[].last_update | datetime | 데이터 최종 갱신 일시 |
광고 콘텐츠 지표 집계 (Ad Content Stats · YouTube)
위 광고 콘텐츠 목록과 동일한 필터(기간·브랜드 카테고리·구독자 규모)로 거른 광고 영상들의 조회수·좋아요·댓글에 대한 합계·영상당 평균·중앙값과 영상 수를 한 건으로 집계해 반환합니다. Category Top이 '크리에이터' 집계라면 이 API는 '콘텐츠 지표' 집계입니다. "이번 달 뷰티 광고 영상의 평균 조회수는?" 같은 질문에 어울립니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 업로드 기간창. 7d · 30d · 60d. 기본 7d |
category optional | enum | 브랜드 카테고리 (목록 API의 category 값과 동일). 생략 시 전 카테고리 합산 |
tier optional | enum | 구독자 규모 티어 (목록 API의 tier 값과 동일). 생략 시 전 티어 |
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/ad-content/stats?period=30d&category=%EB%B7%B0%ED%8B%B0%20%26%20%EB%A9%94%EC%9D%B4%ED%81%AC%EC%97%85&tier=Micro"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/ad-content/stats",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "30d",
"category": "뷰티 & 메이크업", # 생략하면 전 카테고리 합산
"tier": "Micro", # 생략하면 전 티어
},
)
print(resp.json())
const params = new URLSearchParams({
period: "30d",
category: "뷰티 & 메이크업",
tier: "Micro",
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/ad-content/stats?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"period": "30d",
"category": "뷰티 & 메이크업",
"tier": "Micro",
"video_count": 128,
"total_views": 45200000,
"total_likes": 1320000,
"total_comments": 88000,
"avg_views": 353125.0,
"avg_likes": 10312.5,
"avg_comments": 687.5,
"median_views": 210000.0,
"median_likes": 6400.0,
"median_comments": 410.0
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
period | enum | 요청한 기간창 |
category | enum · null | 요청한 브랜드 카테고리 (미지정 시 null = 전 카테고리 합산) |
tier | enum · null | 요청한 구독자 규모 티어 (미지정 시 null) |
video_count | integer | 집계 대상 광고 영상 수 |
total_views · total_likes · total_comments | integer | 조회수·좋아요·댓글 합계 |
avg_views · avg_likes · avg_comments | float | 영상당 평균 (소수 첫째 자리 반올림) |
median_views · median_likes · median_comments | float | 중앙값 (percentiles 50th 근사값) |
키워드 영상 검색 (Video Search · YouTube)
검색 키워드로 YouTube 영상 제목(title)을 매칭해, 최근 60일 이내 업로드된 영상을 조회수 내림차순으로 반환합니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
keyword required | string (1자 이상) | 검색 키워드. 영상 제목에서 매칭 |
limit optional | integer (1–20) | 가져올 개수. 기본 20 |
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/youtube/search/video_list?keyword=%EC%BA%A0%ED%95%91&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/youtube/search/video_list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"keyword": "캠핑",
"limit": 10, # 1~20, 기본 20
},
)
print(resp.json())
const params = new URLSearchParams({
keyword: "캠핑",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/youtube/search/video_list?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"keyword": "캠핑",
"count": 10,
"videos": [
{
"video_id": "abcd1234",
"duration_seconds": 612,
"publishDate": "2026-07-02T09:00:00",
"title": "가을 캠핑 필수템 정리",
"video_description": "이번 영상에서는 가을 캠핑에 꼭 필요한 ...",
"ads_yn": 0,
"video_thumbnails_url": "https://i.ytimg.com/vi/abcd1234/hqdefault.jpg",
"views": 421000
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
platform | string | 항상 "youtube" |
keyword | string | 요청한 검색 키워드 |
count | integer | 반환된 항목 수 (최대 limit) |
videos[].video_id | string | YouTube 영상 고유 ID (영상 URL은 https://www.youtube.com/watch?v={video_id}) |
videos[].duration_seconds | integer | 영상 길이(초) |
videos[].publishDate | datetime | 업로드 일시 (최근 60일 이내) |
videos[].title | string | 영상 제목 |
videos[].video_description | string | 영상 설명(본문) |
videos[].ads_yn | integer | 광고 여부 (0/1) |
videos[].video_thumbnails_url | string (URL) | 영상 썸네일 URL |
videos[].views | integer | 조회수 (정렬 기준, 내림차순) |
롱폼 트렌딩 리스트
특정 날짜(target_date)에 수집된 YouTube 롱폼 트렌딩 영상 TOP을 rank 오름차순으로 반환합니다. 하루 스냅샷 기준 최대 20개이며, 각 영상에 채널 상세 정보가 붙습니다.
422). 조회 기준일은 수집 시각(insert_time)이 해당 날짜와 같은 행을 대상으로 합니다.Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
target_date required | string (date) | 조회 기준 날짜. YYYY-MM-DD 형식. 2025-10-26 이후만 조회 가능 |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"target_date": "2026-07-06"}' \
"https://partner-api.ugwanggi.com/v1/youtube/trending/long_form_list"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/youtube/trending/long_form_list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"target_date": "2026-07-06"},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/youtube/trending/long_form_list",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ target_date: "2026-07-06" }),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"target_date": "2026-07-06",
"count": 20,
"data": [
{
"rank": 1,
"video_id": "abcdEFGH123",
"title": "영상 제목",
"channel_id": "UCxxxxxxxx",
"views": 1284000,
"likes": 52000,
"comments": 3100,
"channel_name": "채널명",
"custom_channel_id": "@channel_handle",
"channel_title": "채널명",
"channel_thumbnail": "https://.../photo.jpg",
"channel_total_videos": 842
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
platform | string | 항상 "youtube" |
target_date | date | 조회한 기준 날짜. YYYY-MM-DD |
count | integer | 반환된 항목 수 (최대 20) |
data[].rank | integer | 트렌딩 순위 (1~20, 오름차순) |
data[].video_id | string | YouTube 영상 ID |
data[].title | string | 영상 제목 |
data[].channel_id | string | 영상이 속한 YouTube 채널 ID |
data[].views | integer | 영상 조회수 |
data[].likes | integer | 영상 좋아요 수 |
data[].comments | integer | 영상 댓글 수 |
data[].channel_name | string | 채널명 (channel_title과 동일 값) |
data[].custom_channel_id | string | 채널 커스텀 핸들 (예: @handle) |
data[].channel_title | string | 채널명 |
data[].channel_thumbnail | string | 채널 썸네일 이미지 URL |
data[].channel_total_videos | integer | 채널의 총 영상 수 |
POST /v1/youtube/trending/shorts_list를 사용하세요.숏폼 트렌딩 리스트
특정 날짜(target_date)에 수집된 YouTube 숏폼(shorts) 트렌딩 영상 TOP을 rank 오름차순으로 반환합니다. 하루 스냅샷 기준 최대 20개이며, 각 영상에 채널 상세 정보가 붙습니다. 롱폼 트렌딩과 요청·응답 형식이 동일하고 대상 테이블만 다릅니다.
422). 조회 기준일은 수집 시각(insert_time)이 해당 날짜와 같은 행을 대상으로 합니다.Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
target_date required | string (date) | 조회 기준 날짜. YYYY-MM-DD 형식. 2025-10-26 이후만 조회 가능 |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"target_date": "2026-07-06"}' \
"https://partner-api.ugwanggi.com/v1/youtube/trending/shorts_list"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/youtube/trending/shorts_list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"target_date": "2026-07-06"},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/youtube/trending/shorts_list",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ target_date: "2026-07-06" }),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"target_date": "2026-07-06",
"count": 20,
"data": [
{
"rank": 1,
"video_id": "abcdEFGH123",
"title": "숏폼 영상 제목",
"channel_id": "UCxxxxxxxx",
"views": 3820000,
"likes": 210000,
"comments": 4500,
"channel_name": "채널명",
"custom_channel_id": "@channel_handle",
"channel_title": "채널명",
"channel_thumbnail": "https://.../photo.jpg",
"channel_total_videos": 842
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
platform | string | 항상 "youtube" |
target_date | date | 조회한 기준 날짜. YYYY-MM-DD |
count | integer | 반환된 항목 수 (최대 20) |
data[].rank | integer | 트렌딩 순위 (1~20, 오름차순) |
data[].video_id | string | YouTube 영상 ID |
data[].title | string | 영상 제목 |
data[].channel_id | string | 영상이 속한 YouTube 채널 ID |
data[].views | integer | 영상 조회수 |
data[].likes | integer | 영상 좋아요 수 |
data[].comments | integer | 영상 댓글 수 |
data[].channel_name | string | 채널명 (channel_title과 동일 값) |
data[].custom_channel_id | string | 채널 커스텀 핸들 (예: @handle) |
data[].channel_title | string | 채널명 |
data[].channel_thumbnail | string | 채널 썸네일 이미지 URL |
data[].channel_total_videos | integer | 채널의 총 영상 수 |
트렌딩 리포트 (일일 인사이트)
특정 날짜(report_date)의 YouTube 트렌딩을 요약·해석한 일일 인사이트 리포트를 반환합니다. 영상 리스트가 아니라, 그날의 트렌드 요약과 기회·리스크·실행 제안을 담은 섹션 묶음입니다.
422). 해당 날짜에 데이터가 없으면 단일 섹션은 null, 리스트 섹션은 빈 배열([])로 반환됩니다.Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
target_date required | string (date) | 리포트 기준 날짜. YYYY-MM-DD 형식. 2025-11-26 이후만 조회 가능 |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"target_date": "2026-07-06"}' \
"https://partner-api.ugwanggi.com/v1/youtube/trending/report"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/youtube/trending/report",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"target_date": "2026-07-06"},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/youtube/trending/report",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ target_date: "2026-07-06" }),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"target_date": "2026-07-06",
"report": {
"summary": {
"summary_title": "오늘의 트렌드 요약",
"summary": "숏폼 챌린지와 요리 콘텐츠가 강세...",
"reason": "조회수 상위권에 관련 영상이 집중..."
},
"category_and_format": {
"summary_title": "카테고리·포맷 인사이트",
"summary": "엔터/음악 카테고리의 롱폼 비중이 상승..."
},
"chance_and_risk_title": "지금이 기회, 다만 주의할 점",
"actions": [
{
"action_title": "챌린지 포맷 실험",
"action_description": "짧은 참여형 챌린지 영상을 시도해 보세요."
}
],
"chances": [
{
"chance_title": "요리 숏폼 수요 급증",
"chance_description": "간단 레시피 숏폼의 반응이 좋습니다."
}
],
"risks": [
{
"risk_title": "특정 밈 과포화",
"risk_description": "유행 밈은 소비 주기가 짧아 리스크가 있습니다."
}
]
}
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
platform | string | 항상 "youtube" |
target_date | date | 조회한 기준 날짜. YYYY-MM-DD |
report | object | 리포트 본문. 아래 섹션들로 구성 |
report.summary | object | null | 그날 트렌드 총평 (단일). summary_title · summary · reason |
report.category_and_format | object | null | 카테고리·포맷 인사이트 (단일). summary_title · summary |
report.chance_and_risk_title | string | null | 기회·리스크 섹션을 아우르는 헤드라인 문구 |
report.actions[] | object[] | 실행 제안 리스트. 각 항목 action_title · action_description |
report.chances[] | object[] | 기회 요인 리스트. 각 항목 chance_title · chance_description |
report.risks[] | object[] | 리스크 요인 리스트. 각 항목 risk_title · risk_description |
트렌드 키워드 리스트
특정 날짜(target_date)에 선정된 YouTube 트렌드 키워드를 순위(rank) 오름차순으로 반환합니다. 키워드·설명에 더해 키워드별 관련 영상 목록(related_videos)과 그 영상들의 조회수 합계(total_views)·영상 수(video_count)를 함께 담습니다.
422). 날짜는 키워드 ID 앞 8자리(YYYYMMDD)로 판별하며, 채널 정보가 없어 응답에 채널 필드는 포함되지 않습니다.Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
target_date required | string (date) | 조회 기준 날짜. YYYY-MM-DD 형식. 2025-11-03 이후만 조회 가능 |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"target_date": "2026-07-06"}' \
"https://partner-api.ugwanggi.com/v1/youtube/trending/keyword_list"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/youtube/trending/keyword_list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"target_date": "2026-07-06"},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/youtube/trending/keyword_list",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ target_date: "2026-07-06" }),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "youtube",
"target_date": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"keyword": "여름 휴가 브이로그",
"keyword_description": "휴가 시즌을 맞아 여행·일상 브이로그 검색이 급증했습니다.",
"total_views": 12500000,
"video_count": 42,
"related_videos": [
{
"video_id": "abc123",
"title": "제주도 3박4일 여름 휴가 브이로그",
"channel_id": "UCxxxxxxxx",
"channel_title": "여행하는 민지",
"views": 820000,
"likes": 15400,
"comments": 1200,
"video_thumbnails_url": "https://i.ytimg.com/vi/abc123/hqdefault.jpg",
"video_url": "https://www.youtube.com/watch?v=abc123",
"publishDate": "2026-07-03T09:00:00"
}
]
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
platform | string | 항상 "youtube" |
target_date | date | 조회한 기준 날짜. YYYY-MM-DD |
count | integer | 반환된 키워드 수 |
data[].rank | integer | 키워드 순위 (오름차순) |
data[].keyword | string | 트렌드 키워드 |
data[].keyword_description | string | 키워드가 선정된 배경·설명 |
data[].total_views | integer | 관련 영상들의 조회수 합계 (related_videos 기준 집계) |
data[].video_count | integer | 관련 영상 수 (related_videos 개수) |
data[].related_videos | object[] | 키워드에 묶인 관련 영상 목록 |
data[].related_videos[].video_id | string | 영상 ID |
data[].related_videos[].title | string | 영상 제목 |
data[].related_videos[].channel_id | string | 채널 ID |
data[].related_videos[].channel_title | string | 채널명 |
data[].related_videos[].views | integer | 조회수 |
data[].related_videos[].likes | integer | 좋아요 수 |
data[].related_videos[].comments | integer | 댓글 수 |
data[].related_videos[].video_thumbnails_url | string | 썸네일 URL |
data[].related_videos[].video_url | string | 영상 URL |
data[].related_videos[].publishDate | datetime | 영상 게시일 |
크리에이터 목록 조회
조건에 맞는 Instagram 크리에이터를 정렬·필터하여 반환합니다. 각 크리에이터 객체는 Instagram 지표 체계(followers · feed · reel · ad)를 사용하며, 단건 조회 응답의 data와 완전히 같은 형태입니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
sort optional | enum | 정렬 기준 (아래 값 참고). 기본 followers |
order optional | asc · desc | 정렬 방향. 기본 desc |
limit optional | integer (1–100) | 가져올 개수. 기본 20 |
offset optional | integer (≥0) | 페이지네이션 시작 위치. offset + limit이 10,000을 초과하면 422 |
q optional | string (1–50자) | 이름 검색어. 부분일치이며 대소문자를 구분하지 않습니다. 표시명(username)과 핸들(user_id)을 모두 검색합니다 |
category optional | enum | 주제 카테고리. 아래 topic 값 20종 중 하나와 정확히 일치해야 하며, 목록에 없는 값은 422. 대표 주제 하나가 아니라 보유한 주제 배열 전체를 대상으로 매칭합니다 |
keyword optional | string (1–50자) | 콘텐츠 키워드 검색어. 예: 다이어트. 형태소·동의어 기반 매칭이라 YouTube의 channel_keyword(단순 부분일치)와 동작이 다릅니다 |
user_type optional | enum | 계정 성격. 아래 user_type 값 6종 중 하나 |
mood optional | enum | 콘텐츠 톤&무드. 아래 mood 값 11종 중 하나. 크리에이터는 무드를 여러 개 가지며 하나라도 일치하면 매칭됩니다 |
min_followers optional | integer | 최소 팔로워 수 |
max_followers optional | integer | 최대 팔로워 수 (숨은 라이징 탐색 등) |
has_ad optional | boolean | 광고 이력 보유 여부 |
sort 값
sort 키는 짧은 별칭이고, 실제 정렬은 아래 대응 응답 필드 값으로 이뤄집니다. 예를 들어 sort=avg_views는 reel.avg_views_last_10_org_reel 기준 정렬입니다.
sort | 대응 응답 필드 | 설명 |
|---|---|---|
followers | followers | 팔로워 수 (기본값) |
avg_views | reel.avg_views_last_10_org_reel | 릴스 평균 조회수 (일반) |
ad_views | reel.avg_views_last_10_ad_reel | 릴스 평균 조회수 (광고) |
engagement_reel | reel.engagement_pct_last_10_org_reel | 릴스 참여율 |
engagement_feed | feed.engagement_pct_last_10_org_feed | 피드 참여율 |
reach_efficiency | reel.reels_followers_per_view | 팔로워 대비 조회 효율 |
recent_post | latest_post_publish_date | 최근 게시 순 |
engagement도 두 가지입니다. reach_efficiency는 값이 클수록 팔로워 대비 도달이 좋다는 뜻이며, 팔로워가 극히 적은 계정이 상위를 차지하기 쉬우므로 min_followers와 함께 쓰는 것을 권합니다.engagement : (Σlikes + Σcomments) × 100 ÷ Σviews 최근 10개의 게시물을 대상으로 팔로워 대비 얼마나 활발하게 반응하는지 계산된 지표입니다.Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/creators?category=뷰티&user_type=휴먼 인플루언서&sort=followers&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/creators",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"category": "뷰티",
"user_type": "휴먼 인플루언서", # 브랜드 계정·커머스 셀러 제외
"sort": "followers",
"order": "desc",
"limit": 10,
# "keyword": "다이어트", # 동의어 확장 검색
# "mood": "감성적",
# "min_followers": 10000,
# "has_ad": True,
},
)
print(resp.json())
const params = new URLSearchParams({
category: "뷰티",
user_type: "휴먼 인플루언서",
sort: "followers",
order: "desc",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/creators?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"total": 33359,
"limit": 10,
"offset": 0,
"sort": "followers",
"order": "desc",
"data": [
{
"user_id": "example.beauty",
"username": "이그잼플뷰티 | Example Beauty",
"profile_picture_url": "https://...",
"user_type": "휴먼 인플루언서",
"content_function": ["리뷰", "꿀팁/하우투"],
"topic": ["뷰티", "패션"],
"mood": ["러블리/귀여운", "밝은"],
"persona": "얼굴 중심",
"keywords": ["뷰티", "메이크업", "스킨케어"],
"target_countries": ["KR", "JP"],
"followers": 146266,
"following": 412,
"follower_following_ratio": 355.01,
"posts": 1627,
"has_ad": true,
"latest_post_publish_date": "2026-07-31T08:15:34",
"demographics": { "primary_age": "25-34세", "primary_gender": "F", "primary_audience_ratio": 31.2 },
"feed": { "...": "피드 성과 지표" },
"reel": { "...": "릴스 성과 지표" },
"ad": { "...": "광고 산업 정보" }
}
]
}
feed · reel · ad · demographics 객체 포함). 조건에 맞는 크리에이터가 없어도 200 OK(빈 data, total: 0)입니다.활용 예시
| 목적 | 파라미터 |
|---|---|
| 브랜드 계정을 제외한 뷰티 인플루언서 | ?category=뷰티&user_type=휴먼 인플루언서&limit=10 |
| 광고 반응이 좋은 크리에이터 | ?has_ad=true&sort=ad_views&limit=10 |
| 릴스 참여율이 높은 크리에이터 | ?sort=engagement_reel&min_followers=10000&limit=10 |
| 숨은 라이징 (도달 효율 기준) | ?max_followers=50000&min_followers=5000&sort=reach_efficiency&limit=10 |
| 특정 키워드를 다루는 크리에이터 | ?keyword=다이어트&sort=followers&limit=10 |
| 무드로 톤 맞추기 | ?mood=감성적&sort=engagement_feed&limit=10 |
| 이름으로 찾기 | ?q=뷰티&limit=10 |
크리에이터 단건 조회
user_id로 특정 Instagram 크리에이터의 상세 정보를 반환합니다.
Path parameters
| 이름 | 타입 | 설명 |
|---|---|---|
user_id required | string | Instagram 사용자 핸들(고유 ID). 예: example.motors |
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/creators/example.motors"
import requests
user_id = "example.motors"
resp = requests.get(
f"https://partner-api.ugwanggi.com/v1/instagram/creators/{user_id}",
headers={"Authorization": "Bearer ug_live_xxxxx"},
)
print(resp.json())
const userId = "example.motors";
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/creators/${userId}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"data": {
"user_id": "example.motors",
"username": "이그잼플모터스 | Example Motors",
"profile_picture_url": "https://...",
"user_type": "공식/브랜드 계정",
"content_function": ["프로모션/광고", "큐레이션/에디토리얼"],
"topic": ["자동차"],
"mood": ["럭셔리", "미니멀", "시크"],
"persona": "제품 중심",
"keywords": ["ExampleMotors", "이그잼플모터스", "전기차", "SUV", "디자인"],
"target_countries": ["KR"],
"followers": 146266,
"following": 28,
"follower_following_ratio": 5223.79,
"posts": 1627,
"has_ad": true,
"latest_post_publish_date": "2026-07-03T17:35:33",
"demographics": {
"primary_age": "35-44세",
"primary_gender": "M",
"primary_audience_ratio": 22.75
},
"feed": {
"feed_share_pct": 65.88,
"avg_likes_last_10_org_feed": 311.7,
"avg_likes_last_10_ad_feed": 1399.0,
"avg_comments_last_10_org_feed": 2.0,
"avg_comments_last_10_ad_feed": 40.0,
"engagement_pct_last_10_org_feed": 2.14,
"engagement_pct_last_10_ad_feed": 0.98
},
"reel": {
"reel_share_pct": 34.12,
"avg_views_last_10_org_reel": 18328.2,
"avg_views_last_10_ad_reel": null,
"engagement_pct_last_10_org_reel": 2.06,
"engagement_pct_last_10_ad_reel": null,
"reels_followers_per_view": 12.53,
"reels_engagement_ratio": 0.01
},
"ad": {
"primary_ad_industry": "자동차",
"primary_ad_industry_ratio": 100.0,
"ad_industries": ["자동차"]
}
}
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
user_id | string | Instagram 사용자 핸들(고유 ID) |
username | string | 표시 이름. 없을 수 있음(null) |
profile_picture_url | string (URL) | 프로필 이미지 URL |
user_type | enum | 계정 유형. 고정값 (아래 user_type 값 참고) |
content_function | enum[] | 콘텐츠 기능/역할 태그(복수). 고정값 (아래 content_function 값 참고) |
topic | enum[] | 분야/주제 태그(복수). 고정값 (아래 topic 값 참고) |
mood | enum[] | 무드/톤 태그(복수). 고정값 (아래 mood 값 참고) |
persona | enum | 페르소나(연출 방식). 고정값 (아래 persona 값 참고) |
keywords | string[] | 관련 키워드 목록 |
target_countries | string[] | 주요 타겟 국가 코드. 예: KR |
followers | integer | 팔로워 수. 없을 수 있음(null) |
following | integer | 팔로잉 수 |
follower_following_ratio | float | 팔로워/팔로잉 비율. 없을 수 있음(null) |
posts | integer | 총 게시물 수 |
has_ad | boolean | 광고/협찬 이력 보유 여부 |
latest_post_publish_date | datetime | 최근 게시물 발행 시각 (ISO 8601) |
demographics | object | 주요 오디언스 요약 (아래 demographics 참고) |
feed | object | 피드 성과 지표 (아래 feed 참고) |
reel | object | 릴스 성과 지표 (아래 reel 참고) |
ad | object | 광고 산업 정보 (아래 ad 참고) |
*_ad_* 지표가, 반대로 일반 게시물이 없으면 *_org_* 지표가 null로 반환됩니다.demographics 객체
주요 오디언스(대표 세그먼트)를 요약한 객체입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
primary_age | string | 주요 오디언스 연령대. 예: 25-34세 |
primary_gender | string | 주요 오디언스 성별. F(여성) · M(남성) |
primary_audience_ratio | float | 주요 오디언스 비율(%) |
feed 객체
피드(일반 게시물) 성과 지표입니다. org는 일반, ad는 광고 게시물 기준이며 모두 최근 10개 평균입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
feed_share_pct | float | 전체 게시물 중 피드 비율(%) |
avg_likes_last_10_org_feed | float | 일반 피드 평균 좋아요 |
avg_likes_last_10_ad_feed | float | 광고 피드 평균 좋아요 |
avg_comments_last_10_org_feed | float | 일반 피드 평균 댓글 |
avg_comments_last_10_ad_feed | float | 광고 피드 평균 댓글 |
engagement_pct_last_10_org_feed | float | 일반 피드 참여율(%) |
engagement_pct_last_10_ad_feed | float | 광고 피드 참여율(%) |
reel 객체
릴스 성과 지표입니다. org는 일반, ad는 광고 릴스 기준이며 모두 최근 10개 평균입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
reel_share_pct | float | 전체 게시물 중 릴스 비율(%) |
avg_views_last_10_org_reel | float | 일반 릴스 평균 조회수 |
avg_views_last_10_ad_reel | float | 광고 릴스 평균 조회수 |
engagement_pct_last_10_org_reel | float | 일반 릴스 참여율(%) |
engagement_pct_last_10_ad_reel | float | 광고 릴스 참여율(%) |
reels_followers_per_view | float | 팔로워 대비 조회 비율 |
reels_engagement_ratio | float | 조회 대비 참여 비율 |
ad 객체
광고 진행 이력이 있는 산업 정보입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
primary_ad_industry | enum | 주요 광고 산업. 고정값 (아래 ad_industries 값 참고). 없을 수 있음(null) |
primary_ad_industry_ratio | float | 주요 광고 산업 비율(%) |
ad_industries | enum[] | 광고 이력이 있는 산업 목록. 고정값 (아래 ad_industries 값 참고) |
ad_industries 값
ad_industries와 primary_ad_industry에 공통으로 쓰이는 고정값입니다.
IT & 전자기기 음식 & 음료 엔터테인먼트 쇼핑 & 유통 패션 & 의류 뷰티 & 메이크업 리빙 & 인테리어 자동차 게임 의료 & 건강 금융 & 보험 여행 취미 & 공예 & 디자인 교육 & 커리어 결혼 & 육아 정부기관 피트니스 & 다이어트 기타산업 주식 & 투자 레저 & 스포츠 에너지 & 환경 부동산 & 건설 동물 (펫) 국제 & 비영리 단체 경제 & 경영 수학 & 과학 사회 & 이슈
user_type 값
휴먼 인플루언서 공식/브랜드 계정 미디어/파워페이지 커머스 셀러 커뮤니티/테마 페이지 일러스트/웹툰
content_function 값
리뷰 꿀팁/하우투 일상/공감 엔터테인먼트 루틴 프로모션/광고 큐레이션/에디토리얼
topic 값
뷰티 패션 푸드 여행 육아 반려동물 인테리어/리빙 관능/섹시 아트/문화 엔터테인먼트 테크/디지털 스포츠/피트니스 자동차 게임 교육/커리어 연애/결혼 의료/건강 취미/레저 종교/신앙 사회/정치/경제
mood 값
밝은 자연스러운 다크/무디 럭셔리 미니멀 관능/섹시 스트릿 러블리/귀여운 시크 유머러스 감성적
persona 값
얼굴 중심 목소리/자막 중심 제품 중심 가족 중심 반려동물 중심 인물 미등장/편집형 일러스트/웹툰
크리에이터 벌크 조회
여러 user_id(최대 50개)를 한 번에 조회합니다. 존재하는 것은 요청 순서대로 data에, 없는 것은 not_found에 담아 반환합니다.
Body parameters
| 이름 | 타입 | 설명 |
|---|---|---|
user_ids required | string[] | 조회할 Instagram 핸들 배열. 1~50개. 중복은 자동 제거됩니다. |
Request
curl -X POST -H "Authorization: Bearer ug_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"user_ids": ["example.beauty", "example.motors", "no.such.handle"]}' \
"https://partner-api.ugwanggi.com/v1/instagram/creators/batch"
import requests
resp = requests.post(
"https://partner-api.ugwanggi.com/v1/instagram/creators/batch",
headers={"Authorization": "Bearer ug_live_xxxxx"},
json={"user_ids": ["example.beauty", "example.motors", "no.such.handle"]},
)
print(resp.json())
const resp = await fetch(
"https://partner-api.ugwanggi.com/v1/instagram/creators/batch",
{
method: "POST",
headers: {
Authorization: "Bearer ug_live_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
user_ids: ["example.beauty", "example.motors", "no.such.handle"],
}),
},
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"requested": 3,
"found": 2,
"data": [
{ "user_id": "example.beauty", "username": "이그잼플뷰티", "followers": 146266, ... },
{ "user_id": "example.motors", "username": "이그잼플모터스", "followers": 98120, ... }
],
"not_found": ["no.such.handle"]
}
data와 동일합니다. 요즘 뜨는 크리에이터 (Rising · Instagram)
최근 기간 동안 팔로워를 크게 모은 Instagram 크리에이터를 기간·티어별로 훑어봅니다. YouTube Rising과 동일한 성격의 데이터로, 깊이 있는 마케팅 분석용이라기보단 지금 트렌드상 갑자기 인기를 끌거나 핫해진 인플루언서를 가볍게 찾아보는 재미 위주의 데이터입니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 성장을 재는 기간창. 7d · 30d · 60d. 기본 7d |
tier optional | enum | 팔로워 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. growth(성장량) · growth_pct(성장률%). 기본 growth |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
tier 값 (현재 팔로워 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 5만 미만 Mid-tier 5만 이상 ~ 10만 미만 High-tier 10만 이상 ~ 20만 미만 Macro 20만 이상 ~ 50만 미만 Mega 50만 이상 ~ 100만 미만 Celeb 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/rising?period=7d&tier=Micro&sort=growth&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/rising",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "growth", # "growth_pct"면 성장률 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
tier: "Micro",
sort: "growth",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/rising?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"period": "7d",
"tier": "Micro",
"sort": "growth",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"user_id": "17841400000000000",
"username": "creator_handle",
"tier": "Micro",
"current_followers": 82000,
"base_followers": 61000,
"growth": 21000,
"growth_pct": 34.43
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].user_id | string | Instagram 유저 고유 ID (조인 키) |
data[].username | string | 유저명(핸들) |
data[].tier | enum | 팔로워 규모 티어 |
data[].current_followers | integer | 현재 팔로워 수 |
data[].base_followers | integer | 기준 시점(N일 전) 팔로워 수 |
data[].growth | integer | 성장량 (현재 − 기준) |
data[].growth_pct | float | 성장률 %. 기준이 0이면 null |
·
current_followers — 현재 기준 팔로워 수·
base_followers — 비교 기준이 되는 과거 팔로워 수. 예: period=7d이면 약 7일 전 팔로워 수·
growth = current_followers − base_followers·
growth_pct = growth ÷ base_followers × 100
광고 반응 TOP 크리에이터 (Ad Top · Instagram)
협찬·PPL 릴스로 실제 반응(조회수)을 잘 뽑아내는 Instagram 크리에이터를 기간·티어별로 훑어봅니다. Rising이 팔로워 성장세를 본다면, 이 데이터는 광고 콘텐츠의 반응을 기준으로 한 TOP 50입니다. 어떤 크리에이터에게 협찬을 맡겼을 때 조회수가 잘 나오는지 가볍게 살펴보는 용도입니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 집계 기간창. 7d · 30d · 60d. 기본 7d |
tier optional | enum | 팔로워 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. total_views(광고 릴스 조회수 합) · ad_post_count(광고 게시물 수). 기본 total_views |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
tier 값 (현재 팔로워 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 5만 미만 Mid-tier 5만 이상 ~ 10만 미만 High-tier 10만 이상 ~ 20만 미만 Macro 20만 이상 ~ 50만 미만 Mega 50만 이상 ~ 100만 미만 Celeb 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/ad-top?period=7d&tier=Micro&sort=total_views&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/ad-top",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "total_views", # "ad_post_count"면 광고 게시물 수 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
tier: "Micro",
sort: "total_views",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/ad-top?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"period": "7d",
"tier": "Micro",
"sort": "total_views",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"user_id": "17841400000000000",
"username": "creator_handle",
"tier": "Micro",
"followers": 52000,
"ad_post_count": 8,
"total_views": 1240000
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].user_id | string | Instagram 유저 고유 ID (조인 키) |
data[].username | string | 유저명(핸들) |
data[].tier | enum | 팔로워 규모 티어 |
data[].followers | integer | 집계 시점 팔로워 수 |
data[].ad_post_count | integer | 해당 기간 광고(협찬/PPL) 릴스 게시물 수 |
data[].total_views | integer | 해당 기간 광고 릴스 조회수 합산 |
카테고리별 릴스 반응 TOP 크리에이터 (Category Top · Instagram)
특정 카테고리·체급에서 릴스로 실제 반응(조회수)을 잘 뽑아내는 Instagram 크리에이터를 훑어봅니다. Ad Top이 광고 릴스만 보는 반면, 이 데이터는 전체 릴스를 대상으로 기간×카테고리×티어별 TOP 10을 담고 있습니다. "뷰티 마이크로 크리에이터 중 요즘 조회수가 잘 나오는 사람"처럼 카테고리를 좁혀 살펴보는 용도입니다.
calculated_at으로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 집계 기간창. 7d · 30d · 60d. 기본 7d |
category optional | enum | 콘텐츠 카테고리 (아래 category 값 참고). 생략 시 전 카테고리 대상 |
tier optional | enum | 팔로워 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
sort optional | enum | 정렬 기준. total_views(릴스 조회수 합) · reel_count(릴스 게시물 수). 기본 total_views |
limit optional | integer (1–50) | 가져올 개수. 그룹당 10개까지 집계되며 기본 10 |
category 값
뷰티 패션 푸드 여행 육아 반려동물 인테리어/리빙 관능/섹시 아트/문화 엔터테인먼트 테크/디지털 스포츠/피트니스 자동차 게임 교육/커리어 연애/결혼 의료/건강 취미/레저 종교/신앙 사회/정치/경제
tier 값 (현재 팔로워 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 5만 미만 Mid-tier 5만 이상 ~ 10만 미만 High-tier 10만 이상 ~ 20만 미만 Macro 20만 이상 ~ 50만 미만 Mega 50만 이상 ~ 100만 미만 Celeb 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/category-top?period=7d&category=뷰티&tier=Micro&sort=total_views&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/category-top",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "7d",
"category": "뷰티", # 생략하면 전 카테고리 대상
"tier": "Micro", # 생략하면 전 티어 대상
"sort": "total_views", # "reel_count"면 릴스 게시물 수 순
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "7d",
category: "뷰티",
tier: "Micro",
sort: "total_views",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/category-top?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"period": "7d",
"category": "뷰티",
"tier": "Micro",
"sort": "total_views",
"calculated_at": "2026-07-06",
"count": 10,
"data": [
{
"rank": 1,
"user_id": "17841400000000000",
"username": "creator_handle",
"category": "뷰티",
"tier": "Micro",
"followers": 52000,
"reel_count": 8,
"total_views": 1240000
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
calculated_at | date | 이 데이터의 기준일 (스냅샷 집계일). YYYY-MM-DD |
count | integer | 반환된 항목 수 |
data[].rank | integer | 정렬 기준상 순위 (1부터) |
data[].user_id | string | Instagram 유저 고유 ID (조인 키) |
data[].username | string | 유저명(핸들) |
data[].category | enum | 콘텐츠 카테고리 |
data[].tier | enum | 팔로워 규모 티어 |
data[].followers | integer | 집계 시점 팔로워 수 |
data[].reel_count | integer | 해당 기간 릴스 게시물 수 |
data[].total_views | integer | 해당 기간 릴스 조회수 합산 |
콘텐츠 목록 (Content · Instagram)
Instagram 게시물·릴스 하나하나를 기간·토픽·팔로워 규모(tier)·광고여부로 필터해 지표(조회수·좋아요·댓글·DM 발송수) 순으로 반환합니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
period optional | enum | 게시 기간창. 최근 7d · 30d · 60d 이내 게시분만 조회. 기본 7d |
sort optional | enum | 정렬 기준(내림차순). views · likes · comments · dm_send_count. 기본 views |
category optional | enum | 게시물 토픽 (아래 category 값 참고, 16종). 생략 시 전 토픽 대상 |
tier optional | enum | 팔로워 규모 티어 (아래 tier 값 참고). 생략 시 전 티어 대상 |
is_ad optional | boolean | 광고(협찬/PPL) 게시물 여부. true=광고만 · false=비광고만. 생략 시 전체 |
limit optional | integer (1–50) | 가져올 개수. 기본 20 |
category 값 (게시물 토픽 · 16종)
기타 뷰티(메이크업/헤어) 엔터/아이돌/연예 패션/룩 맛집/푸드 운동/피트니스 여행/휴양 육아/키즈 리빙/인테리어 반려동물 아트/창작(그림·웹툰·공예) 요리/레시피 카페/핫플 스포츠(종목) 커플/연애/결혼 게임/덕질/취미
tier 값 (현재 팔로워 수 기준)
Nano 1만 미만 Micro 1만 이상 ~ 5만 미만 Mid-tier 5만 이상 ~ 10만 미만 High-tier 10만 이상 ~ 20만 미만 Macro 20만 이상 ~ 50만 미만 Mega 50만 이상 ~ 100만 미만 Celeb 100만 이상
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/content/list?period=30d&sort=views&is_ad=true&limit=10"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/content/list",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"period": "30d",
"sort": "views", # views / likes / comments / dm_send_count
"category": "맛집/푸드", # 생략하면 전 토픽 대상
"tier": "Micro", # 생략하면 전 티어 대상
"is_ad": "true", # 생략하면 광고·비광고 전체
"limit": 10,
},
)
print(resp.json())
const params = new URLSearchParams({
period: "30d",
sort: "views",
category: "맛집/푸드",
tier: "Micro",
is_ad: "true",
limit: 10,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/content/list?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"count": 10,
"data": [
{
"post_id": "3401234567890123456",
"url": "https://www.instagram.com/p/Cxxxxxxxxxx/",
"user_id": "1784xxxxxxx",
"is_reel": true,
"description": "협찬 받은 신상 립 발색 리뷰 🎁 ...",
"views": 182000,
"likes": 9400,
"comments": 210,
"dm_send_count": 87,
"is_ad": true,
"topic": "뷰티(메이크업/헤어)",
"publish_date": "2026-07-04T12:30:00"
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
count | integer | 반환된 항목 수 |
data[].post_id | string | 게시물 고유 ID |
data[].url | string (URL) | 게시물 URL |
data[].user_id | string | 작성 계정 ID |
data[].is_reel | boolean | 릴스 여부 |
data[].description | string | 게시물 본문 |
data[].views | integer | 조회수 |
data[].likes | integer | 좋아요 수 |
data[].comments | integer | 댓글 수 |
data[].dm_send_count | integer | 게시물 유입 DM 발송 수 |
data[].is_ad | boolean | 광고 여부(협찬/PPL 통합). is_ad 필터가 보는 값 |
data[].topic | enum | 게시물 토픽 (위 category 값 중 하나) |
data[].publish_date | datetime | 게시 일시 |
토픽별 트렌드 (DM Trends · Instagram)
특정 토픽(예: 맛집/푸드) 안에서 지금 사람들이 반응하는 세부 트렌드(클러스터)를 훑어봅니다. 각 트렌드가 '숨은 보석 / 가장 인기 / 포화 상태 / 관심 약' 중 어디에 속하는지, 왜 뜨는지(선정 이유), 어떤 서브 키워드로 이어지는지를 함께 담습니다. 마케팅 지표를 나열하기보다, "이 카테고리에서 지금 뭘 하면 먼저 치고 나갈 수 있는지"를 재밌게 짚어보는 용도입니다.
analysis_date와 정확히 일치하는 날이 없으면 요청일 이하 중 가장 가까운 날(없으면 그다음 미래)로 자동 스냅되며, 실제 사용된 날짜는 응답의 selected_analysis_date로 확인할 수 있습니다.Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
topic required | enum | 토픽 카테고리 (아래 topic 값 참고) |
analysis_date optional | date | 분석 기준일. YYYY-MM-DD. 생략 시 최신 스냅샷. 가장 근접한 날짜로 자동 스냅됨 |
topic 값
맛집/푸드 뷰티(메이크업/헤어) 엔터/아이돌/연예 운동/피트니스 육아/키즈 카페/핫플 패션/룩
trend_status 값
각 트렌드(클러스터)를 DM 점유율(X)과 전환 효율(Y, 좋아요 대비 DM 전환)의 중앙값을 기준으로 네 갈래로 나눈 상태 라벨입니다.
숨은 보석 점유율은 낮지만 전환 효율이 높음 — 아직 붐비지 않은 블루오션 가장 인기 점유율·전환 모두 높음 — 검증된 대세 포화 상태 점유율은 높지만 전환은 낮음 — 경쟁 치열 관심 약 점유율·전환 모두 낮음 미분류 지표가 없어 분류 불가
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/dm-trends?topic=맛집/푸드&analysis_date=2026-07-08"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/dm-trends",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"topic": "맛집/푸드",
"analysis_date": "2026-07-08", # 생략하면 최신 스냅샷
},
)
print(resp.json())
const params = new URLSearchParams({
topic: "맛집/푸드",
analysis_date: "2026-07-08",
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/dm-trends?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"topic": "맛집/푸드",
"requested_analysis_date": "2026-07-08",
"selected_analysis_date": "2026-07-06",
"count": 12,
"data": [
{
"cluster_name": "마라탕후루",
"cluster_name_reason": "마라탕과 탕후루를 오가는 매운맛-단맛 조합 콘텐츠가 반복 등장",
"trend_status": "숨은 보석",
"rank": 1,
"rank_in_status": 1,
"post_count": 1234,
"sub_keywords": ["마라탕후루", "탕후루챌린지", "매운맛챌린지"]
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
topic | string | 요청한 토픽 카테고리 |
requested_analysis_date | date | 클라이언트가 요청한 날짜. 생략 시 null |
selected_analysis_date | date | 실제로 사용된 스냅샷 날짜 (요청일에 가장 근접). 데이터 없으면 null |
count | integer | 반환된 트렌드(클러스터) 수 |
data[].cluster_name | string | 트렌드(클러스터)의 메인 키워드 |
data[].cluster_name_reason | string | 이 이름이 붙은 이유 (LLM이 추출한 설명). 없을 수 있음 |
data[].trend_status | enum | 트렌드 상태 라벨 (위 trend_status 값 참고) |
data[].rank | integer | 토픽 내 볼륨 순위 (언급된 릴스 수 기준, 1부터) |
data[].rank_in_status | integer | 같은 trend_status 안에서의 순위 (1부터) |
data[].post_count | integer | 언급된 릴스 수 (트렌드 규모) |
data[].sub_keywords | string[] | 해당 트렌드에 딸린 서브 키워드 목록 |
활용 예시
| 목적 | 파라미터 |
|---|---|
| 맛집/푸드에서 지금 뜨는 트렌드 | ?topic=맛집/푸드 |
| 특정 날짜 기준 뷰티 트렌드 | ?topic=뷰티(메이크업/헤어)&analysis_date=2026-07-06 |
릴스 키워드 검색 (Reels Search · Instagram)
키워드로 인스타그램 릴스를 검색합니다. 릴스 설명글(description)에 키워드가 붙어있는 형태로 등장하는 최근 릴스 중, DM 발송수가 높은 순으로 상위 릴스를 돌려줍니다. "이 키워드로 지금 가장 반응(DM)이 몰리는 릴스가 뭔지"를 빠르게 훑는 용도입니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
keyword required | string | 검색 키워드. 앞뒤 공백을 제거한 뒤 길이가 2~50자여야 함 |
limit optional | integer | 가져올 개수. 기본값 20, 최대 20 |
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/reels?keyword=제주맛집&limit=20"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/reels",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"keyword": "제주맛집",
"limit": 20, # 생략 시 20
},
)
print(resp.json())
const params = new URLSearchParams({
keyword: "제주맛집",
limit: 20,
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/reels?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"keyword": "제주맛집",
"limit": 20,
"count": 20,
"total": 350,
"data": [
{
"post_id": "Abc123XyZ",
"url": "https://www.instagram.com/reels/Abc123XyZ/",
"publish_date": "2026-07-05T10:00:00",
"likes": 12000,
"comments": 120,
"views": 300000,
"dm_send_count": 8000,
"description": "제주에서 꼭 가야 할 맛집 ... #제주맛집 #제주여행",
"creator": {
"user_id": "example_creator",
"username": "제주 맛집 소개",
"profile_picture_url": "https://storage.googleapis.com/instagram-profile-picture/example_creator-profile-picture.jpg"
}
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
keyword | string | 실제로 사용된 검색 키워드 (공백 제거 후) |
limit | integer | 요청한 개수 제한 |
count | integer | 반환된 릴스 수 |
total | integer | 키워드/필터에 매칭된 전체 릴스 수 |
data[].post_id | string | 릴스 게시물 ID |
data[].url | string | 릴스 URL |
data[].publish_date | datetime | 업로드 시각 |
data[].likes | integer | 좋아요 수 |
data[].comments | integer | 댓글 수 |
data[].views | integer | 조회수 |
data[].dm_send_count | integer | DM 발송수 (정렬 기준). 값이 없으면 null |
data[].description | string | 릴스 설명글 |
data[].creator.user_id | string | 크리에이터 핸들 (인스타 user_id) |
data[].creator.username | string | 크리에이터 표시 이름. 크리에이터 정보를 못 찾으면 null |
data[].creator.profile_picture_url | string | 프로필 사진 URL. 못 찾으면 null |
활용 예시
| 목적 | 파라미터 |
|---|---|
| '제주맛집'으로 반응 높은 릴스 상위 20개 | ?keyword=제주맛집 |
| 상위 5개만 | ?keyword=오마카세&limit=5 |
콘텐츠 & BGM 분석 (BGM Trends · Instagram)
최근 릴스에 많이 쓰인 음원을 사용량(릴스 수) 순으로 돌려줍니다. 음원마다 DM 발송수가 높은 순으로 관련 릴스 5개를 함께 담아, "지금 릴스를 만든다면 어떤 BGM을 써야 할지", "우리 브랜드가 참여하기 좋은 유행 챌린지는 무엇인지"의 근거로 쓰도록 설계했습니다.
Query parameters
| 이름 | 타입 | 설명 |
|---|---|---|
is_original_audio required | boolean | true=오리지널 오디오/챌린지(음원별 트렌드 status 부여) · false=라이선스 음원(사용량 순위만, status 없음) |
period optional | 7d · 30d · 60d | 집계 기간창(게시일 기준). 기본 7d |
limit optional | integer (1–30) | 가져올 음원 개수. 기본 30 |
topic optional | enum | 콘텐츠 토픽 필터(아래 값 참고). 생략 시 전체 |
topic 값
기타 · 뷰티(메이크업/헤어) · 엔터/아이돌/연예 · 패션/룩 · 맛집/푸드 · 운동/피트니스 · 여행/휴양 · 육아/키즈 · 리빙/인테리어 · 반려동물 · 아트/창작(그림·웹툰·공예) · 요리/레시피 · 카페/핫플 · 스포츠(종목) · 커플/연애/결혼 · 게임/덕질/취미
Request
curl -H "Authorization: Bearer ug_live_xxxxx" \
"https://partner-api.ugwanggi.com/v1/instagram/bgm-trends?is_original_audio=true&period=7d&limit=10&topic=패션/룩"
import requests
resp = requests.get(
"https://partner-api.ugwanggi.com/v1/instagram/bgm-trends",
headers={"Authorization": "Bearer ug_live_xxxxx"},
params={
"is_original_audio": "true", # 필수: true=오리지널/챌린지, false=라이선스 음원
"period": "7d", # 생략 시 7d
"limit": 10, # 생략 시 30
"topic": "패션/룩", # 생략 시 전체
},
)
print(resp.json())
const params = new URLSearchParams({
is_original_audio: "true",
period: "7d",
limit: 10,
topic: "패션/룩",
});
const resp = await fetch(
`https://partner-api.ugwanggi.com/v1/instagram/bgm-trends?${params}`,
{ headers: { Authorization: "Bearer ug_live_xxxxx" } },
);
const data = await resp.json();
console.log(data);
Response
{
"platform": "instagram",
"period": "7d",
"is_original_audio": true,
"topic": "패션/룩",
"count": 10,
"data": [
{
"rank": 1,
"music_title": "오리지널 오디오",
"music_artist": "example_creator",
"challenge_name": null,
"is_original_audio": true,
"status": "떡상 중",
"reels_count": 538,
"related_reels": [
{
"post_id": "Abc123XyZ",
"url": "https://www.instagram.com/reels/Abc123XyZ/",
"publish_date": "2026-07-10T21:19:01",
"likes": 35163,
"comments": 637,
"views": 3722343,
"dm_send_count": 39000,
"description": "요즘 유행하는 그 챌린지 ... #릴스추천",
"creator": {
"user_id": "example_creator",
"username": "민주",
"profile_picture_url": "https://storage.googleapis.com/instagram-profile-picture/example_creator-profile-picture.jpg"
}
}
]
}
]
}
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
period | string | 사용된 집계 기간창 |
is_original_audio | boolean | 요청한 음원 모드 |
topic | string | 적용된 토픽 필터. 미지정 시 null |
count | integer | 반환된 음원 수 |
data[].rank | integer | 사용 릴스 수 기준 순위(1부터) |
data[].music_title | string | 음원 제목. 오리지널 오디오는 대부분 "오리지널 오디오" |
data[].music_artist | string | 음원 아티스트. 오리지널 오디오는 제작 크리에이터 핸들 |
data[].challenge_name | string | 챌린지명. 없으면 null |
data[].is_original_audio | boolean | 오리지널 오디오 여부 |
data[].status | string | 음원 트렌드 상태. 오리지널 오디오에만 부여되며 라이선스 음원은 항상 null. 값: 떡상 준비 중(갓 등장해 확산 초입) · 떡상 중(최근 급상승) · 하강 중(사용량 급감) · null(해당 없음). ⚠️ 요청한 period와 무관하게 항상 "최근 30일 모멘텀" 기준으로 계산되므로, period=7d에서 이번 주 갓 뜬 음원이라도 30일 누적이 적으면 null일 수 있습니다 |
data[].reels_count | integer | 선택한 period 기간창 내 이 음원 사용 릴스 수 |
data[].related_reels[] | array | DM 발송수 내림차순 상위 릴스 최대 5개 |
related_reels[].post_id | string | 릴스 게시물 ID |
related_reels[].url | string | 릴스 URL |
related_reels[].publish_date | datetime | 업로드 시각 |
related_reels[].likes | integer | 좋아요 수 |
related_reels[].comments | integer | 댓글 수 |
related_reels[].views | integer | 조회수 |
related_reels[].dm_send_count | integer | DM 발송수 (정렬 기준). 값이 없으면 null |
related_reels[].description | string | 릴스 설명글 |
related_reels[].creator.user_id | string | 크리에이터 핸들 (인스타 user_id) |
related_reels[].creator.username | string | 크리에이터 표시 이름. 못 찾으면 null |
related_reels[].creator.profile_picture_url | string | 프로필 사진 URL. 못 찾으면 null |
활용 예시
| 목적 | 파라미터 |
|---|---|
| 이번 주 유행하는 챌린지/오리지널 오디오 TOP | ?is_original_audio=true |
| 지금 뜨는 라이선스 BGM 추천 | ?is_original_audio=false |
| 패션 브랜드가 참여하기 좋은 유행 챌린지 | ?is_original_audio=true&topic=패션/룩 |
| 최근 30일 기준 상위 10개 | ?is_original_audio=true&period=30d&limit=10 |