TikTok Video Comments
Give one TikTok content ID and an expected comment count to receive public comments, authors, engagement, and publish times
Overview
Public comments on a TikTok video show how viewers react in their own words, which remarks attract replies, and whether the creator likes or pins a comment. This Data App turns the public comment area of one video into a consistent dataset with comment text, author details, reply relationships, engagement snapshots, and timestamps.
The result is suited to repeatable analysis rather than manual scrolling. It keeps the original comment wording and connects each comment to its video, author, parent comment, and root comment, making it easier to compare reactions, identify recurring themes, and inspect conversations around a video.
Data notes
The data covers comments that are publicly visible on the supplied TikTok video at collection time. Each normal record is identified by its Comment ID, which is used to remove duplicates. Private, deleted, and closed-comment videos are outside the coverage.
Like count, Reply count, Liked by author, and Pinned by author are snapshots and may change after collection. Count values, classification values such as Comment type, and mention fields are retained as source text rather than converted into numbers or lists. Published at and Collected at preserve the source timestamps without inferring a timezone. Keyword, Business ID, Content ID, and Source item may repeat the submitted content ID when that is what the source record carries. Image URLs is empty when the comment has no image. Parent comment ID is usually 0 for a top-level comment. No data retains the collection outcome when a video has no public comment result.
What the results look like
Each normal record represents one publicly visible comment from the selected TikTok video.
| Comment ID | Comment text | Author name | Published at | Like count | Reply count |
|---|---|---|---|---|---|
| 7676928910512587528 | 🔥🔥🔥 | LOR3NZO 🥵 | 2026-08-23T02:45:14 | 1 | 0 |
| 7676937550266663696 | Hi | F00tba11EDITS | 2026-08-23T03:18:57 | 0 | 0 |
Additional values include avatar and author identifiers, reply relationships, creator interaction flags, collection timestamps, mention text, and the no-data outcome.
Use cases
- Compare Comment text with Like count and Reply count to identify remarks that generated stronger visible engagement.
- Group Comment text by recurring phrases, then use Published at to see how the discussion changed over time.
- Reconstruct reply threads with Parent comment ID, Root comment ID, and Comment type to distinguish top-level remarks from follow-up replies.
- Review Liked by author and Pinned by author together with Author ID to see how the creator participated in the discussion.
Scope and boundaries
Each run collects comments from one TikTok video. The expected comment count is 1 to 10000. Results are returned in complete batches of 20, so the actual count may be rounded up. Only publicly visible comments at collection time are covered.
- Good for
- When you need public comment text and engagement details from a specific TikTok video
- When you need comment authors, reply relationships, timestamps, and creator interaction signals for analysis
- Do not use for
- When you need comments from more than one video in a single run — submit a separate run for each video
- When you need private, deleted, or closed-comment data — this App covers publicly visible comments only
Failure handling
Failure and retry behavior declared by the author. We recommend including it in your system prompt when integrating.
- 1If no comments are returned, verify the content ID and confirm that the video and its comments are publicly visible
- 2Retry later after rate limiting, temporary service unavailability, or a timeout
- 3When the submission outcome is unknown, avoid immediate repeated submissions that could create duplicate tasks
- 4If authentication fails, verify the API Key configured for the execution environment
Input
Parameters required to call this App, generated from the input.schema in manifest.json.
| Field | Business name | Type | Required | Default | Enum / Constraints | Example | Description |
|---|---|---|---|---|---|---|---|
| content_id | Content ID | string | Yes | — | — | 7676927940759653650 | The numeric ID of the public TikTok video whose comments will be collected. Enter one content ID only, not a keyword or URL. |
| comment_count | Expected comment count | integer | Yes | — | 1–10000 | 20 | The expected number of comments to collect, from 1 to 10000. Results are returned and billed in complete batches of 20, so the actual count may be rounded up. |
Output
Field structure of a single record, generated from the output.schema in manifest.json.
| Field | Business name | Type | Example | Description |
|---|---|---|---|---|
| comment_id | Comment ID | string | 7676928910512587528 | The stable unique identifier of the TikTok comment |
| content_id | Content ID | string | 7676927940759653650 | The identifier of the TikTok video associated with the comment |
| cur_id | Record ID | string | 6a8fe471f5f83d2da3b7649d | The source record identifier returned with this comment |
| comment_type | Comment type | string | 1 | The source value identifying the comment type, retained as source text |
| root_comment_id | Root comment ID | string | 7676928910512587528 | The identifier of the root comment in this reply thread; top-level comments usually repeat their own Comment ID |
| parent_comment_id | Parent comment ID | string | 0 | The identifier of the parent comment for a reply; top-level comments are usually 0 |
| comment_user_id | Author ID | string | 7577435595783603221 | The public TikTok identifier of the comment author |
| comment_user_avatar_url | Author avatar | string | https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/02b166b17f1f9cd4fd5bcab5b12d3b4f~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=e18e22e5&x-expires=1787900400&x-signature=NEB%2BONXLIJ33UyKgKI6NOuyNNS0%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=useast5 | The public avatar image URL of the comment author |
| comment_user_name | Author name | string | LOR3NZO 🥵 | The public display name of the comment author |
| comment_text | Comment text | string | 🔥🔥🔥 | The text published in the TikTok comment |
| publish_time | Published at | string | 2026-08-23T02:45:14 | The source timestamp when the comment was published, kept as returned by the data source |
| image_urls | Image URLs | string | — | Image addresses attached to the comment, retained as source text; empty when the comment has no image |
| crawl_time | Collected at | string | 2026-08-27T15:17:02 | The source timestamp when the comment record was collected, kept as returned by the data source |
| like_count | Like count | string | 1 | The comment like count at collection time, retained as source text |
| keyword | Keyword | string | 7676927940759653650 | The source keyword value associated with this comment record, retained as source text |
| sec_id | Author sec ID | string | MS4wLjABAAAAPbxslh-t5xoPlxOuQY3X4ZNjqiwy2dBXmUa5HM7crjnOmIAJTTzKPm5aYI79jHTn | The public TikTok sec ID of the comment author, retained as source text |
| biz_id | Business ID | string | 7676927940759653650 | The business identifier carried by the source comment record, retained as source text |
| detailed_mentions | Detailed mentions | string | [] | Detailed mention text carried by the source record, retained as source text rather than parsed as a list |
| liked_by_author | Liked by author | boolean | true | Whether the video author liked this comment at collection time |
| mentions | Mentions | string | [] | Mention text carried by the source record, retained as source text rather than parsed as a list |
| pinned_by_author | Pinned by author | boolean | false | Whether the video author pinned this comment at collection time |
| reply_comment_total | Reply count | string | 0 | The number of replies to the comment at collection time, retained as source text |
| source_item | Source item | string | 7676927940759653650 | The submitted TikTok content ID associated with this result record |
| no_data | No data | boolean | false | Whether no public comment data was collected for the source video |
Record schema
Output is returned record by record. detail.output.idFieldHint
{
"type": "object",
"properties": {
"comment_id": {
"type": "string",
"title": "Comment ID",
"description": "The stable unique identifier of the TikTok comment",
"prefill": "7676928910512587528"
},
"content_id": {
"type": "string",
"title": "Content ID",
"description": "The identifier of the TikTok video associated with the comment",
"prefill": "7676927940759653650"
},
"cur_id": {
"type": "string",
"title": "Record ID",
"description": "The source record identifier returned with this comment",
"prefill": "6a8fe471f5f83d2da3b7649d"
},
"comment_type": {
"type": "string",
"title": "Comment type",
"description": "The source value identifying the comment type, retained as source text",
"prefill": "1"
},
"root_comment_id": {
"type": "string",
"title": "Root comment ID",
"description": "The identifier of the root comment in this reply thread; top-level comments usually repeat their own Comment ID",
"prefill": "7676928910512587528"
},
"parent_comment_id": {
"type": "string",
"title": "Parent comment ID",
"description": "The identifier of the parent comment for a reply; top-level comments are usually 0",
"prefill": "0"
},
"comment_user_id": {
"type": "string",
"title": "Author ID",
"description": "The public TikTok identifier of the comment author",
"prefill": "7577435595783603221"
},
"comment_user_avatar_url": {
"type": "string",
"title": "Author avatar",
"description": "The public avatar image URL of the comment author",
"prefill": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/02b166b17f1f9cd4fd5bcab5b12d3b4f~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=e18e22e5&x-expires=1787900400&x-signature=NEB%2BONXLIJ33UyKgKI6NOuyNNS0%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=useast5"
},
"comment_user_name": {
"type": "string",
"title": "Author name",
"description": "The public display name of the comment author",
"prefill": "LOR3NZO 🥵"
},
"comment_text": {
"type": "string",
"title": "Comment text",
"description": "The text published in the TikTok comment",
"prefill": "🔥🔥🔥"
},
"publish_time": {
"type": "string",
"title": "Published at",
"description": "The source timestamp when the comment was published, kept as returned by the data source",
"prefill": "2026-08-23T02:45:14"
},
"image_urls": {
"type": "string",
"title": "Image URLs",
"description": "Image addresses attached to the comment, retained as source text; empty when the comment has no image"
},
"crawl_time": {
"type": "string",
"title": "Collected at",
"description": "The source timestamp when the comment record was collected, kept as returned by the data source",
"prefill": "2026-08-27T15:17:02"
},
"like_count": {
"type": "string",
"title": "Like count",
"description": "The comment like count at collection time, retained as source text",
"prefill": "1"
},
"keyword": {
"type": "string",
"title": "Keyword",
"description": "The source keyword value associated with this comment record, retained as source text",
"prefill": "7676927940759653650"
},
"sec_id": {
"type": "string",
"title": "Author sec ID",
"description": "The public TikTok sec ID of the comment author, retained as source text",
"prefill": "MS4wLjABAAAAPbxslh-t5xoPlxOuQY3X4ZNjqiwy2dBXmUa5HM7crjnOmIAJTTzKPm5aYI79jHTn"
},
"biz_id": {
"type": "string",
"title": "Business ID",
"description": "The business identifier carried by the source comment record, retained as source text",
"prefill": "7676927940759653650"
},
"detailed_mentions": {
"type": "string",
"title": "Detailed mentions",
"description": "Detailed mention text carried by the source record, retained as source text rather than parsed as a list",
"prefill": "[]"
},
"liked_by_author": {
"type": "boolean",
"title": "Liked by author",
"description": "Whether the video author liked this comment at collection time",
"prefill": true
},
"mentions": {
"type": "string",
"title": "Mentions",
"description": "Mention text carried by the source record, retained as source text rather than parsed as a list",
"prefill": "[]"
},
"pinned_by_author": {
"type": "boolean",
"title": "Pinned by author",
"description": "Whether the video author pinned this comment at collection time",
"prefill": false
},
"reply_comment_total": {
"type": "string",
"title": "Reply count",
"description": "The number of replies to the comment at collection time, retained as source text",
"prefill": "0"
},
"source_item": {
"type": "string",
"title": "Source item",
"description": "The submitted TikTok content ID associated with this result record",
"prefill": "7676927940759653650"
},
"no_data": {
"type": "boolean",
"title": "No data",
"description": "Whether no public comment data was collected for the source video",
"prefill": false
}
},
"required": [],
"additionalProperties": false
}Integration
This App can be integrated via MCP, API, SDK, or file export. All channels share the same capabilities and pricing. Every request authenticates with the Authorization: Bearer header using an API key (long-lived, created in the Data Hub Console); MCP clients can also sign in with OAuth, no key required. More options such as CLI and Skill are on the way.
With the MCP (Model Context Protocol), you can call this App directly from AI clients like Claude and Cursor. Pick your client and auth mode, then copy the config below.
Client config
Replace the value after Bearer with your long-lived API key. Works in any client, CI, or headless environment.
{
"mcpServers": {
"hello_moto__tiktok-video-comments": {
"type": "http",
"url": "https://mcp-v2.octoparse.com?pin=hello_moto/tiktok-video-comments",
"headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
}
}
}Let AI set it up for you
Don't want to edit configs by hand? Copy the install prompt and paste it into any AI client. It will complete the setup its own way. (The prompt asks the AI to request your API key from you, so credentials never end up in chat history or shared configs.)
detail.access.mcp.composeHint
Pricing
Charged by the number of records successfully returned. Failed runs are not charged. Billed in units of 20 record; any partial unit is rounded up to 20 record.
Charged once per submitted run, regardless of how many records are returned.
Multiple billing events accumulate independently. See each item for details. Failed runs are not charged.
View creditsTry it now
Fill in the parameters and run. Results come from a real call.