Read a video’s comments
The public comments on a TikTok video, by id or URL, each with its text, timestamp, like and reply counts, whether it is pinned, whether the video's author wrote or liked it, and the commenter's profile. Two things to know. `replies` holds only the replies TikTok shows alongside a comment, which is usually none or a handful, while `replyCount` reports how many exist in total — a response where the two differ carries a note saying so. And `totalCount` is the figure TikTok publishes for the video, which can exceed what is readable through paging. Up to 500 comments and 20 pages in one request. A video with comments turned off returns an explained empty result rather than an error. Billing: 1 credit per page read.
/comments Videos https://api.fetchlayer.dev/tiktok/comments Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
video string required A video URL or a numeric video id. Shortened share links are rejected — resolve them first.
limit integer optional Maximum comments returned, up to 500. Use -1 for the maximum. (default: 30)
pages integer optional Pages of results to read in one request, up to 20. Use -1 for the maximum. Each page read is one billable page, and the response reports how many were read as pagesFetched. (default: 1)
cursor string optional Continue from a previous response’s nextCursor. Cursors belong to the route and the query that produced them — do not carry one between routes.
format string optional json or markdown. Markdown returns a rendered summary instead of the structured record. (default: json)
timeoutMs integer optional Time limit for each individual page read, in milliseconds (max 60000). It bounds one page, not the whole request.
Response Fields
comments
Read a video’s comments
transport string The upstream source. Always "tiktok".
notes string[] Caveats you can act on — a private account, comments turned off, a list that ran out early, paging that has gone as deep as it goes. Empty when there are none. An empty result always comes with a note explaining it, never as an unexplained empty array.
pagesFetched number Pages of results read, which is what the request costs: one credit per page. resolve-url reports 0 and is not billed.
videoId string The video the comments belong to.
comments object[] The comments, in TikTok’s own order.
comments[].id string Numeric comment id.
comments[].text string The comment body.
comments[].createdAt string ISO 8601 timestamp, or null.
comments[].likeCount number Likes on the comment.
comments[].replyCount number How many replies exist in total — which can exceed what `replies` holds.
comments[].isAuthor boolean Whether the video’s author wrote it.
comments[].likedByAuthor boolean Whether the video’s author liked it.
comments[].pinned boolean Whether it is pinned to the top.
comments[].author object id, uniqueId, nickname, avatarUrl, signature, verified, privateAccount, profileUrl and secUid. Fields TikTok does not publish on a commenter are null.
comments[].replies object[] Only the replies TikTok shows alongside the comment — usually none or a handful. Read replyCount for the true total.
commentCount number How many comments are in this response.
totalCount number The total TikTok publishes for the video, which can exceed what paging can reach.
hasMore boolean Whether more comments exist beyond what was returned.
nextCursor string Pass back as cursor to continue, or null.
Request
curl -X POST "https://api.fetchlayer.dev/tiktok/comments" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"video":"7686148096895569165","limit":30}'Response
{
"transport": "tiktok",
"notes": [],
"pagesFetched": 1,
"videoId": "7686148096895569165",
"comments": [
{
"id": "7686156652273713942",
"text": "Imagine trying to nod to the beat in zero gravity and accidentally rotating the rest of yourself 😂",
"createdAt": "2026-09-16T15:33:48.000Z",
"likeCount": 5,
"replyCount": 0,
"isAuthor": false,
"likedByAuthor": false,
"pinned": false,
"author": {
"id": "6992252002843853829",
"uniqueId": "newy963",
"nickname": "newy963",
"verified": null,
"profileUrl": "https://www.tiktok.com/@newy963"
},
"replies": []
}
],
"commentCount": 30,
"totalCount": 183,
"hasMore": true,
"nextCursor": "30"
}