TikTok Top Ads Scraper avatar

TikTok Top Ads Scraper

Pricing

from $18.00 / 1,000 results

Go to Apify Store
TikTok Top Ads Scraper

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

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. You pick a country (and optionally an industry / objective / language / format / ranking mode).
  2. The actor pulls the ranked ad list from TikTok's Creative Center β€” same data the dashboard shows you in a browser.
  3. (Optional) For each ad it fetches the deeper detail view to add the landing page URL, share/comment counts, keyword list, and creative pattern.
  4. 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

FieldTypeDefaultDescription
country_codestring"US"ISO-2 country code. Required by TikTok. Examples: US, GB, ID, JP, BR, DE, FR, KR.
periodstring"7"Trending window in days. One of "7", "30", "180".
order_bystring"for_you"How to rank the ads. "for_you" (recommended), "ctr", or "reach".
industrystring(empty)Industry vertical filter. Empty for all. Example: label_14000000000 (Food & Beverage).
objectivestring(empty)Campaign objective filter. Empty for all. Example: campaign_objective_conversion.
ad_languagestring(empty)Language of the ad copy. Empty for all. Example: en, id, es, pt, ja.
ad_formatstring(empty)Creative format filter (image / video / spark). Empty for all.
limitinteger20Max ads to return. TikTok exposes ~100 per filter combination.
include_detailbooleanfalseWhen true, enriches each ad with landing page URL, engagement counts, and keyword list. Roughly doubles run time.
proxyobject(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).

FieldTypeDescription
idstringMaterial ID β€” stable identifier, use as dedup key and to look up details later
ad_titlestringAd title shown on the dashboard
brand_namestringBrand or advertiser name (sometimes blank)
industry_keystringIndustry vertical key (e.g. label_14103000000)
objective_keystringCampaign objective key (e.g. campaign_objective_conversion)
ctrnumberClick-through performance index
costnumberCost performance index
likenumberLike count
favoritebooleanMarked-as-favorite flag
is_searchbooleanWhether this is a Search ad placement
video_infoobjectCreative video metadata β€” vid, cover, video_url, duration, width, height
landing_pagestring(detail-only) Destination URL the ad sends users to
commentnumber(detail-only) Comment count
sharenumber(detail-only) Share count
keyword_listarray(detail-only) Keywords TikTok associated with the ad
objectivesarray(detail-only) Full objective metadata
pattern_labelstring(detail-only) Creative pattern classification
country_codestring(detail-only) Country the ad data is sampled from
sourcestring(detail-only) Distribution source key
voice_overobject(detail-only) Voice-over metadata
_rankintegerRank position in the returned list (1 = top)
_inputobjectThe input parameters used for this run
_sourcestring"S1-cc-api"
_scrapedAtstringUTC 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_you to get the blended-quality ranking TikTok shows by default.
  • Use industry + country_code as your primary slice β€” TikTok's quality signals are most reliable inside a single category/region pair.
  • include_detail: true is 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_count caps around 100–110 per filter combination β€” TikTok only ranks the top of the funnel. To get more ads, fan out across country_code Γ— industry Γ— objective and dedupe by id downstream.
  • 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.
  • cost and ctr are 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_you blends 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:

PresetIndustryObjective
shop_general(any)campaign_objective_conversion
shop_beautylabel_14103000000(any)
shop_apparellabel_22000000000(any)
shop_food_beveragelabel_27101000000(any)
shop_home_gardenlabel_18105000000(any)
shop_travellabel_17106000000(any)
shop_electronicslabel_23125000000(any)

Important caveats (verified 2026-06-03):

  1. The CC top_ads endpoint caps results at ~20 items per filter combo. TikTok's API advertises total_count: 363 in 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 for limit: 50 you may get fewer rows than that.
  2. TikTok silently ignores the server-side industry_key / objective_key filter 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 see inspected N, kept M in the run logs.
  3. Parent industry labels like label_14000000000 are not in the index (only sub-labels like label_14103000000 are). The presets use confirmed sub-labels. Use the raw industry field with any label_* value you observe in this actor's own output to target other sub-verticals.
  4. 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 the objective input 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