# 怎么一次看全竞品在 Meta、Google 和 TikTok 上投的广告？

> 把一个竞品在 Meta 广告库、Google 广告透明中心和 TikTok 广告库里的广告，每周汇成一张表：步骤、费用、代码和看不到的地方。

网页版：https://okdata.online/zh/answers/competitor-ads-meta-google-tiktok/

**简短回答：**在每个公开广告库里，用竞品在那里登记的身份去查：Meta 上是它的 Facebook 主页，Google 上是官网域名，TikTok 广告库里是广告主名称，再把结果合成一张表。用 okdata 每周扫一个竞品 $0.028，10 个竞品每周扫、做一个月共 $1.12。

一个水杯品牌的增长负责人，盯着三个主要竞品。每周一她都想知道，它们上周新上了哪些广告：新的优惠、新的开头、新的落地页。答案分散在三个公开广告库里，三套界面，同一家公司在每个库里的名字还不一样。手动查要一上午；写成脚本，就是一张表发到邮箱，新广告已经标出来了。

## 一个竞品，三个身份

| 广告库 | 竞品在里面登记成什么 | 接口 |
|---|---|---|
| Meta 广告库（Facebook、Instagram、Messenger） | Facebook 主页，按 ID 或名称 | [Meta 广告主的广告](/zh/apis/meta/advertisers/ads/list/) |
| Google 广告透明中心（搜索、YouTube、展示、购物） | 验证过的广告主，常常是公司主体；或者官网域名 | [Google 广告主搜索](/zh/apis/google/advertisers/search/)，再用 [Google 广告主的广告](/zh/apis/google/advertisers/ads/list/) |
| TikTok 广告库 | 广告主名称，只收在欧洲投放的广告 | [TikTok 广告库搜索](/zh/apis/tiktok/ads/search/) |

名字只需要对一次，把 ID 存下来：Meta 主页 ID、Google 广告主 ID 或域名、TikTok 广告主名称。之后每周只调列表接口。

## 费用

| 每周、每个竞品 | 调用次数 | 费用 |
|---|---|---|
| Meta，3 页，每页 30 条 | 3 | $0.012 |
| Google，2 页，每页 40 条 | 2 | $0.008 |
| TikTok，2 页，每页 12 条 | 2 | $0.008 |
| 一个竞品一周 | 7 | $0.028 |
| 10 个竞品，4 周 | 280 | $1.12 |

第一次在 Google 上按名称找广告主，每个竞品另加 $0.004。

## 代码：合成一张表，标出新广告

```python
import json, os, requests

API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

def items(path, **params):
    body = requests.get(API + path, headers=H, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']}")
    return body["data"]["items"]       # 只取第一页；要更多就按 page.next_cursor 翻页

rival = {"meta_page": "<Facebook 主页 ID>", "domain": "example.com", "tiktok": "Example Brand"}
ads = ([("meta", a) for a in items("/v1/meta/advertisers/ads/list", id=rival["meta_page"], country="US")]
     + [("google", a) for a in items("/v1/google/advertisers/ads/list", domain=rival["domain"], country="US")]
     + [("tiktok", a) for a in items("/v1/tiktok/ads/search", advertiser=rival["tiktok"])])

rows = [{"platform": p, "id": a["id"], "format": a["format"], "text": (a["text"] or "")[:120],
         "landing": a["landing_url"], "since": a["first_shown_at"], "url": a["url"]} for p, a in ads]
try:
    seen = set(json.load(open("seen_ids.json")))
except FileNotFoundError:
    seen = set()
new = [r for r in rows if r["id"] not in seen]
json.dump(sorted(seen | {r["id"] for r in rows}), open("seen_ids.json", "w"))
print(len(rows), "条广告，其中新出现", len(new), "条")
```

## 看不到的地方

- **TikTok 广告库只收在欧洲投放的广告。** 只在美国投的竞品，这里可能一条都没有。[创意中心热门广告](/zh/apis/tiktok/creative_center/ads/search/)能看一个品类里什么素材效果好，但不能按广告主查。
- **Google 很少给落地页，** 文案也常常只在预览图里。
- **Meta 在欧盟以外会撤下已停投的商业广告。** 每周跑一次，顺便也就攒下了自己的历史记录。
- **商业广告的花费，哪个库都不公开。** 可以看新广告的数量和每条跑了多久；连续投好几个月的，通常就是效果好的。
- **子品牌和多个主页。** 大广告主往往有好几个 Facebook 主页和 Google 账户，每一行都核对一下广告主。

## 其他做法

只看一个品牌，直接上各广告库的网页，免费。付费的广告情报平台覆盖更多渠道，保存多年历史，还会估算花费；如果要回答的是对手预算有多少，它们更合适。合作的代理商手里可能也已经有这些数据。每周脚本化地扫一遍，或者把一周的竞品广告交给 Agent 做总结，用 okdata 更合适。各个库的细节见 [Meta 广告库 API 的价格和限制](/zh/answers/meta-ad-library-api-price-limits/)和[导出 Google 广告透明中心的广告](/zh/answers/export-google-ads-transparency-center/)。完整流程见[广告情报](/zh/solutions/ad-intelligence/)和[竞品监测](/zh/solutions/competitor-monitoring/)。

## 用到的接口

- [Meta 广告主的广告](https://okdata.online/zh/apis/meta/advertisers/ads/list/) `meta.advertisers.ads.list`：$0.004/次 · 每页约 30 条广告
- [Google 广告透明中心广告主搜索](https://okdata.online/zh/apis/google/advertisers/search/) `google.advertisers.search`：$0.004/次 · 每页约 10 个广告主
- [Google 广告主的广告](https://okdata.online/zh/apis/google/advertisers/ads/list/) `google.advertisers.ads.list`：$0.004/次 · 每页约 40 条广告
- [TikTok 广告库搜索](https://okdata.online/zh/apis/tiktok/ads/search/) `tiktok.ads.search`：$0.004/次 · 每页约 12 条广告

更新于 2026-11-12
