TikTok Ad Library Scraper avatar

TikTok Ad Library Scraper

Pricing

from $0.15 / 1,000 results

Go to Apify Store
TikTok Ad Library Scraper

TikTok Ad Library Scraper

Scrape every ad an advertiser runs on TikTok from the official Commercial Content Library. Extract ad IDs, advertiser names, first & last shown dates, unique reach and direct downloadable video and image URLs. Search by advertiser or keyword across 32 countries. No login or API key.

Pricing

from $0.15 / 1,000 results

Rating

5.0

(1)

Developer

Mary Lou

Mary Lou

Maintained by Community

Actor stats

2

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Categories

Share

TikTok Ad Library Scraper — competitor ads from the Commercial Content Library

Scrape every ad an advertiser runs on TikTok and export it as JSON, CSV or Excel. Pulls ad text, advertiser, first and last shown dates, estimated audience reach and — the part most tools cannot give you — a direct, downloadable link to the video or image creative.

Data comes from TikTok's official Commercial Content Library, the ad archive TikTok publishes under the EU Digital Services Act. No login, no API key, no TikTok account.


Read this first: what the archive covers

TikTok's Commercial Content Library exists to satisfy EU transparency law, so it covers the EU/EEA plus the UK and Switzerland — 32 countries:

AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MT NL NO PL PT RO SE SI SK

There is no US data in it. None. If you need US TikTok ads, this archive does not contain them and no scraper can extract them from it. Use all in Countries to sweep every covered country at once.


What you can do with it

  • Competitor ad research — see every creative a brand is running, and where
  • Creative intelligence and swipe files — download the actual videos, not just metadata, and build a reference library
  • Ad creative trend analysis — track how a brand's messaging and format mix shift over months
  • Track competitor campaign launches — schedule weekly and diff the results
  • Influencer and branded-content discovery — find which creators are running paid content for a brand
  • Market and category research — search by keyword to see everyone advertising a theme
  • Compliance and brand-safety monitoring — audit what is running under your name in each market

How to scrape TikTok ads

1. Put a brand or advertiser into Advertiser names, e.g. Nike. Or use Keywords to search ad content instead of advertiser names.

2. Pick your CountriesGB, a list, or all for every covered market.

3. Leave Proxy on RESIDENTIAL. This one is genuinely not optional — see below.

4. Press Start. Max ads is prefilled so a first run finishes in under a minute.


Input

FieldWhat it does
Advertiser namesBrand or company names to look up
KeywordsSearch the ad content rather than the advertiser
Advertiser business IDsThe most precise input — no name matching at all
Countries2-letter codes, or all for all 32
Last shown on/after, on/beforeDate window, filtered server-side on last-shown date
Ad formatAll, video, image or text
Ad statusAll, active only, or inactive only
Sort byLast shown, published date, or unique reach — ascending or descending
Targeted gender / age bands / reach bandsFilter by the advertiser's own declared targeting
Max adsHard cap across every advertiser and country

Output

One row per ad. Export as JSON, CSV, Excel, XML or RSS.

{
"ad_id": "1855473544822801",
"advertiser_name": "kakattekoiyo5",
"advertiser_business_id": null,
"title": "NIKExNIKE=??? #fyp #nike #ootd #fashion",
"media_type": "video",
"first_shown": "2026-01-27",
"last_shown": "2026-01-27",
"estimated_audience": "1K-10K",
"media_url": "https://v58.tiktokcdn.com/video/tos/alisg/...",
"media_url_proxied": "https://library.tiktok.com/api/v1/cdn/...",
"cover_url": null,
"media_count": 1,
"scraped_region": "GB",
"ad_library_url": "https://library.tiktok.com/ads/detail/?ad_id=1855473544822801"
}
FieldNotes
ad_idTikTok's stable id. Dedup on this
advertiser_nameThe account that ran the ad — see below
titleThe caption the ad ran with, hashtags included. On TikTok this is usually the whole ad copy
media_urlDirect CDN link, decoded from TikTok's proxy link so the asset is downloadable
media_url_proxiedThe original library link, kept as a fallback
estimated_audienceReach band, e.g. 0-1K, 1K-10K
scraped_regionWhich country this row was collected for
ad_library_urlOpens the exact ad on TikTok, so any row can be verified by hand

The media URL is the differentiator. TikTok serves creatives behind signed, expiring proxy links. This decodes them back to the real CDN URL, so you get an asset you can actually download rather than a link that dies.


Two things worth knowing

"Advertiser" means the account that ran the ad. On TikTok most branded content is posted by creators, so a search for Nike returns creator handles alongside NIKE Retail B.V. That is the archive being accurate, not the scraper being wrong — those creators really did run paid Nike content. Use Advertiser business IDs when you want one specific company and nothing else.

spent and impression are always empty. TikTok publishes both fields and fills in neither: 60 out of 60 ads measured came back with 0 and "". They are passed through unchanged rather than quietly dropped, but do not build anything on them. estimated_audience is the reach figure that is actually populated.


Why the proxy setting matters

TikTok's search endpoint refuses datacenter IP addresses outright while still completing the session handshake on the same connection — so a run on the wrong proxy group looks like a broken scraper rather than a blocked address.

Leave the proxy on RESIDENTIAL and it works. If a run reports refused jobs, rerun with Continue from last run: a different residential exit is usually all it takes, and nothing already collected is repeated.


Pricing

$0.15 per 1,000 ads, plus Apify platform usage — the same price as the other ad-library scrapers in this suite.

Plan tierPrice per 1,000 ads
Free / Bronze$0.17
Silver, Gold, Platinum, Diamond$0.15

Platform usage is billed by Apify at your own plan rate, separately from the scraper charge. This Actor runs a real browser (TikTok's endpoint does not answer anything else) and needs residential proxies, and both land in the usage half — measured at roughly $0.08 per 1,000 ads, which stays small because the browser is booted once per run and every search after that is a plain API call.

The startup is a one-off ~10 seconds per run, so fewer, larger runs are cheaper than many small ones. Set Max ads to cap any run exactly.


FAQ

Do I need a TikTok account or API key? No. This is a public archive with no login.

Why only EU countries? Because that is all the library contains. It is an EU Digital Services Act transparency obligation, not a global product.

Is scraping the TikTok Ad Library legal? It reads a public registry TikTok publishes deliberately, under EU transparency rules. No login, no paywall, and these are commercial advertisements rather than personal data.

Can I get every ad from one specific company? Yes. Put its Advertiser business ID in and nothing is matched by name. The id appears in the output of any run that finds the company.

Can I download the ad videos? Yes — that is what media_url is for. It is a direct CDN link, decoded from TikTok's expiring proxy link.

Why did a run return fewer ads than the total shown? Either Max ads capped it, or some jobs were refused. The run summary records both, and refused jobs are resumable.

How fast is it? Measured on the platform: 80 ads across 4 jobs (2 searches x 2 countries) in 27 seconds, 71 of them with a decoded direct media URL.

Can I run it on a schedule? Yes. Run weekly and diff the results to track how a brand's creative mix changes over time.


  • Meta Ads Library Scraper — Facebook and Instagram ads, same suite, same $0.15 per 1,000
  • Google Ads Transparency Center Scraper — Search, YouTube, Display, Shopping and Maps ads
  • Google Search Scraper — organic SERP results and rank tracking
  • Website Contact Scraper — emails, phones and socials for any domain list