TikTok Creator Videos Scraper avatar

TikTok Creator Videos Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
TikTok Creator Videos Scraper

TikTok Creator Videos Scraper

Enter a TikTok creator username and get every public video with full metadata and engagement stats.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Enter one or more TikTok creator usernames and get every public video from each profile, with full metadata and engagement stats.


中文说明

输入一个或多个 TikTok 达人用户名,抓取每位达人的全部公开视频,含完整元数据和互动指标。

输入参数

字段类型说明
creators数组(必填)达人用户名(可带或不带 @)或主页链接,每行一个
maxVideos整数每个达人最多抓取的视频数;0 = 全部
proxyConfiguration对象代理设置,强烈建议用住宅代理(RESIDENTIAL)

输出(Output schema)

每条记录对应一个视频,主要字段:

字段说明
id / url视频 ID / 链接
text文案
createTime / createTimeUnix发布时间(ISO / 时间戳)
durationSeconds时长(秒)
cover / dynamicCover静态 / 动态封面
width / height分辨率
playCount播放量
diggCount点赞
commentCount / shareCount / collectCount评论 / 分享 / 收藏
hashtags话题标签数组
music音乐:{ id, title, authorName, isOriginal }
isPinned是否置顶
authorUsername / authorNickname / authorId / authorVerified达人信息

控制台 Output 标签会以带封面缩略图的表格呈现以上结果。

工作原理:用真实浏览器打开达人主页,先读取服务端渲染的视频数据;再调用 TikTok 自身的 item_list 接口翻页——用页面内置的签名函数 byted_acrawler.frontierSign 对每次请求重新签名(X-Bogus),跟随 cursor 翻到底,从而拿到达人全部公开视频,不依赖任何第三方 actor。

注意:只能抓取公开视频;返回数量可能略少于主页显示的总数(差额为私密/地区限制/已删除)。请务必使用住宅代理。


Input

FieldTypeDescription
creatorsarray (required)Usernames (with or without @) or full profile URLs.
maxVideosintegerMax videos per creator. 0 = all available.
proxyConfigurationobjectProxy settings. Residential proxies recommended.
{
"creators": ["mrbeast", "@khaby.lame", "https://www.tiktok.com/@zachking"],
"maxVideos": 0,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output

One dataset record per video:

FieldDescription
id, urlVideo ID and canonical URL
textCaption / description
createTime, createTimeUnixPublish time (ISO + epoch)
durationSecondsVideo length
cover, dynamicCoverThumbnail images
width, heightResolution
playCountViews
diggCountLikes
commentCount, shareCount, collectCountEngagement
hashtagsArray of hashtag titles
music{ id, title, authorName, isOriginal }
isPinnedWhether the video is pinned on the profile
authorUsername, authorNickname, authorId, authorVerifiedCreator info

Example record

{
"id": "7300000000000000000",
"url": "https://www.tiktok.com/@zachking/video/7300000000000000000",
"text": "Magic trick #magic",
"createTime": "2024-11-01T12:00:00.000Z",
"durationSeconds": 12,
"playCount": 12000000,
"diggCount": 800000,
"commentCount": 5400,
"shareCount": 22000,
"hashtags": ["magic"],
"music": { "id": "...", "title": "original sound", "authorName": "zachking", "isOriginal": true },
"isPinned": false,
"authorUsername": "zachking",
"authorVerified": true
}

How it works

The actor opens each profile in a real Chromium browser (via Crawlee's PlaywrightCrawler) and reads the server-rendered video data. To page through the creator's entire back-catalog it calls TikTok's item_list API directly:

  1. It captures the exact item_list request the page issues itself (which carries TikTok's full expected parameter set).
  2. For each subsequent page it swaps the cursor on that template and re-signs the request with TikTok's own in-page signer (window.byted_acrawler.frontierSign, producing the required X-Bogus), then fetches from inside the page so the request carries the page's cookies (msToken).
  3. It follows the server-provided cursor until hasMore is false.

This is fully self-contained — no dependency on any third-party actor — and reliably returns every public video, not just the most recent batch. Browser fingerprinting plus residential proxies keep block rates low.

Notes

  • Only public profiles/videos are accessible. The returned count may be slightly below the profile's stated total — the difference is private, region-locked, or deleted posts.
  • Always run with RESIDENTIAL proxies (the input default); datacenter IPs are blocked.
  • TikTok rotates its request-signing internals periodically. If a run ever returns zero, the signer hook in src/main.js (frontierSign) is the place to update.