TikTok Ad Library Scraper - Ads, Creatives & Audience
Pricing
from $1.20 / 1,000 ad scrapeds
TikTok Ad Library Scraper - Ads, Creatives & Audience
Scrape the TikTok Ad Library by advertiser. Every ad a brand runs in a country, with the ad copy, the creative video and images, the dates it ran, and the estimated audience TikTok itself publishes. No login and no API key.
Pricing
from $1.20 / 1,000 ad scrapeds
Rating
0.0
(0)
Developer
Eimantas V
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
TikTok Ad Library Scraper
Every ad an advertiser has run on TikTok in a given country - not just the ones still live - with the ad copy, the creative video and images, the dates it ran, and TikTok's own estimated audience.
No login. No API key. No cookie of yours.
What you get for every ad
| Field | Notes |
|---|---|
advertiserName | The registered entity that paid for the ad, as TikTok spells it |
title | The ad copy shown beneath the creative |
videoUrls | Direct links to the creative video, where TikTok publishes it |
imageUrls | The creative stills, or a video ad's cover frame |
creativeAvailable | Whether TikTok published the creative at all. It withholds it for a large share of ads — measured at eight of twelve on one advertiser's first page — so this tells you an empty list is TikTok's choice rather than a failure |
firstShownAt, lastShownAt | ISO 8601 |
estimatedAudience | TikTok's own range, e.g. 0-1K, 10K-100K — it never publishes an exact number |
estimatedAudienceMin, estimatedAudienceMax | The range parsed, so you can sort on it |
spend, impressions | Where TikTok discloses them for that country and advertiser. Left empty rather than zero where it does not, because a spend of nothing and an audience of nobody would look like data and be false |
url | The ad's own page in the library, so any row can be checked by hand |
Each advertiser also gets a summary row: totalAdsReported is TikTok's own count,
adsFetched is what this run collected, and pagesFetched is how many requests it took.
The first two together tell you your coverage.
One name is often several advertisers
Searching Nike resolves against TikTok's own autocomplete and finds five separately
registered entities - NIKE Retail B.V., NIKE COM SRL, NIKELAB LTD and others -
each advertising under its own business id. This Actor walks all of them and reports each
on its own row, rather than silently picking one and dropping the rest.
Four of those five turn out to run no ads in GB at all, and they come back as honest
zero rows rather than being quietly left out.
Search by name, not by id. The ad library matches on the advertiser's registered name and offers no way to look one up from a business id, so a numeric entry is rejected with a row explaining what to pass instead. Every ad this Actor returns is checked against the name that was searched before it is written.
Pick the right country
The ad library is a per-country repository. The same advertiser runs a different set
of ads in GB and DE, so the region you choose changes the answer rather than just
filtering it. Asking for a country an advertiser does not run in returns an honest zero.
Example
{"advertisers": ["Nike"],"region": "GB","maxAdsPerAdvertiser": 50,"proxyConfig": { "useApifyProxy": true }}
How complete is it
TikTok serves 12 ads per request and this Actor follows the cursor to the end of the advertiser's catalogue, carrying the cursor forward so no page is skipped or repeated. Where an advertiser is served the same ad twice across pages, it is delivered once.
By default you get every ad in your date range, not just the ones still running. That
distinction is most of the library: measured on one advertiser in GB over a year,
16,105 ads in total against 43 still running. If you want only live ads, the Which
ads option does that - but it is a small fraction of what the advertiser has run.
Where a run stops early - your ad limit, your charge limit, or the run's time limit - the summary row says which, rather than leaving you to infer it from a short dataset.
Set an ad limit that matches the question
A large advertiser's full catalogue runs to tens of thousands of ads. Max ads per
advertiser is what keeps a run proportionate: leave it low to survey what a brand is
doing now, raise it when you need the archive. The summary row's totalAdsReported tells
you how much you did not take, so a capped run is never mistaken for a complete one.