TikTok Ad Library Scraper - Ads, Creatives & Audience avatar

TikTok Ad Library Scraper - Ads, Creatives & Audience

Pricing

from $1.20 / 1,000 ad scrapeds

Go to Apify Store
TikTok Ad Library Scraper - Ads, Creatives & Audience

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

Eimantas V

Maintained by Community

Actor 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

FieldNotes
advertiserNameThe registered entity that paid for the ad, as TikTok spells it
titleThe ad copy shown beneath the creative
videoUrlsDirect links to the creative video, where TikTok publishes it
imageUrlsThe creative stills, or a video ad's cover frame
creativeAvailableWhether 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, lastShownAtISO 8601
estimatedAudienceTikTok's own range, e.g. 0-1K, 10K-100K — it never publishes an exact number
estimatedAudienceMin, estimatedAudienceMaxThe range parsed, so you can sort on it
spend, impressionsWhere 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
urlThe 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.