TikTok Comments API — Scrape Comments on a Video
Documentation menu
FetchLayer FetchLayer API

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.

POST /comments Videos
https://api.fetchlayer.dev/tiktok/comments
OpenAPI JSON

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"
}