TikTok Video Stats
Pricing
from $0.34 / 1,000 video rows
TikTok Video Stats
TikTok video stats by post URL: plays, likes, comments, shares, saves, caption, hashtags, post date, sound, and the author's public totals. One flat row per post, Clay ready. No login, no key. Bot check pages are free.
Pricing
from $0.34 / 1,000 video rows
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Features
Share
Give TikTok video or photo post URLs or post IDs. You get one flat row per post with plays, likes, comments, shares, saves, caption, hashtags, post date, sound, and the author's public follower and like totals. You pay per post read. A post TikTok reports as deleted, private, or missing is billed at the same price, because that answer is the read result. TikTok bot check pages are free.
Features
- One flat row per post, ready for Clay, a spreadsheet, or CSV.
- Plays, likes, comments, shares, saves, and reposts as TikTok shows them.
- Caption, hashtags, post date, duration, sound, region, and TikTok's topic labels.
- The author's handle, display name, verified flag, followers, total likes, and post count.
- Video posts, photo posts, and bare post IDs.
- Deleted, private, and missing posts come back as rows with TikTok's reason. Bot check pages are free rows with a note.
How the data is read
The actor opens each post's public page on tiktok.com, logged out, through the Apify proxy pool, and reads the post data the page carries. No login, no TikTok account, no key, and no other developer's actor. It reads only the post pages you give it: it does not search, list a profile's videos, or read comments.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
videos | array | TikTok video or photo post URLs (https://www.tiktok.com/@handle/video/ID) or numeric post IDs, up to 1,000 per run. Duplicates are read once. | |
max_videos | string | 100 | The most posts to read in this run, from 1 to 1,000. Default 100. Text or a number. |
max_charge_usd | string | Optional. The run stops before a charge that would pass this amount. Summary rows are always returned. |
Output
| Field | Type | What it holds |
|---|---|---|
row_type | string | One of: video, run_summary. run_summary is the one free row written when the input is refused. |
input | string | The URL or post ID you gave. |
video_id | string | TikTok's ID for the post. |
video_url | string | Link to the post on TikTok. |
post_type | string | video or photo. |
created_at | string | When the post went up, UTC. |
description | string | The caption as posted, hashtags included. |
hashtags | string | Hashtags in the caption, comma separated, without the # sign. |
duration_seconds | integer | Video length in seconds. 0 for a photo post. |
play_count | integer | Plays as TikTok shows them. TikTok rounds large counts. |
like_count | integer | Likes as TikTok shows them. |
comment_count | integer | Comments as TikTok shows them. |
share_count | integer | Shares as TikTok shows them. |
save_count | integer | Saves (favorites) as TikTok shows them. |
repost_count | integer | Reposts as TikTok shows them. |
author_username | string | The author's TikTok handle, without the @ sign. |
author_nickname | string | The author's display name. |
author_verified | boolean | true when TikTok shows the author as verified. |
author_followers | integer | The author's follower count as TikTok shows it. TikTok rounds counts above about 10,000. |
author_total_likes | integer | Likes across all the author's posts, as TikTok shows it. |
author_video_count | integer | Number of posts on the author's profile. |
music_title | string | Title of the sound used. |
music_author | string | Author of the sound. |
music_original | boolean | true when the sound is the author's own. |
is_ad | boolean | true when TikTok marks the post as an ad. |
location_created | string | The region code TikTok records for the post. |
content_labels | string | TikTok's topic labels for the post, comma separated. |
row_status | string | ok, or why this row carries no data: no_results, no_change, partial, blocked, or error. |
error_reason | string | Why the row is not ok. A refused input reads input_invalid: followed by what to fix. |
billable_events_json | string | What this row was billed as, for example {"video-row":1}. {} means free. |
scraped_at | string | When the row was written, UTC. |
Pricing
Pay per event. Summary rows and a refused input are free.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
video-row, one post read | $0.0004 | $0.00038 | $0.00036 | $0.00034 |
missing-post, one post TikTok reports as deleted, private, or missing | $0.0004 | $0.00038 | $0.00036 | $0.00034 |
apify-actor-start, once per run (one per GB of memory; the default 256 MB is one) | $0.006 | $0.006 | $0.006 | $0.006 |
Per 1,000 rows of video-row: $0.40 on the free plan, $0.34 on Gold.
Free plan cap: 1.50 USD of evaluation a month, about 3750 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd input.
Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
Usage examples
Clay. Number inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list, for example ["<TikTok URL column>"].
MCP. The Mamba Labs MCP server @mambalabsdev/mcp-tiktok-video-stats exposes this actor to Claude and other MCP clients.
Error handling
| Case | What you get |
|---|---|
| Missing or unreadable input | One free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start |
| A value that is not a TikTok post URL or ID | One free row with row_status error; the other posts are read |
| Deleted, private, or missing post | One row with row_status no_results and the reason TikTok gives, billed as missing-post |
| TikTok answers with its bot check page | One free row with row_status blocked. The page is not retried. After 3 in a row the run stops reading and the rest are free blocked rows. Run those posts again later |
| Network error | One retry on a new proxy address, then a free error row |
| The run is close to its timeout | The actor stops starting new work 90 seconds before the timeout and delivers what it has |
Limitations
- Counts are what TikTok shows a logged out visitor. TikTok rounds large counts: follower counts above about 10,000 come as 3 significant figures (2,100,000), and large play counts can be rounded the same way.
- In the build tests, TikTok answered 2 of 28 post page reads on the proxy pool with its bot check page. Those rows are free and say so. Expect a few percent of posts per run to come back
blocked. - No search, no hashtag or profile video lists, and no comment text. Give the post URLs.
- Author fields are the public profile totals shown on the post page. The actor does not read the author's profile page.
- Some region locked posts can read as missing from the proxy's exit country.
Mamba Labs actor suite
Built by Mamba Labs.