Tiktok Trending Videos Scraper avatar

Tiktok Trending Videos Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Tiktok Trending Videos Scraper

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

SimpleAPI

Maintained by Community

Actor stats

1

Bookmarked

30

Total users

2

Monthly active users

10 days ago

Last modified

Share

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 its api/explore/item_list request (msToken / X-Bogus / X-Gnarly), and the Actor re-issues that signed request from inside the page to page through the feed — around 30 real itemStruct objects 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 fabricated 0.
  • 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 answers invalid user to logged-out clients. That is why discovery was rebuilt on TikTok's consumer web app.

Input

InputTypeDefaultWhat it does
videoUrlsarray[]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.
countryCodeselectUSCountry 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.
sortByselectvv (Views)Ranks the delivered videos by views (playCount), likes (diggCount), comments (commentCount) or shares (shareCount), highest first.
periodselect30Keep 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).
maxItemsinteger10Exact number of videos to deliver (1–1000). The Actor keeps harvesting until it can fill this.
includeDetailedVideoDatabooleanfalsefalse = 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.
proxyConfigurationproxyApify Proxy enabledProxy 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)

FieldExample
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"
coverTikTok CDN thumbnail URL
duration7 (seconds)
createTime, createTimeISO1785262595, "2026-07-28T18:16:35.000Z"
authorUniqueId, authorNickname"ayliinmarquez", "Aylin Marquez"
views, likes, comments, shares, bookmarks13500000, 929600, 9760, 530200, 43700
country_code, region, periodrequested country, region TikTok actually served, period in days
scrapedAtISO 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" with maxItems: 250 typically 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 high maxItems, a shortfall that the run's status message and log state explicitly.
  • Geo-targeting: if the log warns that TikTok served a different region than the countryCode you 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.