curl --request GET \
--url https://api.scraperize.com/v1/tiktok/video/comment/replies \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/tiktok/video/comment/replies"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/tiktok/video/comment/replies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/tiktok/video/comment/replies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/tiktok/video/comment/replies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/tiktok/video/comment/replies")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/tiktok/video/comment/replies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"video": {
"id": "7683891628230315295",
"url": "https://www.tiktok.com/@natgeo/video/7683891628230315295",
"handle": "natgeo"
},
"commentId": "7684049714988352276",
"replies": [
{
"id": "7684132893522559762",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": null,
"text": "Australia is just the size of one African country 💀",
"createdAt": "2026-09-11T04:40:23.000Z",
"language": "en",
"likeCount": 57,
"author": {
"id": "7591198143678743608",
"secUid": "MS4wLjABAAAA3S83VV2xvaFVOQbLL5KnAhqnadk1Mrw_9EQNlmN4_BDhpX-sOAYk0MXr71W5NV78",
"handle": "hiluxman33",
"nickname": "jumpman",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/689db69225a6dd3bbb48daa4bb9c7589~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=06525f84&x-expires=1791295200&x-signature=GqeYVxXsMzKoU0NfVr9%2B%2B%2B4LrIw%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@hiluxman33"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=7591198143678743608&preview_pb=0&share_comment_id=7684132893522559762&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "jumpman’s comment: Australia is just the size of one African country 💀",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": null
},
{
"id": "7684544868471882503",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": "7684132893522559762",
"text": "3 times the size of algeria, the biggest African country but yeah 😭",
"createdAt": "2026-09-12T07:18:59.000Z",
"language": "en",
"likeCount": 0,
"author": {
"id": "7497884025308546054",
"secUid": "MS4wLjABAAAAkkTmTp-TPBTfkTw4sMTt8ATsBD8Pym9TM79FbS_4Lgj7IlhZFLUglgnCJrb3G7Ll",
"handle": "idfw.mello",
"nickname": "mello ",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/2bf7d319d123c5a6215a8050a82cbfd1~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=e1f4ba23&x-expires=1791295200&x-signature=RQEg9vCYC4jGZlHybwHxvta37tY%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@idfw.mello"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=7497884025308546054&preview_pb=0&share_comment_id=7684544868471882503&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "mello ’s comment: 3 times the size of algeria, the biggest African country but yeah 😭",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": {
"commentId": "7684132893522559762",
"userId": "7591198143678743608",
"handle": "hiluxman33",
"nickname": "jumpman"
}
},
{
"id": "7687196142128251664",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": "7684544868471882503",
"text": "But majority of it is completely uninhabitable",
"createdAt": "2026-09-19T10:47:33.000Z",
"language": "en",
"likeCount": 0,
"author": {
"id": "6982524138750067717",
"secUid": "MS4wLjABAAAA4eueTYNu7g2hjsu6ilsH9PZO13ZHMRxQtqA3_kPiCrftxiEilW6XnCp6wKCGc_IB",
"handle": "archangel396",
"nickname": "archangel396",
"avatarUrl": "https://p19-common-sign.tiktokcdn.com/tos-maliva-avt-0068/7329504842770120709~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=730ceae3&x-expires=1791295200&x-signature=qIJIj7%2BlSvwT%2F2btGkf99e2DGSo%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@archangel396"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=6982524138750067717&preview_pb=0&share_comment_id=7687196142128251664&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "archangel396’s comment: But majority of it is completely uninhabitable",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": {
"commentId": "7684544868471882503",
"userId": "7497884025308546054",
"handle": "idfw.mello",
"nickname": "mello "
}
}
],
"count": 15,
"total": 15,
"cursor": null,
"hasMore": false,
"fetchedAt": "2026-10-05T14:45:00.860Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "The request was invalid.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "The requested content was not found (it may not exist, be deleted, or be private).",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Comment replies
Scrapes the replies to a comment on a public TikTok video. Pass the video url and the comment’s commentId (the id from /v1/tiktok/video/comments). Each reply comes with its id, text, created date, detected language, like count, author (id, secUid, username, nickname, avatar, profile link), who it answers when it’s a reply to another reply (replyTo: user id, username, nickname, reply id), whether the creator liked it, TikTok’s labels, photo attachments, sticker (static and animated renditions), emoji tokens, share info (a deep link to the reply) and its parent / reply-to ids — about 20 per page, TikTok’s most-liked replies first, then the newest. Pass the returned cursor (with the same url and commentId) to get the next page; it is null on the last page. TikTok can repeat a reply or two at a page boundary, so de-duplicate by id when collecting a whole thread. A comment with no replies — or an id TikTok doesn’t know — returns an empty list.
curl --request GET \
--url https://api.scraperize.com/v1/tiktok/video/comment/replies \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/tiktok/video/comment/replies"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/tiktok/video/comment/replies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/tiktok/video/comment/replies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/tiktok/video/comment/replies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/tiktok/video/comment/replies")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/tiktok/video/comment/replies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"video": {
"id": "7683891628230315295",
"url": "https://www.tiktok.com/@natgeo/video/7683891628230315295",
"handle": "natgeo"
},
"commentId": "7684049714988352276",
"replies": [
{
"id": "7684132893522559762",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": null,
"text": "Australia is just the size of one African country 💀",
"createdAt": "2026-09-11T04:40:23.000Z",
"language": "en",
"likeCount": 57,
"author": {
"id": "7591198143678743608",
"secUid": "MS4wLjABAAAA3S83VV2xvaFVOQbLL5KnAhqnadk1Mrw_9EQNlmN4_BDhpX-sOAYk0MXr71W5NV78",
"handle": "hiluxman33",
"nickname": "jumpman",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/689db69225a6dd3bbb48daa4bb9c7589~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=06525f84&x-expires=1791295200&x-signature=GqeYVxXsMzKoU0NfVr9%2B%2B%2B4LrIw%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@hiluxman33"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=7591198143678743608&preview_pb=0&share_comment_id=7684132893522559762&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "jumpman’s comment: Australia is just the size of one African country 💀",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": null
},
{
"id": "7684544868471882503",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": "7684132893522559762",
"text": "3 times the size of algeria, the biggest African country but yeah 😭",
"createdAt": "2026-09-12T07:18:59.000Z",
"language": "en",
"likeCount": 0,
"author": {
"id": "7497884025308546054",
"secUid": "MS4wLjABAAAAkkTmTp-TPBTfkTw4sMTt8ATsBD8Pym9TM79FbS_4Lgj7IlhZFLUglgnCJrb3G7Ll",
"handle": "idfw.mello",
"nickname": "mello ",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/2bf7d319d123c5a6215a8050a82cbfd1~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=e1f4ba23&x-expires=1791295200&x-signature=RQEg9vCYC4jGZlHybwHxvta37tY%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@idfw.mello"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=7497884025308546054&preview_pb=0&share_comment_id=7684544868471882503&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "mello ’s comment: 3 times the size of algeria, the biggest African country but yeah 😭",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": {
"commentId": "7684132893522559762",
"userId": "7591198143678743608",
"handle": "hiluxman33",
"nickname": "jumpman"
}
},
{
"id": "7687196142128251664",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": "7684544868471882503",
"text": "But majority of it is completely uninhabitable",
"createdAt": "2026-09-19T10:47:33.000Z",
"language": "en",
"likeCount": 0,
"author": {
"id": "6982524138750067717",
"secUid": "MS4wLjABAAAA4eueTYNu7g2hjsu6ilsH9PZO13ZHMRxQtqA3_kPiCrftxiEilW6XnCp6wKCGc_IB",
"handle": "archangel396",
"nickname": "archangel396",
"avatarUrl": "https://p19-common-sign.tiktokcdn.com/tos-maliva-avt-0068/7329504842770120709~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=730ceae3&x-expires=1791295200&x-signature=qIJIj7%2BlSvwT%2F2btGkf99e2DGSo%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=my2",
"url": "https://www.tiktok.com/@archangel396"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=6982524138750067717&preview_pb=0&share_comment_id=7687196142128251664&share_item_id=7683891628230315295&sharer_language=en&source=h5_m&u_code=0",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, landscapes, and the people watching over it than ever before. Through its partnership with the National Geographic Society and as part of its Perpetual Planet Initiative, #Rolex supports expeditions exploring and protecting remarkable places around the world, a selection of which are featured in Africa Earth’s Wild Home. #PerpetualPlanet Africa Earth's Wild Home, narrated by Wunmi Mosaku, premieres Friday, October 2 at 8/7c on National Geographic. Streaming next day on @Disney+ and @hulu.",
"description": "archangel396’s comment: But majority of it is completely uninhabitable",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": {
"commentId": "7684544868471882503",
"userId": "7497884025308546054",
"handle": "idfw.mello",
"nickname": "mello "
}
}
],
"count": 15,
"total": 15,
"cursor": null,
"hasMore": false,
"fetchedAt": "2026-10-05T14:45:00.860Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "The request was invalid.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "The requested content was not found (it may not exist, be deleted, or be private).",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}cache_max_age) are free.Copy for AI assistant
Copy for AI assistant
I want to make an API call to /v1/tiktok/video/comment/replies. Here are the details:
Endpoint: GET https://api.scraperize.com/v1/tiktok/video/comment/replies
Description: Scrapes the replies to a comment on a public TikTok video. Pass the video `url` and the comment’s `commentId` (the `id` from `/v1/tiktok/video/comments`). Each reply comes with its id, text, created date, detected language, like count, author (id, secUid, username, nickname, avatar, profile link), who it answers when it’s a reply to another reply (`replyTo`: user id, username, nickname, reply id), whether the creator liked it, TikTok’s labels, photo attachments, sticker (static and animated renditions), emoji tokens, share info (a deep link to the reply) and its parent / reply-to ids — about 20 per page, TikTok’s most-liked replies first, then the newest. Pass the returned `cursor` (with the same url and commentId) to get the next page; it is null on the last page. TikTok can repeat a reply or two at a page boundary, so de-duplicate by `id` when collecting a whole thread. A comment with no replies — or an id TikTok doesn’t know — returns an empty list.
Required Headers:
- x-api-key: Your API key
Parameters:
- url (string) [required]: The URL of the TikTok video the comment is on, e.g. https://www.tiktok.com/@user/video/7683891628230315295.
- commentId (string) [required]: The comment’s id — the `id` of a comment from `/v1/tiktok/video/comments`.
- cursor (string): The `cursor` from the previous response, to get the next page. Omit for the first page.
- cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.
Example Response:
{
"data": {
"video": {
"id": "7683891628230315295",
"url": "https://www.tiktok.com/@natgeo/video/7683891628230315295",
"handle": "natgeo"
},
"commentId": "7684049714988352276",
"replies": [
{
"id": "7684132893522559762",
"videoId": "7683891628230315295",
"parentId": "7684049714988352276",
"replyToId": null,
"text": "Australia is just the size of one African country 💀",
"createdAt": "2026-09-11T04:40:23.000Z",
"language": "en",
"likeCount": 57,
"author": {
"id": "7591198143678743608",
"secUid": "MS4wLjABAAAA3S83VV2xvaFVOQbLL5KnAhqnadk1Mrw_9EQNlmN4_BDhpX-sOAYk0MXr71W5NV78",
"handle": "hiluxman33",
"nickname": "jumpman",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/689db69225a6dd3bbb48daa4bb9c7589~tplv-tiktokx-cropcenter:100:100.jpg?dr=14579&refresh_token=06525f84&x-…",
"url": "https://www.tiktok.com/@hiluxman33"
},
"isLikedByCreator": false,
"labels": [],
"images": [],
"sticker": null,
"emojis": [],
"isTranslatable": true,
"shareInfo": {
"url": "https://m.tiktok.com/v/7683891628230315295.html?_d=f6004hkm87m931&comment_author_id=7591198143678743608&preview_pb=0&share_comment_id=7684132893522559762&share_…",
"title": "Presented by @ROLEX. Welcome to Africa 🌍 Africa Earth's Wild Home takes you deep into the heart of our wildest continent, bringing you closer to its animals, l…",
"description": "jumpman’s comment: Australia is just the size of one African country 💀",
"acl": {
"code": 0,
"addToStoryCode": 0
}
},
"replyTo": null
}
],
"count": 15,
"total": 15,
"cursor": null,
"hasMore": false,
"fetchedAt": "2026-10-05T14:45:00.860Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}
Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
Authorizations
Your API key. Send it in the x-api-key header (or Authorization: Bearer <key>). Create and manage keys from your dashboard.
Query Parameters
The URL of the TikTok video the comment is on, e.g. https://www.tiktok.com/@user/video/7683891628230315295.
The comment’s id — the id of a comment from /v1/tiktok/video/comments.
^\d{8,25}$The cursor from the previous response, to get the next page. Omit for the first page.
^\d{1,10}$Optional. Return a cached result if one this age or newer exists — served for 0 credits with meta.cached=true and meta.cachedAt. Otherwise a fresh scrape runs (1 credit) and refreshes the cache. Omit to always scrape fresh.
1d, 3d, 7d, 14d, 30d