TikTok Top Ads Scraper 💰 $0.9/1K Creative Center Ads API
Pricing
from $0.90 / 1,000 results
TikTok Top Ads Scraper 💰 $0.9/1K Creative Center Ads API
From $0.90/1K 💰 TikTok Creative Center Top Ads, hundreds per run: the actor reads every ranking, period, industry and objective you leave open until it hits your limit. CTR, likes, comments, shares, cost score, landing page, target countries, objective and video URLs up to 1080p. No login.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
8 hours ago
Last modified
Categories
Share
TikTok Creative Center Scraper
Export the Top Ads board and the trending hashtags from the TikTok Creative Center as clean rows. Each top ad comes with its CTR, likes, comments, shares, spend score, campaign objective, industry, target countries, landing page and video URLs. No TikTok login, no browser, $0.90 per 1,000 results.
Why use this scraper?
- The numbers TikTok shows advertisers. CTR with a benchmark tier, relative spend, likes, comments and shares for every ad on the board, in true ranking order.
- Hundreds of ads per run. TikTok shows 20 ads per board, so the actor reads board after board (other rankings, periods, industries and objectives you left open) and drops duplicates until it reaches your limit. A test run for the US saved 1,000 unique ads.
- Seven rankings. For You, CTR, 2-second play rate, 6-second play rate, conversion rate, likes and impressions.
- Industry filters. 21 top-level industries, each with its own Top Ads board, plus 267 sub-categories (for example Beauty & Personal Care > Skincare) to narrow a board down.
- Video you can download. Up to five renditions per ad (360p to 1080p), a cover image and the Creative Center link.
- Two Creative Center tools in one run setup. Switch
modetotrendsfor the trending hashtags of any market.
What it does
| Mode | Source | You get |
|---|---|---|
topAds (default) | Creative Center Top Ads board | One row per ad: performance, objective, industry, targeting countries, landing page, video URLs |
trends | Creative Center hashtag trends | One row per hashtag: rank, post count, views, popularity curve, top creators |
How much data to expect
TikTok limits what the Creative Center shows without a login, and this actor does not log in:
- Top Ads: TikTok shows at most 20 ads per board, where a board is one ranking, period, top-level industry, objective and country. With
sweepBoardson (the default), the actor keeps reading boards until it hasresultsLimitunique ads. It starts with the board you picked, then the other rankings, then the industries and objectives you left open, then the other periods. Filters you set stay fixed, and each row says which board it came from. Measured for the US with full details: 300 ads from 80 boards in about 2 minutes, 1,000 ads from 129 boards in about 6.5 minutes. WithsweepBoardsoff you get the one board you picked. - Sub-categories narrow, they do not add. TikTok serves boards per top-level industry only. A sub-category keeps the matching ads from its parent industry's board, so it often returns a handful of ads, or none.
- Trends: the top 3 hashtags per country and period. Leave
countryempty to sweep all 27 supported markets in one run.
Keyword search on Top Ads is also login-only on TikTok. The keyword input filters the ads the actor fetched; it does not search TikTok's archive.
Use cases
- Creative research: build a swipe file of the best-performing hooks in your industry and country.
- CTR benchmarking: compare your own ads against the board's click-through and play rates.
- Competitor monitoring: schedule a weekly run for your sub-category and watch which brands and formats enter the ranking.
- Content planning: pull trending hashtags per market before you brief creators.
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | topAds | topAds or trends |
country | string | US | Two-letter country code. Empty: no country filter (Top Ads) or a sweep of all 27 markets (Trends) |
industry | string | all | Top-level industry filter, used by both modes |
period | string | 30 | Top Ads ranking window in days: 7, 30 or 180 |
orderBy | string | for_you | Top Ads ranking: for_you, ctr, play_2s_rate, play_6s_rate, cvr, like, impression |
industryId | string | empty | Top Ads industry including sub-categories; overrides industry. A sub-category filters its parent industry's board |
objective | string | empty | Top Ads campaign objective (traffic, conversion, reach, app install, video views, lead generation, product sales, app promotion) |
adLanguage | string | empty | Top Ads creative language, two letters (en, es, de) |
adFormat | string | empty | spark_ads or non_spark_ads |
keyword | string | empty | Keep only fetched ads whose title or brand contains this text |
minLikes | integer | empty | Keep only fetched ads with at least this many likes |
extractDetails | boolean | true | Fetch each ad's detail record (target countries, landing page, comments, shares, objectives) |
sweepBoards | boolean | true | Top Ads: when one board holds fewer ads than resultsLimit, read more boards (other rankings, periods, industries and objectives you left open). Off: only the board you picked |
days | string | 7 | Trends window in days: 7, 30 or 120 |
isNewToTop100 | boolean | false | Trends: only hashtags that newly entered the Top 100 |
resultsLimit | integer | 100 | Maximum rows saved per run, across all boards |
proxy | object | empty | Leave empty; the actor uses its own residential proxy. Set it only to use your own proxies |
Example: top ads by CTR for one industry
{"mode": "topAds","country": "US","period": "30","orderBy": "ctr","industryId": "14000000000","extractDetails": true,"resultsLimit": 100}
14000000000 is Beauty & Personal Care. Use a sub-category id such as 14103000000 (Skincare) to keep only that part of the board. Leave industryId unset for all industries.
Example: trending hashtags in every market
{"mode": "trends","country": "","days": "7","resultsLimit": 100}
Output
Top Ads row (abridged)
{"type": "top_ad","adId": "7069234203623735297","rank": 1,"adTitle": "Shop the viral serum everyone's talking about","brandName": "medicube","ctr": 1.84,"ctrTier": "high","cost": 2,"likes": 40719,"comments": 212,"shares": 1183,"objectiveKey": "campaign_objective_conversion","industryKey": "label_14103000000","industryName": "Skincare","countryCodes": ["US"],"landingPage": "https://…","videoDuration": 27.5,"videoCover": "https://p16-….jpeg","videoUrl720p": "https://v16m-….mp4","videoUrl1080p": "https://v16m-….mp4","videoUrlBest": "https://v16m-….mp4","period": 30,"orderBy": "ctr","countryCode": "US","boardNumber": 1,"boardIndustry": "14000000000","boardObjective": null,"creativeCenterUrl": "https://ads.tiktok.com/business/creativecenter/topads/7069234203623735297/pc/en","detailFetched": true,"scrapedAt": "2026-10-10T06:00:00.000Z"}
Trends row
{"type": "hashtag_trend","hashtagId": "7659867926865903649","hashtagName": "marvelrivalss9","rank": 1,"country": "US","period": 7,"publishCount": 133653,"views": 37575559,"industryIds": ["25000000000"],"popularityCurve": [{ "timestamp": 1783382400, "value": 0 }, { "timestamp": 1783728000, "value": 100 }],"topCreators": [{ "creatorId": "0", "nickname": null, "avatarUrl": "https://p16-common-sign.tiktokcdn.com/..." }],"link": "https://ads.tiktok.com/business/creativecenter/hashtag/marvelrivalss9/pc/en?countryCode=US&period=7","scrapedAt": "2026-10-10T06:00:00.000Z"}
Key output fields
| Field | Description |
|---|---|
rank | The ad's position on the board it came from, unaffected by the keyword and minLikes filters |
boardNumber, period, orderBy, boardIndustry, boardObjective | The board the ad was read from. Board 1 is the one you picked; higher numbers come from the sweep |
ctr / ctrTier | Click-through rate in percent, and a band (low, average, high, exceptional) the actor computes from fixed thresholds |
cost | TikTok's relative spend score from 1 to 5. It is not a currency amount |
industryKey / industryName | TikTok's industry code and its readable label, sub-categories included |
objectiveKey | The campaign objective the advertiser chose |
countryCodes, landingPage, comments, shares, objectives | Filled when extractDetails is on (one extra request per ad). Some ads have no landing page. When TikTok refuses a detail record, the row keeps its list-level fields and detailFetched is false |
keywordList | Kept for compatibility. TikTok currently returns it empty on the public Creative Center |
videoUrl360p to videoUrl1080p, videoUrlBest | Every rendition TikTok returns. The links are signed and expire within 24 to 48 hours, so download soon after the run |
publishCount / views | Trends: posts using the hashtag and their total views |
popularityCurve | Trends: popularity over time as { timestamp, value }, where value is a 0 to 100 index |
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
| Actor start | $0.01 per GB of run memory, once per run |
| Result | $0.0009 per row ($0.90 per 1,000) |
100 top ads with full details cost about $0.10. Free Apify accounts can run it too, capped at 100 results per run.
How it works
The actor calls the same data endpoints the Creative Center pages use, with the verification headers those pages compute, through a residential proxy. Nothing is rendered in a browser, so a run of 20 ads with details takes about 15 seconds. When TikTok asks it to slow down, the actor waits a few seconds and retries with fresh headers instead of dropping the ad.
FAQ
How many ads can one run return?
As many as resultsLimit, up to what TikTok has for your filters. Each board holds at most 20 ads, and the actor reads more boards until it reaches the limit. A US run asking for 1,000 saved 1,000 unique ads. Narrow filters (one industry, one objective, a small country) leave fewer boards, so a run can end below the limit when every board has been read.
Why do some rows have a different period or ranking than I asked for?
They come from the sweep. Once the boards for your ranking and period are used up, the actor reads the other rankings and periods. Every row carries period, orderBy and boardNumber, so you can keep only board 1, or turn sweepBoards off.
Can I search Top Ads by keyword or advertiser?
Not on TikTok's side: that search needs a TikTok login. keyword and minLikes filter the ads the run fetched. If you need to look up what a specific brand is running, use the TikTok Ads Library Scraper, which searches TikTok's Ad Library by advertiser.
Which countries are covered? Top Ads covers the markets in the Creative Center's own country list (72 options in the input). Trends covers 27 markets.
Do the video links last? No. TikTok signs them and they expire within 24 to 48 hours. Download the files you want to keep right after the run.
Is cost the ad spend?
No. It is TikTok's relative spend score from 1 to 5.
Support
Found a bug or need a field added? Open an issue on the actor's Issues tab or write to muhamed.didovic@gmail.com.
Additional services
Need a custom export, a scheduled feed for your industries, or this data through a private API? Email muhamed.didovic@gmail.com.
Explore more scrapers
- TikTok Ads Library Scraper: search TikTok's Ad Library by keyword or advertiser, with audience targeting
- Facebook Ad Library Scraper: Meta ads with reach and transcripts
- LinkedIn Ad Library Scraper: LinkedIn ads with impressions and targeting
- TikTok Hashtag Scraper: every video under a hashtag, with stats
More at memo23's Apify profile.
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor through the Apify MCP server or the Apify API (actor: memo23/tiktok-creative-center-scraper).
Purpose: TikTok Creative Center data in two modes: topAds (best-performing ad creatives with performance metrics) and trends (trending hashtags per market).
Minimal input:
{"mode": "topAds","country": "US","period": "30","orderBy": "ctr","resultsLimit": 20}
Output: one row per item. Top Ads (type: "top_ad"): adId, rank, adTitle, brandName, ctr, ctrTier, cost, likes, comments, shares, objectiveKey, industryKey, industryName, countryCodes, landingPage, videoDuration, videoCover, videoUrl360p to videoUrl1080p, videoUrlBest, period, orderBy, countryCode, boardNumber, boardIndustry, boardObjective, creativeCenterUrl, detailFetched, scrapedAt. Trends (type: "hashtag_trend"): hashtagId, hashtagName, rank, country, period, publishCount, views, industryIds, popularityCurve, topCreators, link, scrapedAt.
Behaviors an agent should know:
modedefaults totopAds.adLibraryis not supported here; usememo23/tiktok-ads-scraper-cheeriofor the Ad Library.- Top Ads reads boards of up to 20 ads each and, with
sweepBoardson (default), keeps reading other rankings, periods, industries and objectives the caller left open until it hasresultsLimitunique ads. Rows carryboardNumber,periodandorderBy; board 1 is the requested one. A sub-categoryindustryIdonly filters its parent industry's board and can return 0. keywordandminLikesfilter fetched ads client-side; they do not search TikTok.- Trends returns the top 3 hashtags per country and period; an empty
countrysweeps 27 markets. costis a 1 to 5 score, not money, and not a ranking. Video URLs expire in 24 to 48 hours.- Billed $0.0009 per result row plus a start fee of $0.01 per GB.
⚠️ Disclaimer
This actor reads only publicly available data from the TikTok Creative Center: no login, no authenticated endpoints and no private user data. You are responsible for using the output in line with TikTok's terms and the laws that apply to you. The actor is not affiliated with or endorsed by TikTok or ByteDance.
SEO Keywords
tiktok creative center scraper, tiktok top ads scraper, tiktok creative center api, tiktok top ads api, tiktok ad spy tool, tiktok ads ctr benchmark, tiktok ad examples by industry, tiktok trending hashtags scraper, tiktok creative center export, tiktok ads swipe file, tiktok spark ads examples, tiktok ad inspiration data