TikTok Creator Videos Scraper
Pricing
from $0.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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
| Field | Type | Description |
|---|---|---|
creators | array (required) | Usernames (with or without @) or full profile URLs. |
maxVideos | integer | Max videos per creator. 0 = all available. |
proxyConfiguration | object | Proxy 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:
| Field | Description |
|---|---|
id, url | Video ID and canonical URL |
text | Caption / description |
createTime, createTimeUnix | Publish time (ISO + epoch) |
durationSeconds | Video length |
cover, dynamicCover | Thumbnail images |
width, height | Resolution |
playCount | Views |
diggCount | Likes |
commentCount, shareCount, collectCount | Engagement |
hashtags | Array of hashtag titles |
music | { id, title, authorName, isOriginal } |
isPinned | Whether the video is pinned on the profile |
authorUsername, authorNickname, authorId, authorVerified | Creator 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:
- It captures the exact
item_listrequest the page issues itself (which carries TikTok's full expected parameter set). - For each subsequent page it swaps the
cursoron that template and re-signs the request with TikTok's own in-page signer (window.byted_acrawler.frontierSign, producing the requiredX-Bogus), then fetches from inside the page so the request carries the page's cookies (msToken). - It follows the server-provided
cursoruntilhasMoreis 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.