You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Facebook Marketing API获取全量广告系列洞察数据异常求助

我之前帮好几个开发者解决过类似的Facebook Marketing API洞察数据缺失问题,咱们一步步来排查和解决:

1. 先解决结果数量限制与分页问题

Facebook API默认只会返回少量最新的广告系列(有时候是因为insights数据的加载逻辑,返回的数量比默认的25条还少)。你需要手动设置limit参数来扩大返回结果的数量,同时处理分页:

试试这个请求,把limit设大一点(比如100):

act_<my_ID>/campaigns?fields=insights{reach,spend}&limit=100

如果返回的JSON里有paging字段,里面的next链接就是下一页的请求地址,继续调用它就能拿到剩下的广告系列数据。

2. 修正Insights的参数传递方式(重点!)

很多人踩坑的地方:嵌套请求insights的时候,参数不能直接放在URL的query里,得用.parameter(value)的格式嵌套在fields里。比如你之前加的time_range如果是直接作为query参数传的,那根本没生效!

正确的请求格式应该是这样(指定按广告系列级别聚合+时间范围):

act_<my_ID>/campaigns?fields=insights.level(campaign).time_range({"since":"2024-01-01","until":"2024-05-20"}){reach,spend}&limit=100

如果用date_preset,就不要同时加time_range,示例:

act_<my_ID>/campaigns?fields=insights.level(campaign).date_preset(last_90_days){reach,spend}&limit=100

这样能确保insights的参数正确作用到嵌套的字段上,而不是被忽略。

3. 包含所有状态的广告系列

默认情况下,API可能不会返回归档(ARCHIVED)或已删除(DELETED)的广告系列,但你在商务平台看到的旧数据可能来自这些状态的系列。可以添加status参数来包含所有状态:

act_<my_ID>/campaigns?fields=insights{reach,spend}&limit=100&status=[ACTIVE,PAUSED,ARCHIVED,DELETED]

4. 换一种方式:直接请求Insights端点

如果嵌套请求还是有问题,不如直接调用insights端点,一次性获取所有广告系列的洞察数据,这种方式更稳定:

act_<my_ID>/insights?level=campaign&fields=campaign_id,campaign_name,reach,spend&time_range={"since":"2024-01-01","until":"2024-05-20"}&limit=100

这个请求会直接返回广告账户下所有符合条件的广告系列的reach和spend数据,不需要嵌套campaigns请求。

5. 最后确认权限(虽然可能性低)

既然你在商务平台能看到数据,权限大概率没问题,但还是可以快速检查:

  • 确保你的访问令牌有ads_read权限
  • 确认你的应用已经被添加到对应的商务管理平台,并且有权限访问该广告账户

按照上面的步骤试下来,应该就能拿到所有广告系列的洞察数据了。

内容的提问来源于stack exchange,提问作者Yosindrax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:17:26