TikTok Video Scraper - Captions, Views & Engagement
Pricing
from $1.60 / 1,000 video results
TikTok Video Scraper - Captions, Views & Engagement
Export known public TikTok video URLs to captions, author data, publication dates and engagement counts. Skip known IDs and inspect failed lookups.
Pricing
from $1.60 / 1,000 video results
Rating
0.0
(0)
Developer
Ben
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
TikTok Video Scraper: captions, views and engagement
Export metadata from known public TikTok video URLs. Get the source caption, author identity, publication date, views, likes, comment/share counts and duration as JSON, CSV or Excel. No TikTok login, API key or proxy is required.
Try one video: open the public engagement example. Free-plan result events cost $2 per 1,000 videos, plus a small Actor-start event. Repeated and excluded IDs do not produce result charges.
Start with a known video URL
{"videoUrls": ["https://www.tiktok.com/@aigeneratedbulgaria/video/7580840854445706518"], "maxVideos": 1}
Run the Actor, open Dataset → Overview, then export JSON for arrays or CSV/Excel for a table. The Output tab also links to the run summary and failed-lookups report.
This tool reads individual public video pages. It does not search TikTok, discover hashtags, paginate a creator's timeline, collect comment text, list followers or download video files. Use TikTok Profile Scraper for account biographies and follower totals.
Real video output
Selected fields from a live September 10, 2026 lookup. Public counts can change:
{"video_id": "7580840854445706518","author_username": "aigeneratedbulgaria","published_at": "2025-12-06T20:14:19+00:00","views": 883700,"likes": 36200,"comments": 276,"shares": 17700,"saves": 4685,"duration_seconds": 8}
| Fields | What you receive |
|---|---|
video_id, url | Stable ID and canonical input URL |
author_username, author_id, author_name, author_verified | Public author identity; both the video ID and username must match the request |
caption, hashtags | Source caption and tagged hashtag names; hashtag discovery is not performed |
published_at, scraped_at | Publication and observation timestamps with UTC offsets |
views, likes, comments, shares, saves | Public aggregate counts; comments is a count, not comment text |
duration_seconds, width, height, cover_url | Available video metadata; cover-image URLs may expire |
music_title | Source soundtrack title when exposed |
Optional fields may be null. Missing required engagement counts or mismatched identity produce an error, not invented metrics. Photo/slideshow posts are outside this Actor's video contract.
Batch and repeat-run controls
| Input | Default | Behavior |
|---|---|---|
videoUrls | Required | 1–100 canonical HTTPS /@username/video/ID URLs |
maxVideos | 3 | Unique, non-excluded URLs attempted, from 1 to 100 |
excludeVideoIds | [] | Up to 10,000 previously exported numeric IDs; skipped before requesting the source |
minViews | 0 | Export only videos meeting this current public view count |
Duplicate IDs are collapsed before the limit is applied. Shortened share links, profile URLs and photo URLs are rejected. Keep the actual creator handle in the URL: TikTok can return a video despite an unrelated handle in the path, and this Actor deliberately rejects that mismatch.
To monitor the same video's changing counts, repeat its URL without excluding it and compare observations by video_id and scraped_at. To collect each video only once, store the returned IDs and pass them in excludeVideoIds. No hidden cross-run state is maintained.
Costs and source failures
On the Free plan, an exported video costs $0.002. The start event is $0.00005 per allocated GB, with a minimum of one event. One exported video at 512 MB costs $0.00205 in Actor events. Existing Apify plan discounts are shown in the Pricing tab. Set a maximum run charge before starting a batch.
Filtered, excluded, duplicate and failed videos incur no result event. A run may still incur the start event even when it returns zero videos. Large URL lists require enough runtime; source availability can change and the limit is not a guaranteed result count.
The default dataset contains valid videos only. ERRORS records the URL, ID and reason for a failed lookup. SUMMARY reports attempts, exports, filtered/excluded IDs, duplicate inputs and the stop reason. Partial success retains valid output with explicit errors; if every attempted lookup fails, the run fails. A zero-result run caused entirely by exclusions or a view filter is a valid outcome.
Login pages, redirects, deleted videos and unavailable public metadata remain source failures. The Actor does not solve access challenges or accept private-session cookies.
Export an existing dataset with Python
Install apify-client and set APIFY_TOKEN and APIFY_DATASET_ID from a completed run. This exports that dataset without starting a new run:
import jsonimport osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])rows = list(client.dataset(os.environ["APIFY_DATASET_ID"]).iterate_items())with open("tiktok-videos.json", "w", encoding="utf-8") as output:json.dump(rows, output, ensure_ascii=False, indent=2)
Saved Tasks can be scheduled in Apify or called from API, Make or n8n workflows. Inspect the run's ERRORS record alongside its dataset before retrying failed inputs.
Questions before running
Does this discover popular videos? No. Supply known URLs. View counts are current observations and do not predict future popularity.
Can I retrieve comments or download media? No. This Actor exports metadata and engagement totals only.
Does a failed lookup mean the video was deleted? No. Public access may be unavailable or the URL may name the wrong creator. Inspect the recorded reason rather than inferring deletion.
Can it process a private video with a login? No. Authentication is not a supported input.