Tiktok Trending Videos Scraper
Pricing
$19.99/month + usage
Tiktok Trending Videos Scraper
TikTok Trending Videos Scraper collects data on trending TikTok videos, capturing captions, hashtags, creators, sounds, metrics, and timestamps. Perfect for tracking viral trends, analyzing content performance, researching creators, and automating structured TikTok trend data extraction
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
1
Bookmarked
30
Total users
2
Monthly active users
10 days ago
Last modified
Categories
Share
TikTok Trending Videos Scraper — Real Views, Engagement, Authors and Publish Dates
TikTok Trending Videos Scraper returns the videos TikTok is pushing right now, with real engagement numbers straight from TikTok's own web API: play count, likes, comments, shares and bookmarks, plus the real author, music, hashtags, caption and publish date. Ask for 10 videos and you get 10; ask for 250 and you get 250. You can also hand it a list of TikTok video URLs and it will scrape exactly those instead.
No TikTok account, login, cookie or API key is required — every field comes from TikTok's publicly accessible, logged-out surfaces.
How it works
- Trending discovery (default). The Actor drives a real headless Chromium to
https://www.tiktok.com/explore. TikTok's own JavaScript signs itsapi/explore/item_listrequest (msToken / X-Bogus / X-Gnarly), and the Actor re-issues that signed request from inside the page to page through the feed — around 30 realitemStructobjects per call. Those objects already contain the full stats, author, music, hashtags and video metadata, so nothing has to be re-fetched per video and nothing has to be guessed. - Video-URL mode. Put URLs in Direct Video URLs and the Actor skips discovery entirely, navigating to each video page and parsing
__UNIVERSAL_DATA_FOR_REHYDRATION__/SIGI_STATE. - Nothing is invented. If TikTok does not return a metric, the field is
null— never a fabricated0. - Safety caps. Every run is bounded by a page cap (max API calls) and a wall clock, so a run can never spin forever.
The Creative Center endpoint this Actor used to call (
ads.tiktok.com/creative_radar_api/v1/popular_trend/list) was retired by TikTok and now answersinvalid userto logged-out clients. That is why discovery was rebuilt on TikTok's consumer web app.
Input
| Input | Type | Default | What it does |
|---|---|---|---|
videoUrls | array | [] | Leave empty for trending mode. Any URL here switches the run to Video-URL mode: exactly those URLs are scraped and country / sort / period / max items are ignored. |
countryCode | select | US | Country whose trending feed you want (24 markets). TikTok geo-targets purely by the IP of the request, so this is applied by pinning the Apify Proxy to that country (escalating to the RESIDENTIAL group when the shared group has no IPs there) and by setting the browser locale/timezone. The country TikTok actually served is written to every row's region field. |
sortBy | select | vv (Views) | Ranks the delivered videos by views (playCount), likes (diggCount), comments (commentCount) or shares (shareCount), highest first. |
period | select | 30 | Keep only videos published in the last 7 or 30 days. 30 days is the default: TikTok's anonymous Explore feed carries only a small share of videos less than a week old, so 7 combined with a large maxItems can run out of eligible videos (the run says so explicitly in its status message). |
maxItems | integer | 10 | Exact number of videos to deliver (1–1000). The Actor keeps harvesting until it can fill this. |
includeDetailedVideoData | boolean | false | false = core fields only. true = adds full caption, hashtags, author bio/avatar/verified/follower counts, music metadata, direct video file URL, video specs, isAd and engagement-rate metrics. |
proxyConfiguration | proxy | Apify Proxy enabled | Proxy for every request. Keep it on — without a proxy in the requested country, TikTok decides the region itself and countryCode cannot be honoured. |
Output
Every row is one TikTok video.
Core fields (always present)
| Field | Example |
|---|---|
type / sourceMode | "video" / "discovery" or "video-url" |
id, item_id | "7667644415371939092" |
webVideoUrl, item_url | "https://www.tiktok.com/@ayliinmarquez/video/7667644415371939092" |
title | "Nadie me aviso que pilates era un deporte extremo #pilates #fail" |
cover | TikTok CDN thumbnail URL |
duration | 7 (seconds) |
createTime, createTimeISO | 1785262595, "2026-07-28T18:16:35.000Z" |
authorUniqueId, authorNickname | "ayliinmarquez", "Aylin Marquez" |
views, likes, comments, shares, bookmarks | 13500000, 929600, 9760, 530200, 43700 |
country_code, region, period | requested country, region TikTok actually served, period in days |
scrapedAt | ISO timestamp of the scrape |
Detailed fields (when includeDetailedVideoData is on)
desc, hashtags[], authorId, authorVerified, authorFollowers, authorFollowing, authorHearts, authorVideoCount, authorAvatar, authorBio, authorUrl, musicId, musicTitle, musicAuthor, musicPlayUrl, musicDuration, musicOriginal, videoUrl (direct file), videoWidth, videoHeight, videoRatio, videoDefinition, videoFormat, videoBitrate, originCover, dynamicCover, textLanguage, isAd, totalEngagement, engagementRate.
Sample row (real output)
{"type": "video","sourceMode": "discovery","id": "7667644415371939092","item_id": "7667644415371939092","webVideoUrl": "https://www.tiktok.com/@ayliinmarquez/video/7667644415371939092","title": "Nadie me aviso que pilates era un deporte extremo #caidasgraciosas #pilates #fail","duration": 7,"createTimeISO": "2026-07-28T18:16:35.000Z","authorUniqueId": "ayliinmarquez","authorNickname": "Aylin Marquez","views": 13500000,"likes": 929600,"comments": 9760,"shares": 530200,"bookmarks": 43700,"hashtags": ["caidasgraciosas", "pilates", "fail"],"engagementRate": 11.2093,"country_code": "US","region": "US","period": "7","scrapedAt": "2026-08-04T08:02:49.000Z"}
Tips
- Big result counts:
period: "30"withmaxItems: 250typically completes in under a minute.period: "7"is far more selective — TikTok's anonymous Explore feed only carries a small share of videos that new — so expect longer runs and, at very highmaxItems, a shortfall that the run's status message and log state explicitly. - Geo-targeting: if the log warns that TikTok served a different
regionthan thecountryCodeyou asked for, your Apify plan has no proxy IPs in that country. The rows are still real trending videos — just for the region TikTok saw. - Run status is honest: a run that scrapes nothing is marked FAILED with the reason in the status message; a run that delivers fewer videos than requested succeeds but says so in the status message.
FAQ
Do I need a TikTok login? No.
Are the numbers real? Yes — views/likes/comments/shares/bookmarks are TikTok's own playCount/diggCount/commentCount/shareCount/collectCount values. Anything TikTok does not return is null.
Why did I get fewer videos than maxItems? TikTok's anonymous Explore inventory is capped per exit IP. The Actor rotates sessions and exit IPs to pull more, but there is a real ceiling — widen period to 30 days, or lower maxItems.
Can I scrape specific videos? Yes — put them in videoUrls. Private, removed or invalid URLs are skipped with a warning rather than producing an empty or fake row.