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

如何用Python通过Facebook API获取Lead广告的线索信息?

解决Facebook Lead广告线索获取的请求限流问题

你遇到的API请求频次超限问题,根源是循环遍历每个广告单独调用get_leads导致请求量过高。直接从广告账户层级批量拉取线索是更高效的解决方案,无需逐个广告发起请求。

优化后的代码

import json
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.lead import Lead

# 配置参数
access_token = '<你的令牌>'
ad_account_id = 'act_你的广告账户ID'
FacebookAdsApi.init(access_token=access_token)

# 直接从广告账户批量拉取线索,指定所需字段
ad_account = AdAccount(ad_account_id)
leads = ad_account.get_leads(
    fields=[
        Lead.Field.id,
        Lead.Field.field_data,
        Lead.Field.created_time,
        Lead.Field.ad_id  # 可选:关联对应的广告ID,便于溯源
    ],
    # 可选:添加时间过滤,仅拉取指定时段的线索,减少数据量和请求压力
    params={'time_range': {'since': '2024-01-01', 'until': '2024-01-07'}}
)

# 解析并输出用户提交的具体信息
for lead in leads:
    print(f"线索ID: {lead[Lead.Field.id]}")
    print("用户提交内容:")
    for field in lead[Lead.Field.field_data]:
        print(f"  {field['name']}: {field['values'][0]}")
    print("---")

核心优化说明

  • 批量拉取逻辑:直接调用广告账户的get_leads方法,一次性获取账户下所有符合条件的线索,彻底避免循环请求每个广告带来的高频调用问题。
  • 时间范围过滤:通过time_range参数限定线索的时间范围,既减少返回的数据量,也降低触发限流的概率。
  • 精简请求字段:仅请求必要的字段(field_data是存储用户姓名、电话等提交信息的核心字段),减少不必要的数据传输。

额外注意事项

  • 若账户线索量极大,单次拉取仍可能触发限流,可通过next_page()方法实现分页拉取,分批次获取数据。
  • 确保你的access_token拥有ads_read和leads_retrieval权限,否则会出现权限错误。
  • 若仍遇限流,可在分页请求间添加短暂间隔(如time.sleep(1)),但优先通过批量拉取从根源减少请求数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:21:02