TikTok Ads Scraper
Pricing
from $1.50 / 1,000 results
TikTok Ads Scraper
💸🥇 THE MOST COMPLETE AND CHEAPEST TIKTOK ADS SCRAPER. 🥇💸 Two modes: Ads Library (EU transparency, targeting, spend) + Top Ads (Creative Center, engagement metrics, 80+ countries). Search by keyword, advertiser, and industry. Extract videos, performance data, and creative assets.
Pricing
from $1.50 / 1,000 results
Rating
5.0
(2)
Developer
Data Xplorer
Maintained by CommunityActor stats
4
Bookmarked
293
Total users
79
Monthly active users
0.15 hours
Issues response
a month ago
Last modified
Categories
Share
🔍 TikTok Ads Scraper: Library + Top Ads
The most complete TikTok advertising intelligence tool on Apify. Two powerful modes in one Actor:
- 📚 Ads Library: EU transparency data from library.tiktok.com
- 🎯 Top Ads: Performance-ranked ads from TikTok Creative Center

🎯 Two Modes, One Actor
📚 Ads Library Mode (EU Transparency)
Access TikTok's official Ad Library for the European market. Get full transparency data: advertiser info, targeting, audience size, spend estimates, impressions, per-country reach with age × gender breakdowns, advertiser profile, media assets, and more.
Best for: Compliance research, competitor monitoring in EU/EEA, advertiser-level analysis, spend & reach insights.
🎯 Top Ads Mode (Creative Center)
Access TikTok's Creative Center Top Ads, a curated ranking of the best-performing ads worldwide. Get engagement metrics (likes, CTR, budget level), video assets, and industry classification.
Best for: Creative inspiration, ad benchmarking, industry trend analysis, competitive intelligence.
💎 Key Features
| Feature | Ads Library | Top Ads |
|---|---|---|
| 🌍 Global coverage | EU/EEA countries | 80+ countries |
| 🔍 Keyword search | ✅ | ✅ |
| 🏢 Advertiser search | ✅ | - |
| 🔗 Direct URL import | ✅ | - |
| ❤️ Engagement metrics (likes, CTR, budget) | - | ✅ |
| 📈 Impressions & audience estimates | ✅ (with details) | - |
| 🗺️ Per-country reach + age × gender breakdown | ✅ (with details) | - |
| 🔢 Numbers parsed to integers (min/max) | ✅ | - |
| 💰 Spend estimates | ✅ (with details) | - |
| 🎯 Targeting data (age, gender, region, languages, OS…) | ✅ (with details) | - |
| 👤 Advertiser profile + TikTok account | ✅ (with details) | Brand name |
| 🏷️ Industry & objective classification | - | ✅ |
| 🎬 Video URLs | Up to 1080p | 720p |
| ⚡ Speed | ~2-5 ads/sec | ~20 ads/sec |
💡 Tip: In Library mode, enable "Fetch Ad Details" to get impressions, spend, full targeting, advertiser profile, and the reliable per-country reach (with age × gender breakdowns). Without it, scraping is faster but only returns basic ad info.
🔢 All numeric ranges are parsed. Fields like
Ad Audience,Ad Target Audience Sizeand every reach value are returned as an object{ "raw": "11.7M-14.2M", "min": 11700000, "max": 14200000 }— keep the human-readable text inraw, and sort/filter/aggregate directly onmin/max.
📚 Ads Library Mode
Search Options
- 🔤 Keyword Search: Search ads by content keywords
- 🏢 Advertiser Name: Find all ads from a specific advertiser (optionally with Advertiser ID for precision)
- 🌐 Direct URL: Paste any TikTok Ads Library URL and all parameters are auto-extracted
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | "library" | Set to "library" |
| region | string | "all" | Country code (FR, DE, GB, etc.) or "all" |
| startDate | string | "2025-01-01" | Start date (YYYY-MM-DD) |
| endDate | string | "" | End date (empty = today) |
| queryType | string | "2" | 1 = Keyword, 2 = Advertiser Name, url = Direct URL |
| query | string | "" | Search term, advertiser name, or full URL |
| advertiserBizId | string | "" | Optional advertiser business ID |
| maxAds | number | 20 | Maximum ads to collect |
| fetchDetails | boolean | true | Fetch targeting, advertiser profile, audience, spend, impressions, and per-country reach |
| detailConcurrency | number | 6 | Number of ad-detail requests fetched in parallel |
| proxyConfiguration | object | Apify Proxy | Proxy settings |
Input Example: Advertiser Name + ID
{"mode": "library","region": "FR","startDate": "2026-01-01","endDate": "2026-06-01","queryType": "2","query": "LEVI STRAUSS & CO.","advertiserBizId": "6886458055832109825","maxAds": 10,"fetchDetails": true}
Input Example: Keyword Search
{"mode": "library","region": "GB","startDate": "2025-01-01","queryType": "1","query": "football","maxAds": 20,"fetchDetails": true}
Input Example: Direct TikTok URL
{"mode": "library","queryType": "url","query": "https://library.tiktok.com/ads?region=FR&start_time=1777123937000&end_time=1779715937000&adv_name=LEVI%20STRAUSS%20%26%20CO.&adv_biz_ids=6886458055832109825&query_type=2&sort_type=last_shown_date,desc","maxAds": 10,"fetchDetails": true}
Output Example (Library, with fetchDetails)
{"AD ID": "1867625146670401","Advertiser Name": "COCA COLA HBC POLSKA SP Z O O","Ad Title": "Wygrywaj!","AD Preview": "https://p16-common-sign.tiktokcdn.com/...","Ad Dates": [{ "FirstShown": "2026-06-12", "FirstShownTimestamp": 1781222400 },{ "LastShown": "2026-06-14", "LastShownTimestamp": 1781395200 }],"Ad Audience": { "raw": "1M-10M", "min": 1000000, "max": 10000000 },"Ad Details": [{ "Estimated Audience": "1M-10M" },{ "Spent": "" },{ "Impression": "" },{ "Type": "2" },{ "Audit Status": "1" },{ "Advertising Objective": "Reach" },{ "Call To Action": "Learn more" },{ "External URL": "https://cokeurl.com/KuM89D?utm_source=tiktok" }],"Ad Media": ["Video 1: https://library.tiktok.com/api/v1/cdn/...","Image 1: https://p16-common-sign.tiktokcdn.com/..."],"Ad Targeting": {"regions": ["PL"],"age": ["18-24", "25-34", "35-44", "45-54", "55+"],"gender": ["female", "male", "unknown"],"os": ["ALL"],"languages": [],"high_spending_power": "No","audience": "No"},"Ad Reach": {"total_region": 1,"total_impressions": { "raw": "1M-10M", "min": 1000000, "max": 10000000 },"by_country": [{"region": "PL","impressions": { "raw": "1.5M", "min": 1500000, "max": 1500000 },"breakdowns": [{ "age": "18-24", "gender": "FEMALE", "impressions": { "raw": "252K", "min": 252000, "max": 252000 } },{ "age": "25-34", "gender": "FEMALE", "impressions": { "raw": "352K", "min": 352000, "max": 352000 } },{ "age": "25-34", "gender": "MALE", "impressions": { "raw": "273K", "min": 273000, "max": 273000 } }]}]},"Advertiser": {"name": "COCA COLA HBC POLSKA SP Z O O","adv_biz_ids": "6876461641299395330","registry_location": "United Kingdom","sponsor": "MEDIACOM UK LIMITED","tiktok_account": {"username": "cocacola","display_name": "Coca-Cola","follower_count": "4.2M","account_type": "BLUEV_BA","profile_web_link": "https://www.tiktok.com/share/user/..."}},"Ad Sponsor": "MEDIACOM UK LIMITED","Ad Target Audience Size": { "raw": "11.7M-14.2M", "min": 11700000, "max": 14200000 },"Ad Detail URL": "https://library.tiktok.com/ads/detail/?ad_id=1867625146670401"}
Library Metrics (with fetchDetails enabled)
ℹ️ Numeric fields below are returned as
{ raw, min, max }:rawis the original text (e.g."1.5M"),min/maxare integers (equal for single values, distinct for ranges,nullwhen empty).
| Field | Description |
|---|---|
Ad Title | Title/headline (caption) of the ad creative |
Ad Audience | Estimated audience range as { raw, min, max } (e.g. "1M-10M") — broad, less reliable |
Ad Reach | Reliable per-country reach: total regions, total impressions, and for each country the exact impressions plus a full age × gender breakdown — every impressions value is a { raw, min, max } object |
Ad Details | Spend, impressions, type, audit status, advertising objective, call to action, and external (landing) URL |
Ad Targeting | Regions, enabled age groups, gender, languages, cities, provinces, OS, high spending power, audience signals |
Advertiser | Advertiser profile: name, business IDs, registry location, sponsor, and linked TikTok account (username, followers, account type, profile link) |
Ad Sponsor | Name of the sponsoring entity |
Ad Target Audience Size | Total estimated target audience as { raw, min, max } (e.g. "11.7M-14.2M") |
Ad Media | Direct URLs to videos, cover images, and creatives |
🎯 Which reach number should I trust? Use
Ad Reach.by_country[].impressions.min(or.raw) — it's the accurate "Reach by location" figure from TikTok's detail page. The top-levelAd Audience("Unique users seen") is only a broad estimate range.
🎯 Top Ads Mode
Filters
- 🔍 Keyword: Search by brand, product, or topic
- 🌍 Countries: Multi-select from 80+ countries
- 🏷️ Industries: 21 parent categories + 200+ sub-industries
- 🎯 Objectives: Traffic, Conversions, App Installs, Video Views, Reach, Lead Gen, Product Sales
- 🗣️ Language: Filter by ad language (17 languages)
- ❤️ Likes percentile: Top 1-20%, 21-40%, etc.
- 📅 Time period: Last 7 days, 30 days, or 6 months
- 📊 Sort by: Likes, Reach, CTR, CVR, 2s/6s view rates
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | - | Set to "top_ads" |
| topAdsKeyword | string | "" | Search keyword (leave empty to browse all) |
| topAdsCountryCode | array | [] | Country codes, e.g. ["FR", "DE"] |
| topAdsPeriod | string | "7" | "7", "30", or "180" days |
| topAdsOrderBy | string | "like" | Sort: like, impression, ctr, cvr, play_2s_rate, play_6s_rate |
| topAdsIndustry | array | [] | Industry IDs (parent or sub-industry) |
| topAdsObjective | array | [] | Objective IDs: 1=Traffic, 2=App, 3=Conversions, etc. |
| topAdsLanguage | string | "" | Language code (fr, en, de, etc.) |
| topAdsLikeRange | string | "" | Likes percentile: 1-5 |
| topAdsMaxItems | number | 100 | Maximum ads to collect (up to 500) |
Input Example: Top Ads in France (Education)
{"mode": "top_ads","topAdsCountryCode": ["FR"],"topAdsPeriod": "30","topAdsOrderBy": "like","topAdsIndustry": ["10000000000"],"topAdsLanguage": "fr","topAdsMaxItems": 50}
Input Example: Keyword Search
{"mode": "top_ads","topAdsKeyword": "netflix","topAdsCountryCode": ["FR", "US"],"topAdsPeriod": "30","topAdsOrderBy": "like","topAdsMaxItems": 20}
Input Example: Sub-industry Filter
{"mode": "top_ads","topAdsCountryCode": ["FR"],"topAdsPeriod": "30","topAdsIndustry": ["14103000000", "14104000000"],"topAdsObjective": ["3"],"topAdsMaxItems": 40}
Output Example (Top Ads)
{"id": "7636363707227226130","ad_title": "Des fiches prêtes à apprendre pour booster tes révisions CRPE","brand_name": "Not Mention","like": 585,"cost": 1,"cost_readable": "Medium","ctr": 0.14,"ctr_readable": "Top 14%","industry_key": "label_10101000000","industry": "Primary & Secondary Education & K-12","objective_key": "campaign_objective_conversion","objective": "Conversions","video_duration": 10.467,"video_cover": "https://p16-common-sign.tiktokcdn.com/...","video_url_720p": "https://v16m-default.tiktokcdn.com/...","video_width": 720,"video_height": 1280,"creative_center_url": "https://ads.tiktok.com/business/creativecenter/inspiration/topads/pc/en?ad_id=7636363707227226130"}
Top Ads Metrics
| Field | Description |
|---|---|
like | Number of likes on the ad |
cost_readable | Budget level: Low, Medium, or High |
ctr_readable | CTR percentile ranking (e.g. "Top 14%" = outperforms 86% of ads) |
industry | Human-readable industry label (200+ categories) |
objective | Campaign objective: Traffic, Conversions, App Installs, etc. |
video_url_720p | Direct download URL for the ad video (720p) |
💡 Use Cases & Ideas
🏢 For Marketing & Ad Agencies
- Creative swipe files: Build a library of top-performing TikTok ads in your client's industry. Filter by country, objective, and sub-industry to find exactly the right inspiration.
- Pitch preparation: Show clients what competitors are running and what's working best. Use budget and CTR data to benchmark performance.
- Ad spend monitoring: Track how much competitors invest across regions with Library mode's spend estimates.
🛍️ For E-Commerce & DTC Brands
- Competitor tracking: Monitor what ads your competitors are running in real-time across EU markets. Get notified when new campaigns launch.
- Creative inspiration: Find the highest-engagement ads in your product category (Skincare, Cosmetics, Fashion...) and study what makes them work.
- Market entry research: Before launching in a new country, analyze what ad formats, messages, and budgets work best in that market.
📊 For Data Analysts & Researchers
- Industry benchmarking: Collect hundreds of ads across industries to build performance benchmarks (CTR percentiles, budget tiers, engagement rates).
- Reach analysis: Use Library mode's per-country reach and age × gender breakdowns (with integer
min/maxvalues) to map exactly who each campaign reached, market by market. - Trend detection: Run weekly scrapes to track which industries, objectives, and ad formats are gaining traction over time.
- Academic research: Study advertising patterns, targeting strategies, and political ad transparency across the EU.
🎯 For Media Buyers & Performance Marketers
- Winning ad formats: Sort by CTR or conversion rate to find the highest-performing creative formats in your niche.
- Budget intelligence: Understand whether top performers are Low, Medium, or High budget, and find opportunities where low-budget ads outperform.
- Targeting insights: Use Library mode's age, gender, regional targeting and per-country reach data to refine your own audience strategy.
🔗 Integration Ideas
- Feed into Google Sheets or Airtable: Use Apify integrations to automatically push new ads into your creative tracking spreadsheet.
- Build a Slack alert: Get notified when a competitor launches a new ad or when a top-performing ad appears in your industry.
- Power a dashboard: Connect the output to Looker Studio, Tableau, or any BI tool for real-time ad intelligence dashboards.
- Train AI models: Use the video URLs and ad copy to train creative analysis models or generate ad variations.
🤝 Support & Resources
Found a bug or want to request a feature? Open an issue.
❤️ Enjoying the scraper? Leave a review here