TikTok Ad Library Scraper
Pricing
from $0.15 / 1,000 results
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
Maintained by CommunityActor 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 Countries — GB, 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
| Field | What it does |
|---|---|
| Advertiser names | Brand or company names to look up |
| Keywords | Search the ad content rather than the advertiser |
| Advertiser business IDs | The most precise input — no name matching at all |
| Countries | 2-letter codes, or all for all 32 |
| Last shown on/after, on/before | Date window, filtered server-side on last-shown date |
| Ad format | All, video, image or text |
| Ad status | All, active only, or inactive only |
| Sort by | Last shown, published date, or unique reach — ascending or descending |
| Targeted gender / age bands / reach bands | Filter by the advertiser's own declared targeting |
| Max ads | Hard 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"}
| Field | Notes |
|---|---|
ad_id | TikTok's stable id. Dedup on this |
advertiser_name | The account that ran the ad — see below |
title | The caption the ad ran with, hashtags included. On TikTok this is usually the whole ad copy |
media_url | Direct CDN link, decoded from TikTok's proxy link so the asset is downloadable |
media_url_proxied | The original library link, kept as a fallback |
estimated_audience | Reach band, e.g. 0-1K, 1K-10K |
scraped_region | Which country this row was collected for |
ad_library_url | Opens 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 tier | Price 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.
Related scrapers
- 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