Back to TikTok
Apify·TikTok
TikTok Ads Library Scraper — EU Library & Creative Center
/brilliant_gum/tiktok-ads-library-scraperasync$0.0195 / resultScrape TikTok Ads Library (EU/EEA/UK) and Creative Center (global). Extract ad creatives, targeting data, reach estimates, CTR, video URLs, and industry insights. Dual-source coverage — no login required. Residential proxies built-in. Runs as an Apify actor (20–120 s); results are dataset rows.
Charged per returned row plus the flat fee.
Input
| Field | Type | Required | Description |
|---|---|---|---|
| source | string (library, creative_center, both) | yes | Which TikTok data source to scrape. 'library' = TikTok Ads Library (EU/EEA/UK only, no login, DSA transparency data). 'creative_center' = TikTok Creative Center Top Ads (global, performance metrics). 'both' = both sources combined. (default "library") |
| searchTerms | array | — | Brand names or keywords to search. Each term is searched separately. Used for 'library' source only — Creative Center is browsed by category/country. (default ["Nike"]) |
| countries | array | — | ISO 2-letter country codes (case-insensitive). The Ads Library covers EU/EEA/UK only (DE, FR, IT, ES, NL, PL, SE, GB…). With source="library": other countries are skipped with a warning if at least one supported country is listed, and the run stops with an explanation if none is. With source="creati (default ["DE"]) |
| adType | string (ALL, VIDEO, IMAGE, TEXT) | — | Filter by creative format. Applies to the Ads Library source (TikTok filters server-side). (default "ALL") |
| dateFrom | string | — | Show ads first seen on or after this date. Format: YYYY-MM-DD. Leave empty to skip. Applies to Ads Library source only. (default "") |
| dateTo | string | — | Show ads first seen on or before this date. Format: YYYY-MM-DD. Leave empty to skip. Applies to Ads Library source only. (default "") |
| maxResults | integer | — | Maximum ads to collect per search term + country pair. Note: TikTok Ads Library is capped at 3,600 results per query (300 pages × 12 ads). The scraper will warn you when approaching this limit. (default 10) |
| resolveAdDetails | boolean | — | For each Library ad, fetch its full detail page to collect: advertiser business ID, 'Ad paid for by', targeting age groups, targeting gender, targeting interests, target countries, and behavior targeting. Adds ~3 sec per ad — disable for large bulk runs, enable when you need full targeting data. (default false) |
| includeAudienceBreakdown | boolean | — | Add a per-country x age x gender impression breakdown to each ad. Requires resolveAdDetails. Off by default: one ad can add ~225 rows, which is handy in JSON but turns a CSV export into hundreds of columns. (default false) |
Run it
curl -s https://www.sooma.dev/v1/run \
-H "Authorization: Bearer $SOOMA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"provider":"apify","endpoint":"/brilliant_gum/tiktok-ads-library-scraper","input":{"source":"library"}}'
Or ask your agent: it will call inspect for this schema and run it over MCP.