TikTok Video Scraper
Pricing
from $3.00 / 1,000 video scrapeds
TikTok Video Scraper
Scrape a public TikTok creator's recent videos by handle or profile URL, with no login. Every row carries the description, create_time, duration_sec, play_count, digg_count, comment_count, share_count and cover_url, plus an optional playable download_url. Export JSON, CSV or Excel.
Pricing
from $3.00 / 1,000 video scrapeds
Rating
0.0
(0)
Developer
herus13
Maintained by CommunityActor stats
0
Bookmarked
94
Total users
47
Monthly active users
3 days ago
Last modified
Categories
Share
TikTok Video Scraper extracts a public TikTok creator's recent videos by handle or profile URL, with no login and no account. One row per video: caption, timestamp, view, like, comment and share counts, duration and cover image — plus an optional playable download link.
中文说明
TikTok 创作者视频数据抓取工具,输入用户名、@用户名或主页链接,即可获取该账号的近期作品,无需登录、无需账号。
每条数据包含视频文案 description、发布时间 create_time、时长 duration_sec、播放量 play_count、点赞数 digg_count、评论数 comment_count、分享数 share_count 与封面图 cover_url。开启 download_videos 还会保存视频文件并返回可直接播放的 download_url。
运行自带住宅代理,无需自行配置代理。在 Apify Console 填好输入点击 Start 即可运行,也可以通过 Apify API 提交同样的 JSON。结果支持导出为 JSON、CSV 或 Excel。
What you get
One dataset row per video. Export as JSON, CSV or Excel.
{"unique_id": "duolingo","video_id": "7514320905909194030","description": "Rook-ies welcome! Chess lessons are here on iOS! #duolingo","create_time": 1749564234,"play_count": 2600000,"digg_count": 127700,"comment_count": 7403,"share_count": 7786,"duration_sec": 21,"cover_url": "https://p16-common-sign.tiktokcdn-us.com/...","_meta": {"author": "https://apify.com/herus13", "status": "ok", "message": null}}
_meta is run metadata, not scraped data. A target that fails appears as a row with only _meta (status failed, the reason in message); those rows are never charged.
Every row is stamped with the parent creator's unique_id and sec_uid, so rows from many handles join cleanly in one CSV. video_url is TikTok's own signed link and works only from the address that fetched it; set download_videos to true for a download_url that plays anywhere.
What it costs
| Event | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
Video scraped (video) | $0.004 | $0.00367 | $0.00333 | $0.003 |
Video downloadable file (per 10MB) (video-file-10mb) | $0.002 | $0.002 | $0.002 | $0.002 |
Actor Start (apify-actor-start) | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
You pay per delivered video: $0.004 each, so 30 videos from one creator is about $0.12 and 1,000 videos about $4.00, residential proxy included. Saved video files are charged separately at $0.002 per 10 MB and only when download_videos is on. Handles that are not found, blocked or fail produce only a _meta row and are never charged; that row and the run log name each one.
Input
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
targets | array | yes | — | The creators whose recent videos you want, one per entry. Each entry may be a bare handle (duolingo), an @handle (@duolingo) or a full profile URL (https://www.tiktok.com/@duolingo), and each returns one row per video. At least one entry is required. |
max_videos | integer | no | 30 | How many recent videos to return for each handle. Default 30, about one feed page. Minimum 1. Only a creator's recent videos are available, not their whole history, so a wider run means more handles rather than a higher cap. |
max_profiles | integer | no | — | Most handles from targets to process, counting from the first entry. Minimum 1. Leave empty to process every entry in targets. |
download_videos | boolean | no | false | Also save each video's file and add a download_url that plays from anywhere. Default false, in which case each row carries video_url, TikTok's own signed link, which only works from the address that fetched it. Turning this on adds a charge per 10 MB of video on top of the per-video price. The saved file is kept with the run, and its lifetime follows the run's data-retention setting. |
proxyUrls | array | no | — | Leave empty: the run uses the residential proxy this actor ships with, included in the price of the run. To route the run through your own provider instead, add one gateway URL per entry, for example http://user:pass@host:port — works with any provider that issues URLs (DataImpulse, Bright Data, Oxylabs, Smartproxy, or your own). When set, these are used exactly as entered and nothing else is. |
How to run it
- Open the actor on Apify Console.
- Add one or more handles or profile URLs to TikTok handles or profile URLs.
- Set how many recent videos to pull per handle, then Run. Export JSON, CSV or Excel from the dataset.
{"targets": ["duolingo", "@ryanair", "https://www.tiktok.com/@khaby.lame"],"max_videos": 10,"max_profiles": 2,"download_videos": true}
Minimal input:
{"targets": ["duolingo"]}
Available as the MCP tool herus13--tiktok-video-scraper on mcp.apify.com and through the Apify API; send the same JSON.
Why this scraper
- No account, no cookies — hand it a list of handles and it runs; nothing to log in to and nothing to keep alive.
- A link that actually plays — turn on
download_videosand every row gets adownload_urlyou can open, embed or archive, instead of a link that only works where it was fetched. - Join-ready rows — one row per video, each carrying the parent creator's
unique_idandsec_uid, so a hundred handles land in one clean table. - Honest billing — you pay for delivered videos only. A creator with no public videos is a successful, zero-cost result; the run fails only when nothing was delivered and at least one handle failed.
Use cases
- Content benchmarking — Caption, timestamp, duration and the four engagement counts per video show which of a creator's posts actually worked, and what they had in common.
- Trend tracking — Timestamps plus engagement counts across a creator set reveal which formats and topics are gaining traction, early enough to act on.
- Archiving and repurposing — With
download_videoson, each row carries a playable file link, so a campaign's assets survive past the post. - Social analytics pipelines — Share counts are the strongest organic-reach signal TikTok exposes; pulling them alongside views and likes gives a fuller performance picture than a like count alone.
- Competitor monitoring on a schedule — Re-read the same handle set every morning and build a time series of view and like counts per video.
FAQ
Do I need a TikTok account or login? No. The actor reads the same recent-video feed a logged-out visitor sees on a creator's profile page.
How deep does it go — full history or just recent? Recent videos only, up to Max videos per handle (default 30, about one feed page). It is not a full video-history crawler, so scale comes from adding handles.
Why doesn't video_url play when I open it? It is TikTok's own signed link and only works from the address that fetched it. Set download_videos to true and use the download_url in the same row, which plays anywhere.
Am I charged for handles that do not exist or are blocked? No. They produce only a _meta row and cost nothing; you pay only for videos that come back with data.
Is a proxy included? A residential proxy is included in the price of the run. To use your own, paste gateway URLs into Your own proxy URLs. Scraping at volume? Your own DataImpulse account is cheaper per GB.
Is scraping TikTok legal? This actor collects only publicly available video data. You are responsible for complying with TikTok's terms and applicable laws. Do not collect personal data without a lawful basis.
Related actors
- TikTok Profile Scraper — public profile identity and stats: nickname, bio, avatar, follower, following, total-like and video counts.
- TikTok Shop Product Scraper — TikTok Shop products across 10 storefronts, with prices, sellers, ratings and sold counts.
- Instagram Profile Scraper — public Instagram profiles: bio, followers and recent posts.
- Google Maps Business & Contact Scraper — businesses with emails, phone numbers, reviews, images and social links.