sfoln/tiktok-video-comments · Social media, Videos, Automation On request
Scrape comments from public TikTok videos and photo posts: text, date, likes, reply count, pinned flag and commenter handle, one JSON record per comment. Paste video URLs, short links or IDs. $0.30 per 1,000 comments + $0.003 per page of ~20. No login or cookies needed.
TikTok Comments Scraper gets comments from public TikTok videos and photo posts, one normalized record per comment: comment ID, text, date, likes, reply count, pinned flag, language, and the commenter's handle, nickname and IDs. The video summary also reports TikTok's total comment count. It's built for audience and sentiment research, community management, giveaway draws, product feedback mining and AI agents.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
TikTok comment tiktok-comment
$0.0003
$0.30 / 1,000
Charged once per comment delivered as a dataset record. Video summary records are never charged.
TikTok comments page tiktok-comments-query
$0.003
$3 / 1,000
Charged once per page of comments (about 20) that delivered at least one new comment. Covers the per-request upstream fee. Also charged for an empty page the upstream billed (when the budget covers it).
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~tiktok-video-comments/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Get up to 100 comments of https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630 and summarize what viewers like and dislike.
Input
Input fields
Enter TikTok video URLs. Each video produces one dataset record per comment plus one summary record per video.
Field
Type
Default
Meaning
videos *
array
required
Video URLs TikTok video or photo URLs (https://www.tiktok.com/@user/video/…), vm.tiktok.com short links, or numeric video IDs. Full URLs work best. Duplicates are removed. Accounts on the Apify free plan can process up to 10 videos per run.
maxCommentsPerVideo
integer
50
Max comments per video How many comments to return per video (1–500). Each delivered comment is one charged event, plus one page event per page of about 20. Range 1–500.
maxVideos
integer
100
Max videos Safety cap on the number of videos processed in this run. Range 1–1000.
concurrency
integer
4
Concurrency How many videos are fetched in parallel (1–8). Range 1–8.
itemTimeoutSecs
integer
600
Time limit per input (seconds) Pagination for one video stops cleanly shortly before this limit (60–3600). Raise it for very large per-input limits. Range 60–3600.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified provider object to each result record.
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The video URL or ID as provided.
recordType
string
Record type comment (one per delivered comment, charged) | video (one summary per video, never charged) e.g. "comment"
position
integer
Position 1-based position of the comment within its input
videoId
string | null
Video ID
videoUrl
string | null
Video URL URL sent upstream
totalComments
number | null
Total comments Summary records only: TikTok's reported comment count.
commentId
string | null
Comment ID
text
string | null
Text
createdAt
string | null
Created at ISO 8601 UTC
likes
number | null
Likes
repliesCount
number | null
Replies
isPinned
boolean | null
Pinned
isLikedByCreator
boolean | null
Liked by creator
language
string | null
Language
authorHandle
string | null
Author handle
authorNickname
string | null
Author nickname
authorId
string | null
Author ID
authorSecUid
string | null
Author secUid
rowsDelivered
integer
Comments delivered Summary records only.
pagesFetched
integer
Pages fetched Summary records only.
pagesCharged
integer
Pages charged Summary records only.
reachedEnd
boolean
Reached end Summary records only: the upstream reported no further pages.
stopReason
string
Stop reason Summary records only: limit | end | budget | max_pages | deadline | empty_pages | error
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"