TikTok Comments API

GET   /api/v1/search?engine=tiktok_comments

The TikTok Comments API retrieves the comments on a public TikTok video or photo post, or the replies to one of its comments. The first few hundred comments come in the order TikTok ranks them, and the rest follow unranked. Each comment carries its text, like and reply counts, timestamp, language, pinned and liked-by-creator flags, the picture for image and sticker comments and the author's public profile. The video block carries the post's id, link and the comment count TikTok displays, and pagination.next_page_token is present while more comments remain. Pages can repeat comments from earlier pages; use id to tell them apart.

API Parameters

Video Identifier

  • Name
    url
    Required
    Optional
    Description

    The full URL of the TikTok video or photo post to get comments for, e.g. https://www.tiktok.com/@stoolpresidente/video/7499229683859426602. Short vm.tiktok.com, vt.tiktok.com and tiktok.com/t/ links carry no video id and are not accepted. Required unless video_id or next_page_token is provided.

  • Name
    video_id
    Required
    Optional
    Description

    The numeric id of the video or photo post, the number at the end of its URL (e.g. 7499229683859426602). It is also the id of a video returned by the TikTok Search API or the TikTok Profile Videos API. Required unless url or next_page_token is provided. Cannot be combined with url.

Replies

  • Name
    comment_id
    Required
    Optional
    Description

    The numeric id of a comment on the video, taken from comments[].id in a previous response. When set, the response lists the replies to that comment instead of the video's comments, with the comment itself in parent_comment.

Pagination

  • Name
    next_page_token
    Required
    Optional
    Description

    Parameter defines the cursor for the next page. Take the value from pagination.next_page_token in a previous response and pass it back to page forward. The token identifies the video and comment on its own, so url, video_id and comment_id may be omitted with it.

Engine

  • Name
    engine
    Required
    Required
    Description

    Parameter defines an engine that will be used to retrieve real-time data. It must be set to tiktok_comments.

API key

  • Name
    api_key
    Required
    Required
    Description

    The api_key authenticates your requests. Use it as a query parameter (https://www.searchapi.io/api/v1/search?api_key=YOUR_API_KEY) or in the Authorization header (Bearer YOUR_API_KEY).

Zero Data Retention

  • Name
    zero_retention
    Enterprise Only
    Enterprise Only
    Required
    Optional
    Description

    Set this parameter to true to disable all logging and persistent storage. No request parameters, HTML, or JSON responses are stored or logged. Suitable for high-compliance use cases. Debugging and support may be limited while enabled.

API Examples

Video Comments

Video Comments

Pass the video's URL or its video_id. Each comment's replies tells you how many replies it has, and its id is the comment_id that lists them.

GET
https://www.searchapi.io/api/v1/search?engine=tiktok_comments&url=https%3A%2F%2Fwww.tiktok.com%2F%40stoolpresidente%2Fvideo%2F7499229683859426602
Request
import requests

url = "https://www.searchapi.io/api/v1/search"
params = {
  "engine": "tiktok_comments",
  "url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602"
}

response = requests.get(url, params=params)
print(response.text)
Response
{
  "search_metadata": {
    "id": "search_aGS5c0QGuFlsz7ckXI6WHv8A",
    "status": "Success",
    "created_at": "2026-10-01T02:50:35Z",
    "request_time_taken": 1.35,
    "parsing_time_taken": 0.01,
    "total_time_taken": 1.36,
    "request_url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
    "html_url": "https://www.searchapi.io/api/v1/searches/search_aGS5c0QGuFlsz7ckXI6WHv8A.html",
    "json_url": "https://www.searchapi.io/api/v1/searches/search_aGS5c0QGuFlsz7ckXI6WHv8A"
  },
  "search_parameters": {
    "engine": "tiktok_comments",
    "url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602"
  },
  "video": {
    "id": "7499229683859426602",
    "link": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
    "comments": 327
  },
  "comments": [
    {
      "position": 1,
      "id": "7499260293689639723",
      "text": "Omg youโ€™re here in CHARLOTTE!?!?!?",
      "likes": 808,
      "replies": 1,
      "iso_date": "2025-05-01T00:00:33Z",
      "language": "en",
      "author": {
        "id": "6854964680395555845",
        "username": "veryvera88",
        "link": "https://www.tiktok.com/@veryvera88",
        "name": "veryvera88",
        "avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/ea65fdebd89920efff9ff0b556315f01~tp..."
      }
    },
    "..."
  ],
  "pagination": {
    "next_page_token": "eyJjdXJzb3IiOiI1MCIsInZpZGVvX2lkIjoiNzQ5OTIyOTY4Mzg1OTQyNjYwMiJ9"
  }
}

Comment Replies

Comment Replies

With comment_id set, comments holds the replies to that comment and parent_comment the comment itself with the number of replies TikTok lists for it. A reply to another reply names it in reply_to.

GET
https://www.searchapi.io/api/v1/search?comment_id=7499297619270894379&engine=tiktok_comments&url=https%3A%2F%2Fwww.tiktok.com%2F%40stoolpresidente%2Fvideo%2F7499229683859426602
Request
import requests

url = "https://www.searchapi.io/api/v1/search"
params = {
  "engine": "tiktok_comments",
  "url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
  "comment_id": "7499297619270894379"
}

response = requests.get(url, params=params)
print(response.text)
Response
{
  "search_metadata": {
    "id": "search_pFvxmXvkYAJVBGp5hK9OYSTd",
    "status": "Success",
    "created_at": "2026-10-01T02:50:37Z",
    "request_time_taken": 1.4,
    "parsing_time_taken": 0.01,
    "total_time_taken": 1.41,
    "request_url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
    "html_url": "https://www.searchapi.io/api/v1/searches/search_pFvxmXvkYAJVBGp5hK9OYSTd.html",
    "json_url": "https://www.searchapi.io/api/v1/searches/search_pFvxmXvkYAJVBGp5hK9OYSTd"
  },
  "search_parameters": {
    "engine": "tiktok_comments",
    "url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
    "comment_id": "7499297619270894379"
  },
  "video": {
    "id": "7499229683859426602",
    "link": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602"
  },
  "parent_comment": {
    "id": "7499297619270894379",
    "replies": 2
  },
  "comments": [
    {
      "position": 1,
      "id": "7499381500338438943",
      "text": "Bro has been consistent with the Costco pizza lol DO IT! ๐Ÿ˜‚",
      "likes": 20,
      "iso_date": "2025-05-01T07:51:38Z",
      "language": "en",
      "author": {
        "id": "6532091307882446849",
        "username": "adriankeepitlit",
        "link": "https://www.tiktok.com/@adriankeepitlit",
        "name": "AdrianKeepItLit",
        "avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/53e83b3803db95389a6bdd46e98899d6~t..."
      }
    },
    "..."
  ]
}

Paginating Comments

Paginating Comments

Pass the pagination.next_page_token from a previous response back as the next_page_token parameter to fetch the next page. The token identifies the video and comment on its own, so the other parameters may be omitted. The last page carries no token.

GET
https://www.searchapi.io/api/v1/search?engine=tiktok_comments&next_page_token=eyJjdXJzb3IiOiI1MCIsInZpZGVvX2lkIjoiNzQ5OTIyOTY4Mzg1OTQyNjYwMiJ9
Request
import requests

url = "https://www.searchapi.io/api/v1/search"
params = {
  "engine": "tiktok_comments",
  "next_page_token": "eyJjdXJzb3IiOiI1MCIsInZpZGVvX2lkIjoiNzQ5OTIyOTY4Mzg1OTQyNjYwMiJ9"
}

response = requests.get(url, params=params)
print(response.text)
Response
{
  "search_metadata": {
    "id": "search_qdKeRrXoaEwuXJnvo0Pl1Ymz",
    "status": "Success",
    "created_at": "2026-10-19T15:27:09Z",
    "request_time_taken": 2.89,
    "parsing_time_taken": 0.03,
    "total_time_taken": 2.92,
    "request_url": "https://www.tiktok.com/@_/video/7499229683859426602",
    "html_url": "https://www.searchapi.io/api/v1/searches/search_qdKeRrXoaEwuXJnvo0Pl1Ymz.html",
    "json_url": "https://www.searchapi.io/api/v1/searches/search_qdKeRrXoaEwuXJnvo0Pl1Ymz"
  },
  "search_parameters": {
    "engine": "tiktok_comments",
    "next_page_token": "eyJjdXJzb3IiOiI1MCIsInZpZGVvX2lkIjoiNzQ5OTIyOTY4Mzg1OTQyNjYwMiJ9"
  },
  "video": {
    "id": "7499229683859426602",
    "link": "https://www.tiktok.com/@_/video/7499229683859426602",
    "comments": 324
  },
  "comments": [
    {
      "position": 1,
      "id": "7499473393169154862",
      "text": "Sals is the ๐Ÿ",
      "likes": 1,
      "replies": 0,
      "iso_date": "2025-05-01T13:47:35Z",
      "language": "en",
      "author": {
        "id": "6752674370026390533",
        "username": "jordanjackson201",
        "link": "https://www.tiktok.com/@jordanjackson201",
        "name": "Jordan Jackson",
        "avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/da88881640f99a17db0bccdc97d97859~tp..."
      }
    },
    "..."
  ],
  "pagination": {
    "next_page_token": "eyJjdXJzb3IiOiIxMDAiLCJ2aWRlb19pZCI6Ijc0OTkyMjk2ODM4NTk0MjY2MDIifQ=="
  }
}