TikTok DSA Ads Transparency Library Scraper
Pricing
from $0.49 / 1,000 results
TikTok DSA Ads Transparency Library Scraper
Search TikTok's EU/EEA ad transparency database by keyword, advertiser or ad ID. Get creative media, advertiser identity, impression buckets, audit status and per-region/age/gender targeting.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
vexaloom-labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Search TikTok's DSA ad transparency library across 33 European markets and the global Creative Center Top Ads from one actor. Get ad creatives, advertiser identity, first/last shown dates, unique-user reach, age/gender targeting, CTAs, landing pages and Creative Center performance signals — with no TikTok account, cookies, API key or proxy setup.
What this actor does
- DSA library search by keyword, exact advertiser name (optionally with its business ID), ad ID or a pasted library URL — in 33 EU/EEA/UK/CH/TR markets or all of them.
- Server-side filters for ad type, active/inactive status, age, gender, unique reach and six sort orders, plus an exact-phrase option.
- Full ad detail (optional): caption, CTA, landing page, advertising objective, registered advertiser, sponsor, linked TikTok account, per-country reach and age × gender breakdowns.
- Creative Center Top Ads (optional): global markets, 7/30/180-day windows, ranking by For You/CTR/likes, objective/industry/language filters, video renditions, CTR, likes, cost tier and optional landing pages/comments/shares.
- Both sources in one run, with a
sourcefield on every row. - Count-only mode for a quick number of matching DSA ads.
- Fields a source does not disclose are omitted, never left as null or placeholders.
Output per ad
DSA library rows (recordType: "ad", source: "tiktokAdsLibrary")
adId,adUrl— TikTok ad ID and its library detail pageadvertiserName,advertiserId,advertiserBusinessName,advertiserBusinessId,advertiserCountry,advertiserSponsoradvertiserTikTokUser— linked TikTok account:id,username,displayName,followers,accountType,avatarUrl,profileUrladTitle,adType,adFormat,showMode,adStartDate,adEndDate,daysActiveadImpressions,adImpressionsMin,adImpressionsMax,avgImpressionsPerDayadVideoUrl,adVideoCover,adVideos,adImages— working media URLsctaText,advertisingObjective,landingPageUrlauditStatus,auditStatusLabel,sorAuditStatus,rejectionInfo,auditReasonstargetingByLocation,adReachByCountry,targetingByAge,targetingByGender,targetAudienceSize,targetAudienceSizeMin,targetAudienceSizeMaxtargetingCountries,targetingCities,targetingProvinces,targetingLanguages,targetingDeviceModels,targetingOperatingSystems,targetingHighSpendingPower,audienceTargeting,audienceExcludeinterestTargeting,videoInteractionsTargeting,creatorInteractionsTargeting,displayModesearchTotal,searchRegion,searchQueryType,detailsFetched,detailUnavailablesource: "tiktokAdsLibrary",recordType: "ad",scrapedAt
Creative Center rows (recordType: "topAd", source: "creativeCenter")
adId,adUrl,adTitle,advertiserName,adType: "video"adVideoUrl,adVideoCover,videoRenditions,videoDuration,videoWidth,videoHeightctr,likeCount,costTier,industryKey,industryName,objectiveKey,objectiveNamelandingPageUrl,commentCount,shareCount,advertiserCountries,isSearchAd,ccSourceobservedCountry,observedPeriod,source: "creativeCenter",recordType: "topAd",scrapedAt
Count-only runs emit one row with recordType: "summary" and searchTotal.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | library | library, creativeCenter or both |
keyword | string | "" | Keyword/advertiser text for a DSA search; empty = browse. |
advertiserName | string | – | Exact advertiser name; retried as a keyword if the exact search is empty. |
advertiserId | string | – | Optional business ID to disambiguate an advertiser search. |
adIds | array | [] | Direct ad IDs to open. |
startUrls | array | [] | TikTok library search or ad-detail URLs. Search URLs contribute their region, keyword/advertiser and date window. |
region | string | all | One of 33 country codes or all. |
startDate | string | – | Last-shown date from (YYYY-MM-DD); default one year ago. |
endDate | string | – | Last-shown date to (YYYY-MM-DD); default today. |
sortBy | string | last_shown_date,desc | One of six sort orders. |
adType | string | all | all, video, image, text. |
adStatus | string | active | all, active, inactive. |
age | array | [] | Any of 13-17, 18-24, 25-34, 35-44, 45-54, 55+. |
gender | string | all | all, female, male. |
uniqueReach | string | all | all, under10k, 10k-100k, over100k. |
exactPhrase | boolean | false | Treat the keyword as an exact phrase. |
includeDetails | boolean | true | Enrich DSA ads from their detail pages. |
countOnly | boolean | false | Return one summary row with the matching total. |
maxItems | integer | 50 | Records per source (1–5,000). |
ccCountry | string | US | Creative Center market (28 options). |
ccPeriod | string | 30 | 7, 30 or 180 days. |
ccOrderBy | string | for_you | for_you, ctr or like. |
ccObjective | string | all | all or one of eight campaign objectives. |
ccIndustry | string | all | all or one of 258 industries. |
ccLanguage | string | all | all or one of 16 languages. |
ccSweep | boolean | true | Sweep filter combinations to collect more than 20 unique top ads. |
ccIncludeDetails | boolean | true | Add landing pages, comments and shares. |
Example: keyword search in Germany with details
{"mode": "library","keyword": "Nike","region": "DE","includeDetails": true,"maxItems": 25}
Example: exact advertiser, all markets, image ads
{"mode": "library","advertiserName": "NIKE Retail B.V.","region": "all","adType": "image","includeDetails": true,"maxItems": 100}
Example: Creative Center top ads in the US
{"mode": "creativeCenter","ccCountry": "US","ccPeriod": "180","ccOrderBy": "ctr","ccSweep": true,"maxItems": 100}
Example: both sources
{"mode": "both","keyword": "skincare","region": "FR","ccCountry": "FR","maxItems": 50}
Use cases
- Competitive intelligence — see every ad a brand runs in Europe, with dates, reach and targeting.
- Creative research — collect working video/image creatives and CTAs across markets.
- Compliance monitoring — pull audit status, rejection details and advertiser identity.
- Market sizing — compare unique-user bands and per-country reach for a category.
- Global trend spotting — use Creative Center to find high-performing ads outside the EU.
- Advertiser due diligence — check the registered business, sponsor and linked TikTok account.
FAQ
Do I need a TikTok account or cookies? No. Both sources are public. The actor opens TikTok's public pages once to establish an anonymous session; no login, cookie file or API key is involved.
How many DSA ads can one search return? TikTok serves 12 ads per page and caps a single search at roughly 5,000 results. Split by country, date range or keyword to go deeper. The actor warns when it reaches the cap.
Why are some ads missing details?
TikTok marks some ads as unavailable or shows no detail data. Those rows keep their listing data and carry detailUnavailable: true. Detail pages are opened for at most 500 DSA ads and 200 Creative Center ads per run; rows beyond those limits keep their listing data.
Why are my video URLs sometimes expired? TikTok's media URLs are signed and time-limited. The actor converts the library's wrapper URLs into working CDN URLs; download or re-host the files promptly if you need them long-term.
What is the difference between the DSA library and Creative Center? The DSA library is the EU transparency database: dates, reach, targeting and advertiser identity. Creative Center is a global showcase of high-performing ads with CTR/likes/video renditions, but no dates or targeting.
Why does Creative Center return only 20 ads?
Anonymous visitors get one page of 20 per filter combination. With ccSweep on, the actor sweeps periods, rankings, objectives and formats, deduplicates, and collects many more unique ads.
Can I search Creative Center by keyword? Not reliably without a TikTok login. The actor does not offer a Creative Center keyword field; it sweeps the public Top Ads surface instead.
How do exact advertiser searches work?
TikTok matches the exact advertiser name (for example NIKE Retail B.V.). If that returns nothing, the actor retries the name as a keyword so you still get useful results.
Why do some fields stay empty? TikTok does not disclose them for every ad — for example spend, exact impressions, cities or device targeting. Empty fields are omitted rather than filled with placeholders.
Is this affiliated with TikTok? No. This is an independent third-party actor that reads TikTok's public ad transparency library and Creative Center pages.