Tiktok Comments (Include Replies) Scraper avatar

Tiktok Comments (Include Replies) Scraper

Pricing

from $0.00025 / result

Go to Apify Store
Tiktok Comments (Include Replies) Scraper

Tiktok Comments (Include Replies) Scraper

Fetch TikTok comments include nested replies for sentiment analysis, research, and monitoring with parallel processing. No browser, no login, no proxy - just fast and efficient data extraction.

Pricing

from $0.00025 / result

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

๐Ÿ’ฌ TikTok Comments & Replies Extractor

Extract all comments included nested replies from any TikTok video. Get comment text, author info, likes, reply counts, and timestamps. Supports bulk extraction with parallel reply fetching.

โœจ Why Use This Actor?

  • ๐Ÿ”ฅ High throughput - Extracts up to ~1000 comments/min with built-in pagination
  • ๐Ÿ’ฌ Nested replies - Optionally fetch all replies nested under each comment
  • โšก Parallel processing - Replies are fetched concurrently (5 workers) for speed
  • ๐Ÿ’ฐ Cost efficient - HTTP-only
  • ๐Ÿชถ Lightweight - No browser needed
  • ๐Ÿšซ No proxy needed โ€“ Works reliably without proxies โ†’ zero proxy cost
  • โœ… No login required - Works without any TikTok account
  • ๐Ÿ”— Flexible input - Accepts video ID or full TikTok URL
  • ๐Ÿ”„ Built-in reliability - Host rotation, UA rotation, automatic retries

๐ŸŽฏ Use Cases

  • Sentiment analysis - Extract all comments to analyze audience sentiment toward a video
  • Community research - Understand what topics and questions viewers are discussing
  • Brand monitoring - Track what people say about your brand on TikTok
  • Competitor analysis - See how audiences react to competitor content
  • Content strategy - Discover what viewers want more of by reading their comments
  • NLP/AI training - Collect comment datasets for natural language processing
  • Crisis detection - Monitor comments for negative sentiment spikes

๐Ÿ“ฅ Input

ParameterTypeRequiredDefaultDescription
video_idstringYes-TikTok video ID or full video URL
max_resultsintegerNo100Maximum number of comments. Set 0 for all.
include_repliesbooleanNotrueFetch and nest replies under each comment
max_replies_per_commentintegerNo0Max replies per comment. Set 0 for all.

Example input

{
"video_id": "7602547300065430804",
"max_results": 100,
"include_replies": true,
"max_replies_per_comment": 10
}

You can also pass a full URL:

{
"video_id": "https://www.tiktok.com/@user/video/7602547300065430804"
}

๐Ÿ“ค Output

Each item in the dataset is a raw comment object directly from TikTok's comment API. All original fields (cid, text, create_time, digg_count, user, etc.) are preserved exactly as returned by TikTok โ€” no parsing or renaming.

The scraper adds two metadata fields:

FieldTypeDescription
_video_idstringThe video ID the comment belongs to
_repliesarrayNested raw reply objects. See note below.

This means you get the full, unmodified TikTok API response for each comment. Field names and structures may vary as TikTok updates their API.

โš ๏ธ Important: inconsistent fields and _replies behavior

TikTok's API omits fields entirely (rather than returning null or []) when their value would be empty or default. This affects both TikTok's own fields and the scraper-added _replies field.

_replies is absent (not null, not []) in two cases:

  1. The comment has no replies (reply_comment_total is 0)
  2. include_replies was set to false in the input

Always use safe access when reading any field:

# Python
replies = comment.get("_replies", [])
avatar = comment.get("user", {}).get("avatar_thumb", {}).get("url_list", [None])[0]
// JavaScript
const replies = comment._replies ?? [];
const avatar = comment.user?.avatar_thumb?.url_list?.[0];

Similarly, fields like image_list, label_list, reply_to_reply_id (inside replies), and others may be absent or null on some comments but present on others. Check reply_comment_total to know in advance whether a comment has replies.

Example output

{
"cid": "7612308101140939541",
"text": "mau keluar kn kartu juga tapi takut kartu Timezone pulak yg keluar ๐Ÿ˜ญ",
"aweme_id": "7612255881434090772",
"create_time": 1772378608,
"digg_count": 55349,
"status": 1,
"user": {
"uid": "7576590030333166612",
"short_id": "0",
"nickname": ".",
"signature": "",
"avatar_thumb": {
"uri": "tos-alisg-avt-0068/b7c7ee71e68bb54abdbb61345aeda731",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/b7c7ee71e68bb54abdbb61345aeda731~tplv-tiktokx-cropcenter-q:100:100:q70.webp?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=1e174475&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=FIHQ62hqVv8yJmfl09lRsmIZeL4%3D",
"https://p19-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/b7c7ee71e68bb54abdbb61345aeda731~tplv-tiktokx-cropcenter-q:100:100:q70.webp?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=8d87c0af&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=09IRWMY4GQo9sK2C1nziYjtrF6g%3D",
"https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/b7c7ee71e68bb54abdbb61345aeda731~tplv-tiktokx-cropcenter-q:100:100:q70.jpeg?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=4161485d&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=xQI6pdbqq6RQmR1ulCtJF5rlI6w%3D"
],
"width": 720,
"height": 720,
"data_size": 0,
"url_prefix": null
},
"follow_status": 0,
"aweme_count": 0,
"following_count": 0,
"follower_count": 0,
"favoriting_count": 0,
"total_favorited": 0,
"is_block": false,
"hide_search": false,
"custom_verify": "",
"unique_id": "sacaa234",
"bind_phone": "",
"special_lock": 1,
"need_recommend": 0,
"has_facebook_token": false,
"has_twitter_token": false,
"fb_expire_time": 0,
"tw_expire_time": 0,
"has_youtube_token": false,
"youtube_expire_time": 0,
"room_id": 0,
"live_verify": 0,
"authority_status": 0,
"verify_info": "",
"shield_follow_notice": 0,
"shield_digg_notice": 0,
"shield_comment_notice": 0,
"with_commerce_entry": false,
"verification_type": 0,
"enterprise_verify_reason": "",
"is_ad_fake": false,
"followers_detail": null,
"region": "ID",
"account_region": "",
"commerce_user_level": 0,
"live_agreement": 0,
"platform_sync_info": null,
"with_shop_entry": false,
"is_discipline_member": false,
"secret": 0,
"has_orders": false,
"prevent_download": false,
"show_image_bubble": false,
"geofencing": null,
"unique_id_modify_time": 1775931534,
"video_icon": {
"uri": "",
"url_list": [],
"width": 720,
"height": 720,
"url_prefix": null
},
"ins_id": "",
"google_account": "",
"youtube_channel_id": "",
"youtube_channel_title": "",
"apple_account": 0,
"is_phone_binded": false,
"accept_private_policy": false,
"twitter_id": "",
"twitter_name": "",
"user_canceled": false,
"has_email": false,
"status": 1,
"create_time": 0,
"avatar_uri": "tos-alisg-avt-0068/b7c7ee71e68bb54abdbb61345aeda731",
"follower_status": 0,
"comment_setting": 1,
"duet_setting": 0,
"user_rate": 1,
"download_setting": 0,
"download_prompt_ts": 0,
"react_setting": 0,
"live_commerce": false,
"cover_url": [],
"language": "id",
"has_insights": false,
"item_list": null,
"user_mode": 1,
"user_period": 0,
"is_star": false,
"cv_level": "",
"type_label": null,
"ad_cover_url": null,
"comment_filter_status": 0,
"relative_users": null,
"cha_list": null,
"sec_uid": "MS4wLjABAAAAU_T55WZmX49plUgJ8PY8PTz8Mf3yI_sXEOs9_TTQp3nqDWVtgKWd42E7VPp-8Jxj",
"need_points": null,
"homepage_bottom_toast": null,
"can_set_geofencing": null,
"white_cover_url": null,
"user_tags": null,
"stitch_setting": 0,
"bold_fields": null,
"search_highlight": null,
"mutual_relation_avatars": null,
"events": null,
"predicted_age_group": "",
"advance_feature_item_order": null,
"mention_status": 1,
"special_account": {
"special_account_list": null
},
"advanced_feature_info": null,
"user_profile_guide": null,
"shield_edit_field_info": null,
"friends_status": 0,
"can_message_follow_status_list": null,
"matched_friend_available": true,
"account_labels": null,
"fake_data_info": {},
"is_mute": 0,
"reply_with_video_flag": 4,
"user_spark_info": {},
"is_mute_non_story_post": 0,
"is_mute_story": 0,
"is_mute_lives": 0,
"enabled_filter_all_comments": false
},
"reply_id": "0",
"user_digged": 0,
"reply_comment": null,
"text_extra": [],
"reply_comment_total": 20,
"reply_to_reply_id": "0",
"is_author_digged": false,
"stick_position": 0,
"user_buried": false,
"label_list": null,
"author_pin": false,
"no_show": false,
"collect_stat": 0,
"trans_btn_style": 1,
"share_info": {
"url": "https://www.tiktok.com/@h4luworld/video/7612255881434090772?_d=0&_r=1&comment_author_id=7576590030333166612&preview_pb=0&share_comment_id=7612308101140939541&share_item_id=7612255881434090772&sharer_language=en&source=h5_m&u_code=0",
"acl": {
"code": 0,
"extra": "{}"
},
"desc": ".โ€™s comment: mau keluar kn kartu juga tapi takut kartu Timezone pulak yg keluar ๐Ÿ˜ญ",
"title": "gmn mau nikah๐Ÿ˜ซ"
},
"comment_language": "id",
"image_list": null,
"comment_post_item_ids": null,
"is_comment_translatable": true,
"sort_extra_score": {
"reply_score": 0.000067,
"show_more_score": 0.013731
},
"sort_tags": "{\"top_list\":1}",
"is_high_purchase_intent": false,
"allow_download_photo": true,
"fold_status": -1,
"thread_id": 0,
"thread_has_more": false,
"_video_id": "7612255881434090772",
"_replies": [
{
"aweme_id": "7612255881434090772",
"cid": "7612362420498187015",
"collect_stat": 0,
"comment_language": "id",
"comment_post_item_ids": null,
"create_time": 1772391254,
"digg_count": 324,
"fold_status": 0,
"image_list": null,
"is_author_digged": false,
"is_comment_translatable": true,
"is_high_purchase_intent": true,
"label_list": null,
"no_show": false,
"reply_comment": null,
"reply_id": "7612308101140939541",
"reply_to_reply_id": "0",
"share_info": {
"acl": {
"code": 0,
"extra": "{}"
},
"desc": "๐Ÿ–ร—๐Ÿโ€™s comment: @ig:tiarasianipar_ kartu uno sih tkut kbawa๐Ÿ˜ญ",
"title": "gmn mau nikah๐Ÿ˜ซ",
"url": "https://www.tiktok.com/@h4luworld/video/7612255881434090772?_d=0&_r=1&comment_author_id=6763145425420551169&preview_pb=0&share_comment_id=7612362420498187015&share_item_id=7612255881434090772&sharer_language=en&source=h5_m&u_code=0"
},
"status": 1,
"stick_position": 0,
"text": "@ig:tiarasianipar_ kartu uno sih tkut kbawa๐Ÿ˜ญ",
"text_extra": [
{
"end": 18,
"group_id": 0,
"group_name": "",
"group_scene": "",
"hashtag_id": "",
"hashtag_name": "",
"product_id": 0,
"product_schema": "",
"product_title": "",
"sec_uid": "MS4wLjABAAAAgde0Zvm8YudOuGAlT8p5mOSfF47dA7kO1P19hfA7MBEcfqeywYWKevwyxLj9kLUY",
"start": 0,
"type": 0,
"user_id": "6948732515050800130"
}
],
"thread_has_more": true,
"thread_id": 1,
"trans_btn_style": 1,
"user": {
"accept_private_policy": false,
"account_labels": null,
"account_region": "",
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"apple_account": 0,
"authority_status": 0,
"avatar_thumb": {
"data_size": 0,
"height": 720,
"uri": "tos-alisg-avt-0068/6eabe89b406dda9602fecc38ee7f40e0",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/6eabe89b406dda9602fecc38ee7f40e0~tplv-tiktokx-cropcenter-q:100:100:q70.webp?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=9d7de70e&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=BnCPbmDoawOO32KAqC%2FxegqHOUA%3D",
"https://p19-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/6eabe89b406dda9602fecc38ee7f40e0~tplv-tiktokx-cropcenter-q:100:100:q70.webp?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=a4f03eb4&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=lpFNrsbpMyhFqYhbE6faGPlposs%3D",
"https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/6eabe89b406dda9602fecc38ee7f40e0~tplv-tiktokx-cropcenter-q:100:100:q70.jpeg?dr=8835&idc=useast5&ps=87d6e48a&refresh_token=d7b35ee1&s=COMMENT_LIST&sc=avatar&shcp=ff37627b&shp=30310797&t=223449c4&x-expires=1776016800&x-signature=JrjkUikbaBHtN3sK%2BTn%2FAodSBy4%3D"
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-alisg-avt-0068/6eabe89b406dda9602fecc38ee7f40e0",
"aweme_count": 0,
"bind_phone": "",
"bold_fields": null,
"can_message_follow_status_list": null,
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 1,
"commerce_user_level": 0,
"cover_url": [],
"create_time": 0,
"custom_verify": "",
"cv_level": "",
"download_prompt_ts": 0,
"download_setting": 3,
"duet_setting": 0,
"enabled_filter_all_comments": false,
"enterprise_verify_reason": "",
"events": null,
"fake_data_info": {},
"favoriting_count": 0,
"fb_expire_time": 0,
"follow_status": 0,
"follower_count": 0,
"follower_status": 0,
"followers_detail": null,
"following_count": 0,
"friends_status": 0,
"geofencing": null,
"google_account": "",
"has_email": false,
"has_facebook_token": false,
"has_insights": false,
"has_orders": false,
"has_twitter_token": false,
"has_youtube_token": false,
"hide_search": true,
"homepage_bottom_toast": null,
"ins_id": "",
"is_ad_fake": false,
"is_block": false,
"is_discipline_member": false,
"is_mute": 0,
"is_mute_lives": 0,
"is_mute_non_story_post": 0,
"is_mute_story": 0,
"is_phone_binded": false,
"is_star": false,
"item_list": null,
"language": "id",
"live_agreement": 0,
"live_commerce": false,
"live_verify": 0,
"matched_friend_available": false,
"mention_status": 1,
"mutual_relation_avatars": null,
"need_points": null,
"need_recommend": 0,
"nickname": "๐Ÿ–ร—๐Ÿ",
"platform_sync_info": null,
"predicted_age_group": "",
"prevent_download": false,
"react_setting": 0,
"region": "ID",
"relative_users": null,
"reply_with_video_flag": 4,
"room_id": 0,
"search_highlight": null,
"sec_uid": "MS4wLjABAAAAwaN65i9cIqVn9Zb24Hr0LaikgqVWu3TLaGuJvcY5KZ3-ujHpJKwwfG-CP_0W4L11",
"secret": 0,
"shield_comment_notice": 0,
"shield_digg_notice": 0,
"shield_edit_field_info": null,
"shield_follow_notice": 0,
"short_id": "0",
"show_image_bubble": false,
"signature": "Purwakarta",
"special_account": {
"special_account_list": null
},
"special_lock": 1,
"status": 1,
"stitch_setting": 0,
"total_favorited": 0,
"tw_expire_time": 0,
"twitter_id": "",
"twitter_name": "",
"type_label": null,
"uid": "6763145425420551169",
"unique_id": "kansa_1606",
"unique_id_modify_time": 1775931536,
"user_canceled": false,
"user_mode": 1,
"user_period": 0,
"user_profile_guide": null,
"user_rate": 1,
"user_spark_info": {},
"user_tags": null,
"verification_type": 0,
"verify_info": "",
"video_icon": {
"height": 720,
"uri": "",
"url_list": [],
"url_prefix": null,
"width": 720
},
"white_cover_url": null,
"with_commerce_entry": false,
"with_shop_entry": false,
"youtube_channel_id": "",
"youtube_channel_title": "",
"youtube_expire_time": 0
},
"user_buried": false,
"user_digged": 0
}
]
}

โšก Performance

MetricValue
Throughput~1000 comments/min (with replies)
RAM usage~70 MB (5000 comments)
Cost per 1,000 comments~$0.25

๐Ÿ› ๏ธ Technical Details

  • Engine: HTTP-only - no browser required
  • Docker image: apify/actor-python:3.12
  • Proxy: Not required (works without proxy)