TikTok Top Ads Scraper
Pricing
from $18.00 / 1,000 results
TikTok Top Ads Scraper
Get top-performing TikTok ads from the Creative Center 'Top Ads' dashboard. Filter by country, industry, objective, language, format, and ranking (For You / CTR / Reach). Returns ad title, brand, creative video URL, and performance metrics, with optional detail enrichment. HTTP-only, no login.
Pricing
from $18.00 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
π TikTok Top Ads Scraper
Extract the top-performing TikTok ads straight from TikTok's Creative Center "Top Ads" dashboard. See what brands are spending on, which creatives are winning right now, and where each ad sends people after they tap.
β¨ Why Use This Actor?
- π Real, live ad data β the same dashboard TikTok shows to brand strategists
- π Filter by country, industry, objective, language, and format
- π Three ranking modes β For You (TikTok's blended quality score), CTR (clicks), Reach (impressions)
- π¬ Direct creative URLs β playable video files, cover images, durations, dimensions
- π Optional landing-page enrichment β pull the destination URL, engagement counts, and creative pattern label for every ad
- πͺΆ Lightweight β no browser, no login, no API key required
- πΎ Stable JSON output β ready for spreadsheets, databases, BI dashboards, and RAG pipelines
π― Use Cases
- Competitor research β see exactly which ads your competitors are running this week
- Creative inspiration β sample winning hooks, formats, and CTAs in your category
- Affiliate / DTC research β discover trending products and the landing pages they convert on
- Media planning β benchmark CTR & reach signals across geos and industries
- Trend reports β ship weekly "top ads in [industry]" digests for your team or clients
- Brand monitoring β track when your own brand starts/stops showing in the dashboard
π οΈ How It Works
- You pick a country (and optionally an industry / objective / language / format / ranking mode).
- The actor pulls the ranked ad list from TikTok's Creative Center β same data the dashboard shows you in a browser.
- (Optional) For each ad it fetches the deeper detail view to add the landing page URL, share/comment counts, keyword list, and creative pattern.
- Results stream into your Apify dataset, ready to download as JSON, CSV, or Excel β or pipe to a webhook / database.
You don't manage accounts, logins, browsers, or sessions β none of that is required.
π₯ Input
| Field | Type | Default | Description |
|---|---|---|---|
country_code | string | "US" | ISO-2 country code. Required by TikTok. Examples: US, GB, ID, JP, BR, DE, FR, KR. |
period | string | "7" | Trending window in days. One of "7", "30", "180". |
order_by | string | "for_you" | How to rank the ads. "for_you" (recommended), "ctr", or "reach". |
industry | string | (empty) | Industry vertical filter. Empty for all. Example: label_14000000000 (Food & Beverage). |
objective | string | (empty) | Campaign objective filter. Empty for all. Example: campaign_objective_conversion. |
ad_language | string | (empty) | Language of the ad copy. Empty for all. Example: en, id, es, pt, ja. |
ad_format | string | (empty) | Creative format filter (image / video / spark). Empty for all. |
limit | integer | 20 | Max ads to return. TikTok exposes ~100 per filter combination. |
include_detail | boolean | false | When true, enriches each ad with landing page URL, engagement counts, and keyword list. Roughly doubles run time. |
proxy | object | (disabled) | Optional Apify proxy. Recommended only for large fan-outs across many countries. |
Example input
{"country_code": "US","period": "7","order_by": "for_you","limit": 20,"include_detail": true}
π€ Output
Each record is one ad. Field shape is the raw passthrough from TikTok's Creative Center API plus an envelope (_input, _source, _scrapedAt, _rank).
| Field | Type | Description |
|---|---|---|
id | string | Material ID β stable identifier, use as dedup key and to look up details later |
ad_title | string | Ad title shown on the dashboard |
brand_name | string | Brand or advertiser name (sometimes blank) |
industry_key | string | Industry vertical key (e.g. label_14103000000) |
objective_key | string | Campaign objective key (e.g. campaign_objective_conversion) |
ctr | number | Click-through performance index |
cost | number | Cost performance index |
like | number | Like count |
favorite | boolean | Marked-as-favorite flag |
is_search | boolean | Whether this is a Search ad placement |
video_info | object | Creative video metadata β vid, cover, video_url, duration, width, height |
landing_page | string | (detail-only) Destination URL the ad sends users to |
comment | number | (detail-only) Comment count |
share | number | (detail-only) Share count |
keyword_list | array | (detail-only) Keywords TikTok associated with the ad |
objectives | array | (detail-only) Full objective metadata |
pattern_label | string | (detail-only) Creative pattern classification |
country_code | string | (detail-only) Country the ad data is sampled from |
source | string | (detail-only) Distribution source key |
voice_over | object | (detail-only) Voice-over metadata |
_rank | integer | Rank position in the returned list (1 = top) |
_input | object | The input parameters used for this run |
_source | string | "S1-cc-api" |
_scrapedAt | string | UTC ISO 8601 timestamp |
Example output (with include_detail: true)
{"_input": {"country_code": "US","period": 7,"order_by": "for_you","industry": "","objective": "","ad_language": "","ad_format": ""},"_source": "S1-cc-api","_scrapedAt": "2026-06-02T16:15:31Z","_rank": 1,"id": "7641228329165635602","ad_title": "Microneedling at Home: Start Skincare Journey Now","brand_name": "","industry_key": "label_14103000000","objective_key": "campaign_objective_conversion","ctr": 0.02,"cost": 1,"like": 6,"favorite": false,"is_search": true,"video_info": {"vid": "v10033g50000d85hvuvog65iv8lnei00","duration": 58.978,"cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oAgDffDsFTk7FPWWnbβ¦","video_url": "https://v16-default.akamaized.net/β¦","width": 720,"height": 1280},"landing_page": "https://www.qureskincare.com/pages/micro-infusion-faq-page-2?utm_source=tiktok&utm_medium=paid","comment": 0,"share": 0,"keyword_list": ["skincare", "microneedling", "anti-aging"],"pattern_label": "problem_solution","source_key": "topview","country_code": "US"}
Example output (without detail enrichment)
When include_detail: false, the detail-only fields above are absent β you still get the core ad + creative metadata for every record.
βοΈ Tips
- Start with
for_youto get the blended-quality ranking TikTok shows by default. - Use
industry+country_codeas your primary slice β TikTok's quality signals are most reliable inside a single category/region pair. include_detail: trueis worth it if you need landing pages or share/comment counts. If you only need creative URLs and CTR, leave it off and save half the run time.- For large fan-outs (every country Γ every industry), enable the optional Apify proxy to spread egress across IPs.
β οΈ Known Limits
total_countcaps around 100β110 per filter combination β TikTok only ranks the top of the funnel. To get more ads, fan out acrosscountry_code Γ industry Γ objectiveand dedupe byiddownstream.- Some fields can be empty.
brand_name,keyword_list,voice_over, and a few others come back as empty strings/arrays when TikTok didn't classify them. The raw passthrough preserves whatever TikTok sends. costandctrare relative indices, not absolute dollar / percentage values. TikTok normalises within the dashboard's window.
πΈ GMV Proxy via Top Ads (TikTok Shop research workflow)
The TikTok Shop affiliate / sold-velocity feeds are not publicly browsable on the web (see ../actor-tiktok-shop-affiliate-gmv/). This actor is the closest working GMV proxy today: brands that are actively spending on TikTok Shop ads are a strong leading indicator of which products are moving.
Why it works as a GMV proxy
- Top Ads ranks by performance signals β
for_youblends impressions Γ engagement Γ conversion. A high-ranking shop ad implies real sell-through. - Conversion-objective filter isolates buying-intent campaigns (vs. awareness / reach plays).
- Industry filter picks a single DTC vertical (food, apparel, beauty, electronics, home, health).
- Landing pages (in
include_detail) point to actual TikTok Shop product pages β the URL itself is a product attribution.
Use the ecom_preset to skip the filter math
Setting ecom_preset auto-fills industry + objective to the right values for that vertical:
| Preset | Industry | Objective |
|---|---|---|
shop_general | (any) | campaign_objective_conversion |
shop_beauty | label_14103000000 | (any) |
shop_apparel | label_22000000000 | (any) |
shop_food_beverage | label_27101000000 | (any) |
shop_home_garden | label_18105000000 | (any) |
shop_travel | label_17106000000 | (any) |
shop_electronics | label_23125000000 | (any) |
Important caveats (verified 2026-06-03):
- The CC
top_adsendpoint caps results at ~20 items per filter combo. TikTok's API advertisestotal_count: 363in the pagination payload, but page 2 always returns empty. The actor surfaces what's actually there; if you set a tight industry preset and ask forlimit: 50you may get fewer rows than that.- TikTok silently ignores the server-side
industry_key/objective_keyfilter params on this endpoint. The actor filters the response client-side after fetching, so your preset DOES narrow the output β just by post-processing, not by the server. You'll seeinspected N, kept Min the run logs.- Parent industry labels like
label_14000000000are not in the index (only sub-labels likelabel_14103000000are). The presets use confirmed sub-labels. Use the rawindustryfield with anylabel_*value you observe in this actor's own output to target other sub-verticals.- Presets set industry only (except
shop_general, which sets objective only). Combining both filters is usually too tight against the ~20-item ceiling and yields 0 results. If you want to combine, set theobjectiveinput directly alongside the preset.
Example: Indonesia Shop beauty research
{"country_code": "ID","period": "7","order_by": "for_you","ecom_preset": "shop_beauty","limit": 50,"include_detail": true}
That run pulls the top 50 conversion-objective beauty ads in Indonesia over the last 7 days, enriched with landing pages β i.e. the top 50 TikTok Shop beauty products actually moving units in that window.
Fan out for full coverage
For a full-market sweep, run multiple invocations in parallel β one per country_code Γ ecom_preset combination β and dedupe the resulting datasets by ad id.
π Other TikTok Actors in This Suite
- TikTok Trending Scraper β trending videos from the public Explore feed
- TikTok Search Scraper β search videos by keyword or hashtag
- TikTok Profile + Posts Scraper β profile info + a creator's most recent posts in one call
- TikTok Post Detail Scraper β full per-video metadata (download URLs, music, stats)
- TikTok Comments Extractor β comments + nested replies for any video