# 怎么拉取 TikTok 创意中心热门广告，再到广告库里查某个品牌

> 按关键词、国家和时间窗口搜 TikTok 创意中心热门广告，再到 TikTok 广告库里看某个品牌投过的广告：参数、代码，以及跑一遍要花多少钱。

网页版：https://okdata.online/zh/guides/tiktok-creative-center-top-ads/

按顺序用两个接口：先用 TikTok 创意中心热门广告看某个品类里哪些广告跑得好，再用 TikTok 广告库搜索查其中一个品牌在欧洲投过的广告。下面的示例一共 4 次调用，花费 $0.012；失败的调用不扣费。

更新于 2026-11-12

要做的事：下周要给某个品类写创意 brief，想从两个角度看 TikTok 上的广告。创意中心的“热门广告”（Top Ads）是 TikTok 自己挑出来的效果好的广告，有点赞和点击率，但没有投放日期。广告库（Ads Library）是在欧洲投放过的广告的透明记录，有投放日期和触达人数区间，但没有效果数据。先用热门广告找出值得研究的钩子和品牌，再打开其中一个品牌的记录，看它在投多少条广告、每条跑了多久。

最后你会得到两张表：一张是热门素材和它们的数据，一张是某个广告主的投放历史。整个过程不需要 TikTok 账号，也不用登录，每次调用就是带着 key 发一个 HTTPS 请求。

## 分步操作

### 第一步：搜创意中心热门广告

调用[TikTok 创意中心热门广告](https://okdata.online/zh/apis/tiktok/creative_center/ads/search/)，`query` 填关键词。决定结果的是这三个参数：

- `country`：ISO 国家代码，默认 `US`。英国是 `GB`。
- `window`：回看天数，可选 `7`、`30`（默认）或 `180`。
- `sort`：`relevance`（默认，综合排序）或 `likes`（按点赞）。

一次调用最多返回 20 条广告，每次 $0.002。每条广告有 `id`、文案 `text`、品牌名 `advertiser.name`、视频 `videos`、封面 `images`，以及创意中心页面链接 `url`。加上 `view=full`，每条广告还会多出 `ext.likes`、`ext.ctr`、`ext.budget_level`、`ext.objective`、`ext.industry` 和 `ext.duration_seconds`，价格不变。

```bash
curl -G "https://api.okdata.online/v1/tiktok/creative_center/ads/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'query=sunscreen' \
  -d country=GB -d window=7 -d sort=likes -d view=full
```

要第二页，就把 `page.next_cursor` 原样作为 `cursor` 传回去；`page.has_more` 为 `false` 时说明没有更多了。

### 第二步：到广告库里打开一个品牌的记录

把第一步里的品牌数一数，挑出你想研究的那个，把名字作为 `advertiser` 传给[TikTok 广告库搜索](https://okdata.online/zh/apis/tiktok/ads/search/)；也可以用 `query` 按关键词搜广告库。两个参数只能给一个：两个都给或都不给会返回 `invalid_params`，不扣费。

一次调用最多返回 12 条广告，每次 $0.004。每条有 `advertiser.name`、广告标题 `text`、`videos` 和 `images`、`first_shown_at` 和 `last_shown_at`、`reach`（广告库给出的触达人数区间，比如 `10K-100K`），以及广告库页面链接 `url`。加 `view=full` 还有 `ext.subject`，也就是广告库给这条广告标的类目。

```bash
curl -G "https://api.okdata.online/v1/tiktok/ads/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'advertiser=Sunday Shield Ltd'
```

这里要用广告库登记的广告主名称，常常是公司主体名，不一定和创意中心显示的品牌名一样。用 `advertiser` 搜不到时，改用 `query` 搜品牌名，再按 `advertiser.name` 把对得上的行留下。

### 第三步：用 Python 串起来

```python
import collections
import csv
import os
import requests

API = "https://api.okdata.online"
HEADERS = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
PAGES = 2  # 每一步读几页；每页一次调用


def pages(path, params):
    cursor = None
    for _ in range(PAGES):
        body = requests.get(API + path, headers=HEADERS, params={**params, **({"cursor": cursor} if cursor else {})}, timeout=60).json()
        if body["code"] != "ok":
            raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
        yield from body["data"]["items"]
        if not body["page"]["has_more"]:
            return
        cursor = body["page"]["next_cursor"]


top = list(pages("/v1/tiktok/creative_center/ads/search", {"query": "sunscreen", "country": "GB", "window": "7", "sort": "likes", "view": "full"}))
with open("top_ads.csv", "w", newline="", encoding="utf-8") as f:
    out = csv.writer(f)
    out.writerow(["id", "brand", "caption", "likes", "ctr", "budget_level", "url"])
    for a in top:
        out.writerow([a["id"], a["advertiser"]["name"], a["text"], a["ext"]["likes"], a["ext"]["ctr"], a["ext"]["budget_level"], a["url"]])

brands = collections.Counter(a["advertiser"]["name"] for a in top if a["advertiser"]["name"])
brand = brands.most_common(1)[0][0]
with open("brand_ads.csv", "w", newline="", encoding="utf-8") as f:
    out = csv.writer(f)
    out.writerow(["id", "advertiser", "title", "first_shown", "last_shown", "reach", "url"])
    for a in pages("/v1/tiktok/ads/search", {"advertiser": brand}):
        out.writerow([a["id"], a["advertiser"]["name"], a["text"], a["first_shown_at"], a["last_shown_at"], a["reach"], a["url"]])
```

## 注意事项

- **热门广告是精选，不是全量。** 这是 TikTok 自己挑的。一个品牌没出现在里面，不代表它没在大量投放；要看品牌到底投过什么，去广告库查。
- **广告库只有欧洲。** 广告库记录的是在欧洲投放过的广告。只在美国投放的品牌，在这里可能查不到任何记录。
- **哪些字段是空的。** 创意中心的广告没有投放日期、落地页、触达人数和广告主 ID，这些字段为 null，并在 `meta.unavailable` 里注明原因。创意中心没显示品牌时，品牌名可能是空字符串。`ext.objective` 和 `ext.industry` 是 TikTok 内部的键名，比如 `campaign_objective_traffic`。
- **点击率和预算档位只当信号看。** 它们适合在创意中心内部给素材排个先后。做预算还是要看自己的投放数据。
- **想留的视频当天就下载。** 视频链接指向 TikTok 的服务器，过一阵可能失效。
- **重试不会重复扣费。** 每次调用带一个 `Idempotency-Key` 请求头。24 小时内同样的请求配同样的 key，会直接拿回上次的结果，`meta.replayed` 为 `true`，不再扣费。

想知道 TikTok 官方有没有这类接口，可以看[创意中心热门广告能不能用 API 拿](https://okdata.online/zh/answers/tiktok-creative-center-top-ads-api/)。要同时盯一个竞品在 Meta、Google 和 TikTok 上的广告，看[怎么查竞品在三个广告库里的广告](https://okdata.online/zh/answers/competitor-ads-meta-google-tiktok/)。

## 示例花费

取两页英国近 7 天“sunscreen”（防晒霜）的创意中心热门广告，按点赞排序，再对出现次数最多的品牌查两页广告库

| 接口 | 调用次数 | 单价 | 小计 |
|---|---|---|---|
| [TikTok 创意中心热门广告](https://okdata.online/zh/apis/tiktok/creative_center/ads/search/) | 2 | $0.002 | $0.004 |
| [TikTok 广告库搜索](https://okdata.online/zh/apis/tiktok/ads/search/) | 2 | $0.004 | $0.008 |
| 合计 | 4 |  | $0.012 |

按本页生成时的价格计算。失败的调用不扣费。

## 在你的 AI 里用（MCP）

先接好 MCP 服务，然后直接说你要什么。智能体会自己找到这些接口、看清价格，再用你的余额调用。

可以这样说：在 TikTok 创意中心找英国近 7 天 sunscreen 的热门广告，按点赞排序，取两页，带点赞和点击率。然后挑出现次数最多的品牌，到 TikTok 广告库里列出它的广告，取两页，带首次、最近投放日期和触达区间。

```json
{
  "endpoint": "tiktok.creative_center.ads.search",
  "params": {
    "query": "coffee"
  },
  "idempotency_key": "<新的 UUID>"
}
```

MCP：`https://api.okdata.online/mcp`

## 本指南用到的接口

- [TikTok 创意中心热门广告](https://okdata.online/zh/apis/tiktok/creative_center/ads/search/) `tiktok.creative_center.ads.search`：$0.002/次 · 每页约 20 条广告
- [TikTok 广告库搜索](https://okdata.online/zh/apis/tiktok/ads/search/) `tiktok.ads.search`：$0.004/次 · 每页约 12 条广告

## 更多TikTok内容

- [TikTok API](https://okdata.online/zh/apis/tiktok/)
- [TikTok API Python 教程：导出视频评论做情感分析（2026）](https://okdata.online/zh/guides/tiktok-comments-python/)
- [怎么按关键词批量采集 TikTok Shop 商品评价](https://okdata.online/zh/guides/tiktok-shop-product-reviews/)
- [怎么一次看全竞品在 Meta、Google 和 TikTok 上投的广告？](https://okdata.online/zh/answers/competitor-ads-meta-google-tiktok/)
- [TikTok 创意中心的热门广告能用 API 拿吗？](https://okdata.online/zh/answers/tiktok-creative-center-top-ads-api/)
- [社媒接口的结果该缓存多久，才能少花冤枉钱？](https://okdata.online/zh/answers/cache-social-media-api-results/)
- [社媒数据接口服务商那么多，怎么挑？](https://okdata.online/zh/answers/choose-social-media-data-api-vendor/)
- [数据接口有按次、按条、按积分、按流量计费的，怎么放在一起比价？](https://okdata.online/zh/answers/compare-data-api-pricing-units/)
- [批量查 1000 个博主的粉丝数要多少钱？](https://okdata.online/zh/answers/creator-profile-lookup-cost/)
- [平台官方 API 和第三方数据接口怎么选（2026）](https://okdata.online/zh/compare/official-apis-vs-data-apis/)
- [怎么选社交媒体数据 API（2026）](https://okdata.online/zh/compare/social-media-data-apis/)
- [广告搜索接口](https://okdata.online/zh/roles/ads-search/)
