Skip to main content

Description

This endpoint allows you to fetch comments from a specific TikTok video. It supports pagination to retrieve all comments and includes nested replies for each comment.

Endpoint

POST /api/v1/get-tiktok-video-comments

Request Headers

HeaderTypeDescription
Content-TypestringMust be application/json.
AuthorizationstringYour API key (Bearer token). e.g. Bearer sk_xxx

Request Body

ParameterTypeDescriptionRequiredDefault
urlstringThe full TikTok video URL.Yes
cursornumberOptional cursor for pagination. Pass the cursor from a previous response to get the next page.No
countnumberNumber of comments to fetch per request.NoAPI default
requestSourcestringOptional. Source of the request (e.g., MAKE_DOT_COM, ZAPIER, API).NoAPI
The url must be a valid TikTok video URL, e.g., https://www.tiktok.com/@username/video/1234567890 or https://vm.tiktok.com/ZMhKxyz/

Responses

Success (200 OK)

Returns a JSON object containing an array of comments with user information, engagement metrics, and pagination details.
{
  "comments": [
    {
      "cid": "7123456789012345678",
      "text": "Great video! 🔥",
      "create_time": 1704067200,
      "digg_count": 42,
      "reply_comment_total": 3,
      "user": {
        "uid": "6987654321098765432",
        "unique_id": "commenter_username",
        "nickname": "Commenter Name",
        "avatar_thumb": {
          "url_list": ["https://...jpeg"]
        },
        "verified": false
      },
      "reply_comment": [
        {
          "cid": "7234567890123456789",
          "text": "Thanks!",
          "create_time": 1704070800,
          "digg_count": 5,
          "user": {
            "uid": "6659752019493208069",
            "unique_id": "video_author",
            "nickname": "Author Name",
            "verified": true
          }
        }
      ]
    }
    // ... more comments
  ],
  "cursor": 20,
  "hasMore": true,
  "total": 234
}
Response Headers:
  • Content-Type: application/json
  • X-RateLimit-Limit: The rate limit for the user.
  • X-RateLimit-Remaining: The remaining number of requests for the user.

Error Responses

400 Bad Request

Indicates an issue with the request parameters.
{
  "error": "'url' parameter is required and must be a non-empty string."
}
Possible error messages:
  • Invalid JSON in request body
  • 'url' parameter is required and must be a non-empty string.
  • Invalid TikTok video URL format.
  • The comments service could not process the provided URL.
  • The comments service reported an issue.

401 Unauthorized

API key is missing, invalid, or inactive.
{
  "error": "API key is invalid or missing."
}

403 Forbidden

API key does not have enough credits.
{
  "error": "Insufficient credits. Please top up your account."
}

404 Not Found

Comments could not be found for the video.
{
  "error": "Comments not found for video URL: [url]"
}

500 Internal Server Error

An unexpected error occurred on the server.
{
  "error": "An unexpected server error occurred while fetching the TikTok video comments: [specific error message]"
}
Possible error messages:
  • Service not configured. Please contact support.
  • Service authentication failed. Please contact support.
  • An unexpected server error occurred...

502 Bad Gateway

Indicates an issue with an upstream service.
{
  "error": "Received invalid data structure from comments service."
}
Possible error messages:
  • The comments service is currently unavailable.
  • Received invalid data structure from comments service.
  • Error fetching comments data from the upstream service.

503 Service Unavailable

Rate limit exceeded with an upstream service.
{
  "error": "Rate limit exceeded. Please try again later."
}

Example Request

cURL

curl -X POST \
  https://app.dumplingai.com/api/v1/get-tiktok-video-comments \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "url": "https://www.tiktok.com/@username/video/7321234567890123456" }'

Node.js (fetch)

async function getTikTokVideoComments(apiKey, url, cursor = null, count = null) {
  const endpoint = 'https://app.dumplingai.com/api/v1/get-tiktok-video-comments';
  const body = { url };
  if (cursor !== null) body.cursor = cursor;
  if (count !== null) body.count = count;

  const options = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${apiKey}`
    },
    body: JSON.stringify(body)
  };

  try {
    const response = await fetch(endpoint, options);
    const data = await response.json();
    if (!response.ok) {
      console.error(`Error: ${response.status}`, data);
      return null;
    }
    console.log(`Fetched ${data.comments.length} comments`);
    console.log(`Has more: ${data.hasMore}`);
    console.log(`Total comments: ${data.total}`);
    return data;
  } catch (error) {
    console.error('Failed to fetch TikTok video comments:', error);
    return null;
  }
}

// Example usage - fetch all comments with pagination:
async function getAllComments(apiKey, url) {
  let allComments = [];
  let cursor = null;
  let hasMore = true;

  while (hasMore) {
    const data = await getTikTokVideoComments(apiKey, url, cursor);
    if (!data) break;

    allComments = allComments.concat(data.comments);
    hasMore = data.hasMore;
    cursor = data.cursor;
  }

  console.log(`Total comments fetched: ${allComments.length}`);
  return allComments;
}

// getAllComments('YOUR_API_KEY', 'https://www.tiktok.com/@username/video/7321234567890123456');

Notes

  • Use the cursor field from the response to paginate through all comments.
  • The hasMore field indicates whether there are additional pages available.
  • Each comment includes engagement metrics (digg_count = likes on the comment).
  • The reply_comment array contains nested replies to each comment.
  • Comments are returned in reverse chronological order (newest first) by default.
  • The total field provides the approximate total number of comments available.

Credit Cost

This endpoint costs 1 credit per successful request. For more details, see our Credit Costs page.

Rate Limiting

This endpoint is subject to standard API rate limits. Check the X-RateLimit-Limit and X-RateLimit-Remaining headers in the response to monitor your usage.