TikTok ad research
Build a sourced comparison of TikTok Top Ads and explain which creative ideas
are supported by observed content and public performance signals. Top Ads is a
selected collection of high-performing auction ads, not every advertiser's campaigns.
Setup and requests
Set CRAWLORA_API_KEY to your key from crawlora.net.
Run the bundled scripts/crawlora.sh from this skill directory or by absolute
path. It sends x-api-key to https://api.crawlora.net/api/v1 and prints JSON.
Keep the key in the environment. Read reference/endpoints.md
for the ten Top Ads endpoints and their exact parameters.
Workflow
- Determine the brands/product keywords, market, objective, lookback period,
and requested sample size from the brief. Discover current industry,
objective, language, and country IDs through
/tiktok/top-ads/filters;
use /locations and /location-info when the geography needs clarification.
- Search
/tiktok/top-ads/list, keeping market, period, and objective consistent
across competitors. period is 7, 30, or 180; limit is at most 100.
order_by accepts for_you, impression, ctr, play_2s_rate,
play_6s_rate, cvr, or like. State the sort because it changes the sample.
- Deduplicate by Top Ads material ID and fetch
/tiktok/top-ads/detail for a
bounded shortlist. Use the returned material ID, not a TikTok video ID.
Recommendations and spotlight ads can widen discovery, but mark them as
supplemental rather than silently mixing them into a matched comparison.
- Use
/tiktok/top-ads/analysis when performance over the ad's duration matters.
Metrics are retain_ctr, retain_cvr, click_cnt, convert_cnt, and
play_retain_cnt; period_type is 7, 30, or 180. Match metric and
period across ads before comparing charts or percentiles.
- Inspect the actual creative when the environment supports video/image viewing.
If only metadata is accessible, limit conclusions to title/copy and returned
fields. Do not claim to have watched a hook or heard audio from metadata alone.
- Summarize recurring messaging, format, offer, and call-to-action patterns with
linked examples. Present proposed creative tests as hypotheses; public charts
do not establish what caused conversion performance.
scripts/crawlora.sh /tiktok/top-ads/filters
scripts/crawlora.sh /tiktok/top-ads/list \
keyword=skincare country_code=US period=30 limit=10 order_by=ctr
Output and interpretation
Return a comparison with material_id, available advertiser/title, source link,
country, objective, lookback, duration, observed messaging/format, returned
performance fields, and retrieval time. Preserve metric labels and units as
reported; a percentile is not a raw CTR, spend estimate, or ROI.
- Keyword results may mention a brand without belonging to it. Verify advertiser
identity where available and mark uncertain matches.
- No matches means none in the queried Top Ads sample, not that the competitor
is inactive. Describe the filters and coverage rather than claiming all ads.
- Keep signed media URLs as returned; they may expire. Retain material IDs and
source-page links when available so the research can be repeated.
- The response can contain nested upstream
code/msg/data. Check both the
Crawlora envelope and any upstream code before treating materials as results.
Stop at pagination.has_more=false or the agreed sample bound.
- On
429, back off; retry a transient 5xx once. Stop on 401/403 and
report the source limitation. Preserve a partial comparison if only some
details/charts load, clearly marking missing observations.
1---2name: tiktok-ad-research3description: Research TikTok Creative Center Top Ads by brand, market, industry, and objective through Crawlora. Use for competitor-ad comparisons, creative briefs, messaging and format analysis, and inspection of public ad-performance charts.4---56# TikTok ad research78Build a sourced comparison of TikTok Top Ads and explain which creative ideas9are supported by observed content and public performance signals. Top Ads is a10selected collection of high-performing auction ads, not every advertiser's campaigns.1112## Setup and requests1314Set `CRAWLORA_API_KEY` to your key from [crawlora.net](https://crawlora.net).15Run the bundled `scripts/crawlora.sh` from this skill directory or by absolute16path. It sends `x-api-key` to `https://api.crawlora.net/api/v1` and prints JSON.17Keep the key in the environment. Read [reference/endpoints.md](reference/endpoints.md)18for the ten Top Ads endpoints and their exact parameters.1920## Workflow21221. Determine the brands/product keywords, market, objective, lookback period,23 and requested sample size from the brief. Discover current industry,24 objective, language, and country IDs through `/tiktok/top-ads/filters`;25 use `/locations` and `/location-info` when the geography needs clarification.262. Search `/tiktok/top-ads/list`, keeping market, period, and objective consistent27 across competitors. `period` is `7`, `30`, or `180`; `limit` is at most 100.28 `order_by` accepts `for_you`, `impression`, `ctr`, `play_2s_rate`,29 `play_6s_rate`, `cvr`, or `like`. State the sort because it changes the sample.303. Deduplicate by Top Ads material ID and fetch `/tiktok/top-ads/detail` for a31 bounded shortlist. **Use the returned material ID**, not a TikTok video ID.32 Recommendations and spotlight ads can widen discovery, but mark them as33 supplemental rather than silently mixing them into a matched comparison.344. Use `/tiktok/top-ads/analysis` when performance over the ad's duration matters.35 Metrics are `retain_ctr`, `retain_cvr`, `click_cnt`, `convert_cnt`, and36 `play_retain_cnt`; `period_type` is `7`, `30`, or `180`. Match metric and37 period across ads before comparing charts or percentiles.385. Inspect the actual creative when the environment supports video/image viewing.39 If only metadata is accessible, limit conclusions to title/copy and returned40 fields. Do not claim to have watched a hook or heard audio from metadata alone.416. Summarize recurring messaging, format, offer, and call-to-action patterns with42 linked examples. Present proposed creative tests as hypotheses; public charts43 do not establish what caused conversion performance.4445```sh46scripts/crawlora.sh /tiktok/top-ads/filters47scripts/crawlora.sh /tiktok/top-ads/list \48 keyword=skincare country_code=US period=30 limit=10 order_by=ctr49```5051## Output and interpretation5253Return a comparison with `material_id`, available advertiser/title, source link,54country, objective, lookback, duration, observed messaging/format, returned55performance fields, and retrieval time. Preserve metric labels and units as56reported; a percentile is not a raw CTR, spend estimate, or ROI.5758- Keyword results may mention a brand without belonging to it. Verify advertiser59 identity where available and mark uncertain matches.60- No matches means none in the queried Top Ads sample, not that the competitor61 is inactive. Describe the filters and coverage rather than claiming all ads.62- Keep signed media URLs as returned; they may expire. Retain material IDs and63 source-page links when available so the research can be repeated.64- The response can contain nested upstream `code`/`msg`/`data`. Check both the65 Crawlora envelope and any upstream code before treating `materials` as results.66 Stop at `pagination.has_more=false` or the agreed sample bound.67- On `429`, back off; retry a transient `5xx` once. Stop on `401`/`403` and68 report the source limitation. Preserve a partial comparison if only some69 details/charts load, clearly marking missing observations.