Read the comments on a video
Top-level comments on a video in Douyin’s own ranking, each with its exact likes, reply count and the province it was posted from. Up to 2000 in one request, continuing with a cursor. comment-replies reads the replies. 1 credit per 50 comments.
/video-comments Videos https://api.fetchlayer.dev/douyin/video-comments Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
video string required A video or image post: its id (7665908051974704410), a douyin.com or iesdouyin.com link, a v.douyin.com share link, or pasted share text containing one.
limit integer optional Maximum comments returned, up to 2000, or -1 for as many as available. Comments come 50 to a page and each page is 1 credit; leaving out repeats can occasionally take one more page. (default: 50)
cursor string optional The cursor from a previous response, passed back unchanged with the same request, to continue exactly where it stopped. Treat it as opaque: a cursor from another route, video or collection, or one this service did not issue, is a 400 naming cursor.
format string optional json or markdown, lowercase; any other value is a 400. Over MCP, markdown returns the result rendered as text; the REST API accepts it and returns JSON. (default: json)
timeoutMs integer optional Time limit for the whole request, in milliseconds (1000–120000); a value outside that range is a 400. Where possible a partial answer comes back with a note; a request with nothing to return yet fails with a 503 you can retry, marked with the response header X-Timeout-Source: caller.
Response Fields
video-comments
Read the comments on a video
transport string The data source: always the platform id, "douyin".
fetchedAt string When the data was read (ISO 8601).
notes string[] Caveats you can act on, such as older videos existing beyond the list. Empty when there are none.
videoId string The video’s id.
totalComments number Douyin’s own comment total for the video.
comments object[] Top-level comments, in Douyin’s ranking. The ranking can shift slightly between calls, so a continuation may differ a little from one long read.
comments[].id string The comment’s id.
comments[].text string The comment’s text.
comments[].createdAt string When it was posted (ISO 8601); createTime is unix seconds.
comments[].likes number Likes, exact.
comments[].replyCount number How many replies it has. comment-replies reads them.
comments[].ipLocation string | null The province or country Douyin shows for the commenter (IP属地), e.g. 山东.
comments[].author object The same shape as a video’s author: uid, secUid, uniqueId, nickname, avatarUrl, followerCount (null here, never zero), verification and profileUrl.
commentCount number How many comments are in this response.
skippedRecords object[] Items Douyin listed that could not be returned whole, each as { id, reason, fieldsPresent }; id may be null. Normally empty.
pagesFetched number Pages read, 50 comments to a page, which is what the request costs: one credit per page.
hasMore boolean Whether more comments remain.
cursor string | null Pass back as cursor, with the same request, to continue exactly where this response stopped. null when there is nothing further.
Request
curl -X POST "https://api.fetchlayer.dev/douyin/video-comments" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"video":"7665908051974704410","limit":120}'Response
{
"transport": "douyin",
"fetchedAt": "2026-10-15T15:54:07.597Z",
"notes": [],
"videoId": "7665908051974704410",
"totalComments": 6899,
"comments": [
{
"id": "7666861957731435300",
"text": "奇怪的珠子能强化治疗自身…",
"createdAt": "2026-07-26T15:40:08.000Z",
"createTime": 1785080408,
"likes": 11,
"replyCount": 1,
"ipLocation": "山东",
"author": {
"uid": "3654426877240749",
"secUid": "MS4wLjABAAAAVjA_8KSzJiJtVxGi4u5W9YLL_fNAi4SxtfdymYk321853zRQdT0_UBrPcYnCyFOj",
"nickname": "²⁰²⁶"
}
}
],
"commentCount": 120,
"pagesFetched": 3,
"hasMore": true,
"cursor": "dy1.eyJy…"
}