How do I get comments on a TikTok video?
Call GET /v1/tiktok/posts/{id}/comments. Each request returns one page of public comments with the author, text, time, like count, and reply count, plus a cursor for the next page. Pinned comments are marked. For the replies under a comment, call GET /v1/tiktok/posts/{id}/comments/{commentId}/replies.
If you start from a video URL, pass it to the fetch endpoint first. It returns the video with its id. Short links from the app are expanded for you.
Checked September 2026 · request and response run against the API · no affiliate links
curl "https://api.openhandle.dev/v1/tiktok/posts/920100000000000001/comments" \
-H "Authorization: Bearer $OPENHANDLE_API_KEY"import { OpenHandle } from '@openhandle/sdk';
const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
let page = await openhandle.tiktok.post('920100000000000001').comments.list();
while (true) {
for (const comment of page.data) console.log(comment.author?.handle, comment.text);
const next = await page.next();
if (!next) break;
page = next;
}{
"platform": "tiktok",
"resource": "comment",
"capturedAt": "2026-09-19T09:12:44Z",
"source": "live",
"data": [
{
"id": "920200000000000001",
"postId": "920100000000000001",
"text": "The loop is satisfyingly synthetic.",
"createdAt": "2026-08-09T16:30:00Z",
"isPinned": true,
"author": { "id": "920000000020", "handle": "soft_signal_tt_test" },
"metrics": { "likes": 12, "replies": 0 }
},
{
"id": "920200000000000002",
"postId": "920100000000000001",
"text": "Safe data, stable result.",
"createdAt": "2026-08-09T17:30:00Z",
"isPinned": false,
"author": { "id": "920000000020", "handle": "soft_signal_tt_test" },
"metrics": { "likes": 11, "replies": 0 }
}
],
"meta": { "cursors": { "next": "b3BhcXVlLWN1cnNvcg" } }
}Trimmed to two comments and the fields this question needs. The example video is a Test fixture with 24 comments over several pages, so you can test pagination on a free Test key.
Why the official TikTok APIs do not do this
The Research API returns comments, for approved academic and non-profit researchers only. The Display API reads only the logged-in account and has no comments endpoint for other people’s videos. For a brand, an agency, or a product that listens to what people say under a video, comments are a public data API job.
Paging, replies, and pins
- —One page per request. Pass
meta.cursors.nextback ascursor. When it isnull, you have every comment TikTok shows. Cursors are opaque and bound to this video and freshness. - —Replies are separate. A comment with
metrics.repliesabove zero has a thread. Read it with the replies endpoint. Nested replies carryparentIdandrootCommentId. - —Pinned comments come first. The creator can pin a comment. It is marked
isPinned: trueand sits at the top of the first page.isLikedByCreatormarks comments the creator hearted. - —Fresh videos. A video posted minutes ago often shows no comments for a while. An empty page is an answer, not an error.
Listen on a schedule
Read the first page of comments on each video you track every hour, store each comment id, and skip the ones you have. New comments land at the top under the pins. Store capturedAt with each row so a report can show when the comment was seen. Comments TikTok hides or the creator deletes stop appearing on the next read.
When this does not work
These answers are definitive. Store them, do not retry them.
| Situation | Status | Code |
|---|---|---|
| The video is deleted or never existed | 404 | POST_NOT_FOUND |
| The account is private | 403 | PROFILE_PRIVATE |
| The cursor came from another video or freshness | 400 | CURSOR_MISMATCH |
| The identifier is malformed | 400 | INVALID_IDENTIFIER |
{
"error": {
"code": "POST_NOT_FOUND",
"message": "This post was not found.",
"requestId": "req_01j8…",
"retryable": false
}
}A creator can turn comments off. That video answers with an empty page, which bills as an answered request. Every new workspace starts with 100 free live requests, no card needed.
Read next
More TikTok questions
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.