返回博客Ad Intelligence

Meta 广告库 API 开发者指南:v20.0 代码 + CASD 访问(2026)

2026年4月6日 · 阅读约 40 分钟

Meta 广告库 API 是 Meta 官方开发者接口,但只覆盖政治与社会议题广告,商业广告要走 Meta Content Library (CASD) 研究员通道或第三方工具(SerpApi / ScrapeCreators)。本文给 2026 年 4 月 Graph API v20.0 实测的 Python + curl 代码样例、访问等级、限流、以及 Meta v. Bright Data 判决后的合规边界。

作者:AdMapix 编辑部 · 2026 年 4 月更新 最后更新:2026 年 4 月 16 日

Meta 广告库数据访问三层等级图

Meta 广告库 API 和公开 UI 有啥区别?

哥们先把两个东西拆清楚,不然后面一路混。很多开发者刚上手的时候以为 API 就是 UI 的程序化版本,一跑代码发现完全不是这么回事。

公开 UI 是 facebook.com/ads/library 那个网页版,任何人不登录都能查,支持商业广告、创意预览、视频播放,带完整的素材预览和 Page 详情页,但没法程序化批量拉——每页只显示 30 条,下拉加载,想抓 10 万条得写爬虫,并且随时可能被风控封 IP。

API 走的是 https://graph.facebook.com/v20.0/ads_archive,返回 纯 JSON没有创意图片和视频的直链(只给 ad_snapshot_url 嵌入页),关键是——只覆盖政治和社会议题广告(political & social-issue ads)。你用 API 查某个 DTC 品牌投的卖货广告,结果一条不返回——不是 bug,是覆盖范围根本不包括。这一点 Meta 官方文档写得非常隐晦,很多开发者折腾半天才反应过来:原来我查的关键词不在政治议题范畴,所以 API 一条不给。

换句话说,UI 是用户产品,设计目标是让公众能查任何一条投放过的广告;API 是合规产品,设计目标是让政治透明度组织能批量分析选举广告。两者覆盖范围根本不对齐。

所以一句话总结:UI 给人看,API 给程序拉,但 API 只给你政治那一小半数据。 要拉商业广告,要么走 CASD 研究员通道(下面讲),要么上第三方 wrapper。这个认知差是 Meta 官方文档故意含糊、开发者看半天才懂的坑——看懂了你就少踩 80% 的弯路。

API 覆盖范围:政治 + 议题广告,商业广告不在内

这节把 API 能查和查不到的东西一次性说死。

能通过 /ads_archive 查的

  • 政治与社会议题广告(Political & social-issue ads)——所有投放过的国家都覆盖,广告保留 7 年
  • 住房广告(Housing ads)——仅美国,2023 年 HUD 集体诉讼和解后强制披露
  • 就业广告(Employment ads)——仅美国,同上法律背景
  • 信贷广告(Credit ads)——仅美国,同上

查不到的

  • 绝大多数电商 / DTC / SaaS 商业广告——这是数量上 90% 以上的广告盘子
  • 创意素材原始文件(视频 mp4 / 图片原图下载链接)——API 只返回 ad_snapshot_url(一个嵌入页 URL),想拿原视频得按 Day 10 的下载方法
  • 真实曝光量和花费精确数字——返回的是 impressions{lower_bound: 10000, upper_bound: 50000} 这种区间

为啥限制这么严?因为 Meta 的广告透明度产品分成两个赛道——API 服务监管合规(政治广告属于 FEC / ECAB 等选举监管要求),Content Library 服务学术研究(Digital Services Act 强制要求的研究员访问)。商业广告的数据 Meta 认为是"商业秘密+用户隐私",就把它留在 Content Library 的研究员闭环里,不让任何开发者通过公开 API 拿到。这是 2023 年 DSA 实施后 Meta 明确的产品边界。

另一个常被忽略的点是广告保留期差异。政治与议题广告在 Ad Library 里保存 7 年,这是法律强制要求;而商业广告在公开 UI 上一旦停投就会下架,所以就算你用爬虫绕过 API,只能抓到"当前在投"的广告,历史数据无法回溯。Content Library 是唯一能拿到完整商业广告历史时间线的合法入口。

想看 Google 那边的对比路径,可以参考 Google 广告透明度中心使用指南——Google 的 API 反而对商业广告更开放,两个平台透明度政策的差异本身就是一个值得研究的话题。

谁能申请?(开发者 app + CASD 研究员审核)

访问分三层,每层门槛完全不同。

Tier 1 — 基础 /ads_archive API

  • 注册 Meta for Developers 账号
  • 身份验证(上传护照或政府 ID 到 facebook.com/ID
  • 确认所在国家
  • 通过率:个人开发者提交齐材料,1-3 工作日审核通过

Tier 2 — Ad Library Report CSV

  • 无需 API,直接网页下载 ZIP(每周快照,按国家+类型分)
  • 2026 新增 low-impression-count filter,可以过滤掉 <1000 曝光的测试广告
  • 适合一次性大批量分析,但字段比 API 少,且按周粒度

Tier 3 — Meta Content Library(CASD 通道)

  • 必须是学术机构 / 非营利 NGO / 新闻媒体 affiliation
  • 法国 CASD(Centre d'Accès Sécurisé aux Données,Secure Data Access Center) 独立审核,不是 Meta 自己审
  • 2026 Q1 欧盟研究员通道正式开放(DSA 合规要求下)
  • 审核周期:6-12 周,要提交研究计划、伦理审查证明、学术主页
  • 访问方式:SOMAR VDE(Virtual Data Enclave) 远程安全沙箱,数据不落本地
  • 定价(2026-01 生效):$371/team/month + $1000 一次性 project-start fee

这里有个中国团队经常踩的坑:CASD 对中国大陆研究员基本不开放,就算你是清华北大的 PI,affiliation 核验那一关也几乎过不了(CASD 的审核逻辑偏向欧盟学术机构)。原因也好理解——DSA 是欧盟法律,CASD 作为执行机构优先保障欧盟内部研究员的合规需求,非欧盟 affiliation 进入流程的优先级低,加上数据跨境本身是敏感问题。要访问商业广告,中国团队走 CASD 路径基本封死,下面讲第三方方案。

Meta 广告库 API 端点与核心字段速查

怎么申请?(Facebook 开发者 app → token 步骤)

假设你走 Tier 1 基础 API,完整流程如下。这是 2026-04 实测跑通的版本,截图节点建议打码 App ID 和 access token

Step 1 — 注册 Meta for Developers 账号

访问 developers.facebook.com,用你的 Facebook 个人号登录。如果没有 FB 账号,先注册——这一步对中国团队已经是第一道坎,国内 IP + 纯手机号注册会触发风控,建议用 HK/SG/TW 公司主体 + 当地手机号。注册完进到 developer 后台要再做一次手机号验证,这一步也会按归属地判别,+86 号码极大概率被拒。

Step 2 — 创建 App

Dashboard → Create App → Use case 选 "Other" → Type 选 "Business" → 填 App name 和 contact email。

Step 3 — 身份验证

访问 facebook.com/ID → 上传护照或当地政府 ID(中国大陆身份证多数情况下会被拒,这是已知现象)→ 确认你所在国家 → 等待 1-3 天审核。

Step 4 — 添加 Ad Library API 产品

在 App Dashboard 里找到 "Add a Product" → 选 "Ad Library API" → Configure。

Step 5 — 生成 Access Token

App Dashboard → Tools → Graph API Explorer → 选你的 App → Generate User Token → 勾选所需权限(默认够用)→ 复制 token。

注意:默认 user token 有效期 60 分钟,用 /oauth/access_token 端点可以换成 长期 token(60 天有效期)。过期后需要再次 refresh,不会自动续期。生产环境建议写一个定时 job,每 55 天自动用 App ID + Secret 做一次 token 续期,把新 token 写入密钥管理服务(1Password / HashiCorp Vault / AWS Secrets Manager 都行)。别把 token 直接硬编码到代码里或提交到 Git 仓库,Meta 的扫描机制会检测到 token 泄漏并作废。

核心端点 + 查询参数(v20.0 验证过)

主端点就一个:

GET https://graph.facebook.com/v20.0/ads_archive

必填参数

参数说明示例
access_token你的 tokenEAABsbCS...
search_termssearch_page_ids关键词或 Page ID(二选一)"climate" / "123456789"
ad_reached_countries国家数组(ISO-2)["US","GB"]

关键可选参数

参数可选值用途
ad_typeALL / POLITICAL_AND_ISSUE_ADS / HOUSING_ADS / EMPLOYMENT_ADS / CREDIT_ADS筛选广告类别
ad_active_statusACTIVE / INACTIVE / ALL是否在投
ad_delivery_date_minYYYY-MM-DD开始日期下限
ad_delivery_date_maxYYYY-MM-DD开始日期上限
media_typeALL / IMAGE / VIDEO / MEME / NONE素材类型
publisher_platforms["FACEBOOK","INSTAGRAM","AUDIENCE_NETWORK","MESSENGER","THREADS"]投放平台
languagesISO 语言代码数组["en","zh"]
fields返回字段列表(逗号分隔)见下节 schema
limit每页条数,max 5000500

响应 schema + 字段说明

典型 response JSON(精简版):

{
  "data": [
    {
      "id": "2847592834756",
      "ad_creation_time": "2026-03-15",
      "ad_creative_bodies": ["Vote for climate action on April 30"],
      "ad_creative_link_titles": ["Learn More About Our Policy"],
      "ad_creative_link_descriptions": ["Join the movement"],
      "ad_delivery_start_time": "2026-03-16",
      "ad_delivery_stop_time": "2026-04-05",
      "ad_snapshot_url": "https://www.facebook.com/ads/archive/render_ad/?id=2847592834756&access_token=...",
      "bylines": "Climate Action PAC",
      "currency": "USD",
      "impressions": {
        "lower_bound": "10000",
        "upper_bound": "49999"
      },
      "spend": {
        "lower_bound": "500",
        "upper_bound": "999"
      },
      "page_id": "123456789",
      "page_name": "Climate Action Now",
      "publisher_platforms": ["FACEBOOK","INSTAGRAM"],
      "demographic_distribution": [
        {"age":"25-34","gender":"female","percentage":"0.28"}
      ],
      "region_distribution": [
        {"region":"California","percentage":"0.15"}
      ],
      "languages": ["en"]
    }
  ],
  "paging": {
    "cursors": {"before":"...","after":"..."},
    "next": "https://graph.facebook.com/v20.0/ads_archive?after=..."
  }
}

字段解读要点

  • impressionsspend 永远是 区间,Meta 不给精确值。做汇总统计时建议取 lower_bound 做保守估计,取 upper_bound 做乐观估计,取中值画图
  • ad_snapshot_url 是一个嵌入页链接,带 access_token 参数,分享出去别人也能看(但 token 可能泄露你的 app 身份),内部使用或放报告时建议用 URL 签名服务做代理
  • demographic_distribution 是占比数组,加起来等于 1.0,可以直接做性别 × 年龄段的热力图
  • ad_delivery_stop_time 可能缺失,缺失意味着广告还在投(或者状态未更新)——做活跃度判断别只看这个字段,还要结合 ad_active_status
  • bylines 是政治广告必填的 payer 字段("Paid for by XXX PAC" 这种),商业广告场景不存在这个字段
  • region_distribution 的 region 名称不是 ISO code 而是英文全称("California"、"New York"),入库前建议做个字典映射

限流 + 配额管理

Meta 的官方限流文档含糊得出名,实测下来规律大致是:

  • 按 App + User 维度~200 calls / user / hour
  • 单次 limit max 5000——但实际返回往往 1000-2000 就截断,配合分页
  • 触发限流返回 HTTP 429 或 error.code=4 / error.code=17
  • 恢复时间:触发后等 30-60 分钟

Meta 还有一层隐藏的业务级配额(Business Use Case),超过一定量级后就算你用 token 轮换也没用。比如同一个组织下所有 App 总调用量超过 Meta 内部阈值,会集体降速。所以对于超大规模拉取场景,单纯堆 App 数并不是银弹。

实用技巧:

  1. 优先用 fields 参数只拉你要的字段——返回数据包越小,配额消耗越少(Meta 按数据量也算一次额度),别一上来就 fields=*
  2. 大规模历史回溯:用 Ad Library Report CSV 先拉周快照,再用 API 补差量,这样能把单国全量政治广告的拉取时间从几天压到几小时
  3. 多 App 轮询:如果你是机构,注册 3-5 个 App,每个 App 独立 200/h 配额,轮流打——注意每个 App 要独立做身份验证
  4. 上指数退避:429 后 wait 60s,再 120s,再 240s,别无脑重试,否则会被标记为恶意 bot 直接封 token
  5. 缓存 page_id:page 查询是稳定的,拿到 id 后直接按 id 拉,别每次 search_terms——搜索接口本身比按 id 拉慢 3-5 倍
  6. 夜间跑大批量任务:美东时间凌晨 2-6 点调用限制相对宽松(Meta 没官宣但社区观察规律),适合做历史回溯

实测代码样例(Python + curl)— 2026-04 Graph API v20.0

这是本文的核心差异化部分。以下所有代码都在 2026-04 用 Graph API v20.0 跑通过。

Curl 基础查询

# 查美国 2026 年所有政治广告里提到 "climate" 的
curl -G "https://graph.facebook.com/v20.0/ads_archive" \
  --data-urlencode "access_token=YOUR_TOKEN" \
  --data-urlencode "search_terms=climate" \
  --data-urlencode "ad_reached_countries=['US']" \
  --data-urlencode "ad_type=POLITICAL_AND_ISSUE_ADS" \
  --data-urlencode "ad_delivery_date_min=2026-01-01" \
  --data-urlencode "fields=id,page_name,ad_creative_bodies,impressions,spend,ad_delivery_start_time" \
  --data-urlencode "limit=500"

Python requests — 单次查询

# tested on Graph API v20.0, 2026-04
import requests
from typing import Optional

TOKEN = "YOUR_ACCESS_TOKEN"
BASE_URL = "https://graph.facebook.com/v20.0/ads_archive"

def fetch_ads(
    search_terms: str,
    countries: list[str],
    date_min: str,
    fields: Optional[list[str]] = None,
    limit: int = 500,
) -> dict:
    if fields is None:
        fields = [
            "id", "page_id", "page_name", "ad_creative_bodies",
            "ad_delivery_start_time", "ad_delivery_stop_time",
            "impressions", "spend", "currency",
            "publisher_platforms", "ad_snapshot_url",
        ]
    params = {
        "access_token": TOKEN,
        "search_terms": search_terms,
        "ad_reached_countries": str(countries).replace("'", '"'),
        "ad_type": "POLITICAL_AND_ISSUE_ADS",
        "ad_delivery_date_min": date_min,
        "fields": ",".join(fields),
        "limit": limit,
    }
    r = requests.get(BASE_URL, params=params, timeout=30)
    r.raise_for_status()
    return r.json()

data = fetch_ads("climate", ["US"], "2026-01-01")
print(f"First page: {len(data['data'])} ads")

Python 翻页循环(iterator 风格)

# tested on Graph API v20.0, 2026-04
import time

def iter_all_ads(initial_params: dict, max_pages: int = 100):
    url = BASE_URL
    params = initial_params.copy()
    page = 0
    while url and page < max_pages:
        try:
            r = requests.get(url, params=params, timeout=30)
            r.raise_for_status()
            payload = r.json()
        except requests.HTTPError as e:
            if e.response.status_code == 429:
                wait = 60 * (2 ** min(page, 4))  # 指数退避
                print(f"Rate limited, sleep {wait}s")
                time.sleep(wait)
                continue
            raise

        for ad in payload.get("data", []):
            yield ad

        # 翻页:第二页开始直接用 paging.next(含所有参数)
        next_url = payload.get("paging", {}).get("next")
        if not next_url:
            break
        url = next_url
        params = None  # next 里已经包含所有参数
        page += 1
        time.sleep(1)  # 温柔点

# 用法
init = {
    "access_token": TOKEN,
    "search_terms": "election",
    "ad_reached_countries": '["US"]',
    "ad_type": "POLITICAL_AND_ISSUE_ADS",
    "ad_delivery_date_min": "2026-01-01",
    "fields": "id,page_name,impressions,spend,ad_delivery_start_time",
    "limit": 500,
}
all_ads = list(iter_all_ads(init, max_pages=20))
print(f"Total: {len(all_ads)} ads")

响应解析 + 落 CSV(pandas)

# tested on Graph API v20.0, 2026-04
import pandas as pd

def parse_ad(ad: dict) -> dict:
    imp = ad.get("impressions") or {}
    sp = ad.get("spend") or {}
    return {
        "ad_id": ad.get("id"),
        "page_name": ad.get("page_name"),
        "start": ad.get("ad_delivery_start_time"),
        "stop": ad.get("ad_delivery_stop_time"),
        "imp_low": int(imp.get("lower_bound", 0)),
        "imp_high": int(imp.get("upper_bound", 0)),
        "spend_low": float(sp.get("lower_bound", 0)),
        "spend_high": float(sp.get("upper_bound", 0)),
        "currency": ad.get("currency"),
        "platforms": ",".join(ad.get("publisher_platforms") or []),
        "snapshot": ad.get("ad_snapshot_url"),
        "body": (ad.get("ad_creative_bodies") or [""])[0][:200],
    }

df = pd.DataFrame([parse_ad(a) for a in all_ads])
df["est_spend"] = (df.spend_low + df.spend_high) / 2  # 区间中值
df.to_csv("meta_ads_2026Q1.csv", index=False)

错误处理片段

# 常见 error.code 及处理策略
def handle_meta_error(err: dict) -> str:
    code = err.get("code")
    subcode = err.get("error_subcode")
    msg = err.get("message", "")
    if code == 190:
        return "token 过期,重新 refresh"
    if code == 4 or code == 17:
        return "app 级或 user 级限流,退避后重试"
    if code == 613:
        return "calls exceeded,等下一个 hour window"
    if code == 100 and "search_terms" in msg:
        return "search_terms 不能为空或太短(最少 3 字符)"
    if code == 368:
        return "内容被风控,换 search 词或 page_id"
    return f"未知错误 code={code} sub={subcode}: {msg}"

Meta Content Library (CASD):研究员通道访问商业广告

如果你是欧盟学术机构或 NGO 研究员,CASD 是你能合法访问 Meta 商业广告数据的唯一官方路径。

流程

  1. transparency.meta.com/researchtools/meta-content-library 提交申请
  2. 附 CV、机构证明信、研究计划(含伦理审查备案)
  3. 提交给 CASD(法国 Secure Data Access Center)独立审核——Meta 不参与决定
  4. 审核通过后,配置 SOMAR VDE(Virtual Data Enclave 远程沙箱),在沙箱内用 Python/R 跑分析
  5. 数据不能下载到本地,只能导出聚合统计结果

费用(2026-01 生效)

  • $371 / team / month(订阅费)
  • $1000 一次性 project-start fee
  • 每个 project 年限通常 12-24 个月

能拿到啥

  • 所有类型广告,包括商业广告
  • 完整 impressions、spend、targeting 数据(比 API 区间更精细)
  • 历史回溯可追溯到 2020 年数据库建立时
  • 可跑全平台聚合(FB + IG + Threads)

能做啥、不能做啥

  • 允许:学术论文、NGO 报告、新闻调查产出
  • 禁止:商业情报产品、竞品广告 spy 工具、商业 SaaS 数据集

中国大陆研究员访问 CASD 的现实:基本申请不下来。2025 年底我们问过 CASD 负责人,他们的原则是"affiliation 必须是欧盟或承认 DSA 的司法辖区",中国大陆机构不在白名单。香港/澳门/台湾的研究员可以申请,但通过率依然不高

第三方方案(SerpApi / ScrapeCreators / Bright Data)

既然 API 只有政治广告,CASD 对中国研究员基本关门,做商业广告数据只能走第三方。

SerpApi

  • 官方有 Google Ads Transparency wrapper,Meta 端目前是 community issue(#2789),未官方支持
  • 如果你要 Google 透明度中心数据,SerpApi 是首选
  • 价格:$75/月起,5k searches

ScrapeCreators

  • scrapecreators.com 提供 Meta Ad Library logged-off scraping API
  • 特点:按调用付费 $5 起步,对小团队友好
  • 覆盖:商业广告 + 素材链接,但不包含曝光区间
  • 用法和 Meta 官方 API 类似的 REST 接口,迁移成本低

Bright Data

  • 企业级 scraping 基础设施 + 预构建 Meta Ad Library dataset
  • 合法性关键判决——Meta v Bright Data
    • 地点:美国加州北区联邦地方法院(N.D. Cal.),不是第九巡回上诉法院
    • 裁决日期:2024-01-23,Judge Edward Chen 驳回 Meta 的合同违约主张
    • 核心逻辑:对 logged-off(未登录) 状态的公开数据抓取,不构成违反 Meta ToS
    • 后续:2024-02-26 Meta 撤诉,未向 9th Cir. 上诉——但这意味着判决只在 N.D. Cal. 约束,不是全美上诉法院级别的先例
  • 实操结论:logged-off scraping 法律灰区仍在,有判例撑但不是终审先例,大规模商用建议上合规顾问
  • 参考:Bright Data 官方博客的判决分析Meta 的 FBM 法律文件

中国出海投手混合方案(实操推荐)

  • Google 广告情报:SerpApi(稳定、官方支持、合规干净)
  • Meta 商业广告:ScrapeCreators + 代理池(按调用付费、起步低、对小团队友好)
  • 大规模 dataset:Bright Data(企业级,但预算要 $2000+/月)
  • 数据中转:飞书多维表格做看板和二次清洗(内地团队协作顺手),S3/R2 做原始数据归档
  • 代理方案:国内 CVM(阿里云国际版 / AWS 香港)+ residential proxy,避免直接从内地 IP 打 Meta

月成本估算:小团队(1-3 人)跑 Meta + Google 双端商业广告情报,ScrapeCreators $50 + SerpApi $75 + 代理 $40 + 飞书 base 免费 ≈ $165/月,已经能覆盖 10-20 个核心竞品的持续监控。

技术栈搭配细节:调度端跑一个 FastAPI 服务暴露统一的 /query 接口,内部按请求来源路由到 ScrapeCreators 或 SerpApi;抓到的原始 JSON 先落 R2,再用一个轻量 worker 转成飞书多维表格的行(通过飞书 OpenAPI),投手和运营在飞书里做筛选和二次分析。这样既把"抓取"的合规风险隔离到海外节点,又把"分析"留在飞书生态里,对内协作成本最低。代码部署建议用 Docker + 阿里云国际版香港区 ECS,配一个 WireGuard 回内地办公室,这样本地开发联调也不用挂全局 VPN。

合规决策树:什么场景用哪条路

什么时候退回付费 spy 工具?

API + CASD + 第三方 scraping 组合拳打完,你大概率还是需要补一个付费 spy 工具。原因:

1. 创意视觉全量下载:API 只给 snapshot_url,ScrapeCreators 给得出素材链但不稳定。主流付费 spy 工具(AdSpy、Minea、Foreplay 等)有自己的素材 CDN 缓存,批量下载不会断

2. 出价和定向估算:Meta API 和 CASD 都不给对手的定向策略,付费工具能反推人群标签

3. 跨平台创意关联:对手在 TikTok / YouTube / Snap 投一样的钩子,付费工具做了跨平台去重和关联,API 层面做不到

4. 查商业广告不想走 CASD:如果你只想拿商业广告做二次分析,我们的 OpenClaw API 免 CASD 申请,直接按月订阅拉数据,定价参考

完整付费工具对比见 2026 广告间谍工具推荐。想继续深入 Meta 广告库本身的用法,Meta 广告库完整使用指南 是我们的 pillar 文章;入口怎么找详见 Meta 广告库入口定位指南

FAQ

Q1:Meta 广告库 API 是免费吗?

是,API 本身免费。Meta for Developers 账号免费,access token 免费,/ads_archive 端点免费调。成本只出现在你选择 CASD($371/月 + $1000)或第三方 wrapper(ScrapeCreators / SerpApi / Bright Data)时。

Q2:能查商业广告吗?

不能/ads_archive 只返回政治与社会议题广告(+ 美国的住房/就业/信贷广告)。商业广告走 CASD 研究员通道或第三方 scraping 服务。

Q3:限流多少?

大致 200 calls / user / hour(Meta 官方没明确数字,实测规律)。触发限流返回 HTTP 429 或 error.code 4/17,等 30-60 分钟恢复。用 fields 参数只拉需要字段能有效省配额。

Q4:Meta v. Bright Data 判决之后,爬 Meta 合法了吗?

灰区缩小但没完全合法。加州北区联邦地院 2024-01-23 支持了 Bright Data 对 logged-off 公开数据的抓取主张,Meta 2024-02-26 撤诉且未上诉到第九巡回法院,所以这不是终审先例,只在 N.D. Cal. 有约束力。其他法院仍可能作出相反判决。企业级合规使用,建议上专业律师。

Q5:非美国开发者能申请吗?

能,但有限制。Meta for Developers 开放全球注册,但 ID 验证对中国大陆身份证多数情况下会被拒。实际操作建议用 香港/新加坡/台湾公司主体 + 当地手机号 + 护照 走验证。CASD 研究员通道则几乎只对欧盟学术 affiliation 开放。

Q6:Meta 广告库 API 和 Meta Content Library 有啥区别?

  • API (/ads_archive):免费、任何开发者都能申、只覆盖政治议题广告、返回 JSON、无原素材
  • Content Library:收费($371/月)、要 CASD 审核、覆盖所有广告包括商业、数据在 SOMAR VDE 沙箱内分析、不能下载本地

简单记:API 是给开发者做政治监督的,Content Library 是给欧盟研究员做 DSA 合规研究的。中间地带(商业广告数据科学分析)两个都管不到,只能第三方补。


Related Reading

参考资料