TikTok Ad Library Scraper (EU): Ads, Targeting, Reach
Pricing
from $0.46 / 1,000 ads
TikTok Ad Library Scraper (EU): Ads, Targeting, Reach
Scrape the official TikTok Ad Library (EU/UK) without login: search by keyword or advertiser and get each ad's video, caption, dates, unique users seen, targeting (age, gender, interests, audience size) and reach by country. Monitor new ads.
Pricing
from $0.46 / 1,000 ads
Rating
0.0
(0)
Developer
Hydrocore Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
20 hours ago
Last modified
Categories
Security
Limited permissionsShare
Download ads from the official TikTok Ad Library (library.tiktok.com) into a spreadsheet: the ad video and images, caption, advertiser, who paid, first and last shown dates, how many people saw it, targeting (age, gender, interests, audience size) and reach by country. Search by keyword or by advertiser, and monitor competitors with "only new ads since the last run".
No TikTok account or login is needed. The scraper uses the public ad library website, the same one anyone can open in a browser.
Sample result (real row from a test run for nike in Germany, trimmed):
{ "advertiserName": "NIKE Retail B.V.", "adFormat": "video", "caption": "Neue Winterausrüstung in Nike Factory Stores.","firstShownDate": "2026-10-20", "lastShownDate": "2026-11-04", "uniqueUsersSeen": "300K-400K","targetingAgeGroups": ["18-24", "25-34", "35-44"], "targetingAudienceSize": "15.2M-18.6M","adUrl": "https://library.tiktok.com/ads/detail/?ad_id=1879578150853922" }
What does it do?
TikTok must publish every ad shown in the EU, EEA, UK, Switzerland and Turkey in a public library (the EU Digital Services Act requires this). This actor searches that library for you and saves one row per ad with:
- The ad: id and link, format (video, image or carousel), caption, video link, cover image and image links, whether TikTok removed it and why.
- The advertiser: name, advertiser id, country registered in, and who paid for the ad.
- Dates and reach: first and last shown date, days shown, unique users who saw it (as a range and as min/max numbers), and total impressions.
- Targeting (when details are on): ages and genders per country, estimated audience size, interests, custom/excluded audiences, languages, cities, devices, operating systems and more.
- Reach by country: impressions per country, optionally split by age and gender.
What can I use it for?
- Competitor ad research: see every ad a competitor ran in Europe this year, which ones ran longest (long-running ads usually work) and who they targeted.
- Creative inspiration: collect video ads for a keyword like "skincare" or "protein" and study hooks and captions.
- Agency reporting: track which brands advertise in a category and how big their campaigns are.
- Monitoring: get a daily list of the new ads a brand launched.
- Research and journalism: study political, health or finance advertising with real targeting data.
How do I use it?
- Click Try for free (or Start).
- Enter either Search terms (words in the ad or advertiser name, like
adidasorrunning shoes) or Advertisers (a company name likeNike Retail B.V.; the closest matching advertiser is used). - Optionally choose a Country and a date range (default: ads shown in the last 12 months, all supported countries).
- Set Max ads per search (default 30) and click Start.
- Open the Ads or Targeting table, or download Excel, CSV, JSON or HTML.
Monitoring tip: turn on Only new ads since the last run and create a Schedule (for example daily). The first run saves the current ads; later runs return only ads you haven't received yet. Use Monitor name if you run several schedules.
Input
| Field | What it does | Example |
|---|---|---|
| Search terms | Keyword search, one per line | adidas, running shoes |
| Advertisers (exact company) | Ads from one advertiser (closest name match) | Nike Retail B.V. |
| Ad library links | Paste links from library.tiktok.com (searches or single ads) | https://library.tiktok.com/ads/detail/?ad_id=... |
| Ad ids | Download specific ads by id | 1880293642743025 |
| Country where the ad was shown | One country or all supported countries | DE |
| Shown from / Shown until | Date range (default: last 12 months). You can also type 30 days | 2026-10-01 |
| Sort ads by | Last shown (newest first, default), first shown, or reach (TikTok ranks by impressions, so the uniqueUsersSeen ranges are only roughly in order); applied before the limits | mostUsersSeen |
| Max ads per search | Default 30 | 200 |
| Max ads in total | Stop the run after this many ads | 1000 |
| Include targeting and reach details | Opens each ad's detail page (default on) | true |
| Add reach by age and gender | Adds the age × gender split per country | false |
| Only new ads since the last run | Monitoring mode | true |
| Monitor name | Optional name for the monitoring memory | nike-daily |
| Max spend (USD) | The run stops before it would cost more | 1 |
| Proxy (optional) | Normally not needed; leave off | off |
Example input:
{"advertisers": ["Nike Retail B.V."],"maxAdsPerSearch": 15}
Output
Every row has the same columns in the same order (null when TikTok gives no value; day-only dates as YYYY-MM-DD, counts as numbers). A real row from a test run on 4 November 2026 (input above), shown in the v1.1 column order. Long links and the targeting object are shortened here.
{"adId": "1880293642743025","advertiserName": "NIKE Retail B.V.","adFormat": "video","caption": "Übertriff dich selbst","firstShownDate": "2026-10-28","lastShownDate": "2026-11-03","daysShown": 7,"uniqueUsersSeen": "10K-100K","uniqueUsersSeenMin": 10000,"uniqueUsersSeenMax": 100000,"advertisingObjective": "Traffic","countriesTargeted": ["DE"],"countriesTargetedCount": 1,"removed": false,"videoCoverUrl": "https://p16-common-sign.tiktokcdn.com/ad-site-i18n-sg/...","videoUrl": "https://library.tiktok.com/api/v1/cdn/1793806589/video/...","adUrl": "https://library.tiktok.com/ads/detail/?ad_id=1880293642743025","advertiserId": "6876453864464188162","advertiserRegisteredIn": "Netherlands","paidFor": "INITIATIVE MEDIA B.V.","subject": "Apparel & Accessories","videoCount": 1,"imageUrls": null,"removalReason": null,"regionsReached": 1,"totalImpressions": "10K-100K","targetingAgeGroups": ["18-24", "25-34", "35-44"],"targetingGenders": ["male"],"targetingAudienceSize": "5.1M-6.2M","targetingCustomAudience": false,"targetingExcludedAudience": false,"targetingInterests": null,"targetingVideoInteractions": null,"targetingCreatorInteractions": null,"targetingLanguages": null,"targetingHighSpendingPower": false,"targeting": {"ages": {"DE": ["18-24", "25-34", "35-44"]},"genders": {"DE": ["male"]},"audienceSize": "5.1M-6.2M","customAudience": false,"excludedAudience": false,"interests": null,"operatingSystems": ["ALL"],"highSpendingPower": false},"reachByCountry": [{"country": "DE", "impressions": "37K", "impressionsMin": 37000, "impressionsMax": 37000}],"detailsStatus": "ok","source": "advertiser","searchQuery": "Nike Retail B.V.","searchCountry": "all","scrapedAt": "2026-11-04T15:36:04.768Z"}
Views. The Output tab opens in Overview (cover, advertiser, format, caption, first/last shown, users seen, goal, countries, paid for, link). There are also Reach, Targeting, Advertisers and Detailed (all fields) views.
Changed in v1.1:
firstShown/lastShown→firstShownDate/lastShownDate(same values). New flat targeting columns next to the fulltargetingobject:targetingAgeGroups,targetingGenders,targetingAudienceSize,targetingCustomAudience,targetingExcludedAudience,targetingInterests,targetingVideoInteractions,targetingCreatorInteractions,targetingLanguages,targetingHighSpendingPower, pluscountriesTargetedCount. Empty lists arenulland every row has a fixed column order. New input Sort ads by (TikTok's own sort, applied before the limits).
The run also saves a RUN_SUMMARY record (key-value store) with, per search, how many ads TikTok reported, how many were saved, and any problems in plain English.
How much does it cost?
You pay per result (pay-per-event). Apify platform usage is included.
| Event | Free plan | Paid Apify plans (Bronze and up) | When |
|---|---|---|---|
| Actor start | $0.006 | $0.006 | Once per run (per GB of memory; default 1 GB) |
| Ad | $0.00055 | $0.00046 | Each ad saved, with or without details |
Worked examples on the Free plan (based on our test runs, at current prices as of 5 November 2026):
| Run | Calculation | Total |
|---|---|---|
| 15 Nike ads with targeting | $0.006 + 15 × $0.00055 | $0.0143 |
| 20 ads for "adidas" with targeting | $0.006 + 20 × $0.00055 | $0.0170 |
| 60 ads without details | $0.006 + 60 × $0.00055 | $0.0390 |
| 1,000 ads (Bronze plan) | $0.006 + 1,000 × $0.00046 | $0.466 |
| Search with no results | start only | $0.006 |
| Daily monitoring run with no new ads | start only | $0.006 |
Ads whose detail page fails to load after several tries are still saved free of charge, marked detailsStatus: "failed". Ads you already received in monitoring mode are never charged. Set Max spend (or Apify's "Maximum cost per run") and the run stops cleanly before going over; the start fee counts toward that limit (for example, a $0.01 limit covers the start fee plus a few ads on the Free plan).
How does it compare?
Other TikTok ads actors on the Apify Store, from their public Store listings checked on 5 November 2026. Prices change, so please check the listings for current figures.
| Actor | Data source | Price per ad |
|---|---|---|
| This actor | TikTok Ad Library (EU) | $0.00055 (Free plan) / $0.00046 (paid plans) + $0.006 per run |
| data_xplorer/tiktok-ads-library-fast | TikTok Ad Library | $0.0015 ($0.0014 Bronze) + $0.025 per run |
| s-r/tiktok-ads-library | TikTok Ad Library | $0.003 |
| brilliant_gum/tiktok-ads-library-scraper | TikTok Ad Library | $0.015 |
| lexis-solutions/tiktok-ads-scraper | TikTok ads | $0.00049 |
| datapeak/tiktok-creative-center | Creative Center (top ads, not the library) | $0.0015 |
| azzouzana/tiktok-creative-center-top-ads-scraper | Creative Center (top ads, not the library) | $0.001 |
Why we think this one is a good choice:
- Competitive pricing with pay-only-for-useful-results — ads whose details fail to load and already-seen monitoring ads are free.
- Targeting and reach included in the price: ages, genders, audience size, interests and reach per country, not just the ad card.
- Numbers you can sort: ranges like "10K-100K" also come as
uniqueUsersSeenMin/Max. - Monitoring mode for daily "what's new" schedules, charged only for new ads.
- Search by advertiser (closest name match), by keyword, by pasted library link or by ad id.
- Fair billing: ads whose details fail to load are saved for free.
FAQ
How do I see a competitor's TikTok ads? Type the brand name in Search terms (or the exact advertiser in Advertisers), pick a country and run. You get each ad's video, caption, dates, reach and targeting.
Can I download TikTok ad videos? Yes, each row has a direct video link you can open or download. Links expire after some time, so download soon after the run.
What is a "scraper"? A program that opens public web pages and copies the information into a table for you. This one opens the TikTok Ad Library and turns each ad into a row.
Is it legal? The TikTok Ad Library is published by TikTok so that anyone can inspect ads, as required by the EU Digital Services Act. The actor only reads public pages, does not log in, and does not solve captchas or get around any access control. It saves company information about advertisers, not data about people who saw the ads. You are responsible for how you use the data (for example copyright in the ad videos). If in doubt, ask a lawyer.
Do I need a TikTok account or a proxy? No. Leave the proxy off: in our tests the ad library answered best without one. Turn it on only if your runs keep failing to load; in our tests a datacenter proxy made the library answer worse, not better.
Why only Europe? TikTok's public library only covers ads shown in the EU, EEA, UK, Switzerland and Turkey. Ads shown only in the US or elsewhere are not in it.
Why are reach numbers ranges like "10K-100K"? That's how TikTok publishes them. We add min and max numbers so you can sort and filter. Some per-country impressions are exact (like "37K").
How does advertiser search work? The actor types your name into the library's advertiser search and uses the closest match (the matched name is in the run summary). For the most exact results, copy the advertiser name as it appears in the library, or paste a library link.
Do the video links last forever? No. TikTok's media links expire after a while (often within a day). Download the videos you need soon after the run, or re-run later to get fresh links.
How fast is it? About 4–5 seconds per ad with targeting details, and about 1.5 seconds per ad without details (in our cloud tests: 20 ads with details in about 90–100 seconds; 60 ads without details in about 90 seconds).
Why did I get fewer ads than TikTok's total? The library's search sometimes stops paging early. The actor reloads and continues automatically, but if TikTok keeps returning nothing new it stops and notes this in the run summary. You only pay for the ads you receive.
Limits
- Only ads shown in the EU, EEA, UK, Switzerland and Turkey.
- TikTok's library can be slow or briefly unavailable. Each page has a short time limit; the run stops cleanly after about 60 seconds of failed requests in total, or after 45 minutes, keeping what it saved. Runs that stop like this still pay the $0.006 run fee.
- Very new ads (shown in the last 1–2 days) sometimes have no video or image link yet.
- Video and image links expire.
- Advertiser search uses the closest name match; similarly named companies can be confused.
- Search results are capped by what TikTok's website returns; very large searches can take a long time, so use Max ads per search and date ranges.
- TikTok can change the library at any time. If something breaks, please open an issue and we'll fix it quickly.
Ready-made examples
Open one, click Try for free and change the inputs to your own:
- Most viewed TikTok ads for Nike in Germany
- All TikTok ads from one advertiser, with targeting
- Monitor new TikTok ads for a competitor keyword
Related scrapers by hydrocore
- Google Ads Transparency Scraper: the same competitor's Google and YouTube ads
- Website Contact & Social Finder: contacts and socials of advertisers
- Telegram Channel Scraper: monitor brand channels and posts
Support
Found a bug or need a field we don't have yet? Open an issue on the Issues tab and include the run link.