使用TikTok Marketing API获取报表时遇无效指标错误,求解决方案
解决TikTok Ads API无效指标字段问题
问题概述
调用TikTok Ads集成报表API时,收到错误提示部分字段无效,无效字段包括campaign_name、page_content_view_events、ad_name、conversion_rate_v2、engagements,调整data_level参数后问题仍未解决。
核心原因与修正方案
字段类型混淆:维度与指标放错位置
campaign_name和ad_name是维度字段(用于数据分组),而非计算类指标,不能放在metrics数组中,需要移到dimensions数组内。同时,当前设置的data_level: "AUCTION_ADVERTISER"是账户层级,无法返回广告/活动维度的数据,需要将data_level调整为AUCTION_AD(广告层级)或AUCTION_CAMPAIGN(活动层级)。指标与报表类型不匹配
conversion_rate_v2:BASIC类型报表不支持该字段,保留conversion_rate即可;若需要V2版本的转化率,需将report_type切换为CONVERSION。engagements:BASIC报表无该聚合字段,可替换为具体的互动指标(如likes、comments、shares),或切换到支持互动聚合的报表类型。page_content_view_events:属于自定义转化事件,需将report_type设为CONVERSION,且确保已在TikTok Ads Manager中配置并启用该事件追踪。
修正后的代码示例
import requests import json import pandas as pd from datetime import date # API端点与参数配置 url = "https://business-api.tiktok.com/open_api/v1.2/reports/integrated/get/" params = { "advertiser_id": " ", # 替换为你的广告主ID "report_type": "BASIC", # 若需要转化事件可改为"CONVERSION" "start_date": "2024-06-10", "end_date": str(date.today()), # 需转为字符串格式 "data_level": "AUCTION_AD", # 调整为广告层级以获取ad_name、campaign_name "dimensions": json.dumps(["advertiser_id", "stat_time_day", "campaign_name", "ad_name"]), "page_size": 1000, "metrics": json.dumps([ "cpc", "cpm", "impressions", "clicks", "ctr", "reach", "conversion", "cost_per_conversion", "conversion_rate", "video_watched_2s", "video_watched_6s", "engaged_view" # 若切换为CONVERSION类型报表,可添加page_content_view_events等转化指标 ]) } headers = { "Access-Token": " " # 替换为你的访问令牌 } # 发送请求并处理响应 response = requests.get(url, headers=headers, params=params) if response.status_code == 200: data = response.json() print(json.dumps(data, indent=4)) if "data" in data and "list" in data["data"]: df = pd.DataFrame(data["data"]["list"]) print(df) else: print("响应中无数据或结构错误") else: print(f"请求错误: {response.status_code}") print(response.text)
额外注意事项
- 若需要获取
page_content_view_events,需确保:- 将
report_type改为CONVERSION - 在TikTok Ads Manager中完成该事件的配置与验证
- 确认指标名称与后台配置的事件名称完全一致
- 将
- 所有日期参数需为字符串格式,原代码中
date.today()需转为str(date.today()),否则会导致参数格式错误。
内容的提问来源于stack exchange,提问作者Ferdiansyah Ersatiyo
相关产品推荐
相关产品推荐

