TikTok

TikTok data via Wire — profiles, videos, comments, keyword search and transcripts as structured JSON

POSThttps://api.anakin.io/v1/wire/task

Profiles, videos, comments, keyword search and transcripts. Every TikTok action is a Wire action: call POST /v1/wire/task with the action_id and params below, then poll GET /v1/wire/jobs/{id} (or pass a webhook_url). All actions read public data — no login, no cookies, auth_mode: none.

Catalog: tiktok · Actions: 6 · Auth: none · Billing: only successful calls are charged

Actionaction_idCreditsReturns
Profiletiktok_profile21 item
User Videostiktok_user_videos210 videos per page
Video Detailstiktok_video_detail21 item
Video Commentstiktok_video_comments214 comments per page
Keyword Searchtiktok_keyword_search230 videos per page
Video Transcripttiktok_transcript21 item

Credits marked + grow with limit — the exact formula is on each action. See Pricing for what a credit costs on your plan.


Call a TikTok action

The same call works for every action on this page — swap action_id and params.

curl -X POST https://api.anakin.io/v1/wire/task \
  -H "X-API-Key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"action_id": "tiktok_profile", "params": {"username": "khaby.lame"}}'

The job result wraps the action's output: data.status is "ok" or "error", and data.data holds the fields shown under each action below. See the overview for the full envelope.


Profile

Get a public TikTok profile: username, display name, bio, verified badge, follower, following, like and video counts, and avatar.

action_id: tiktok_profile · Credits: 2 / call · Returns: 1 item

ParameterTypeDescription
action_id requiredstringSet to tiktok_profile
params.username requiredstringTikTok username (with or without @) or profile URL.

Request

{
  "action_id": "tiktok_profile",
  "params": {
    "username": "khaby.lame"
  }
}

Response — data.data of the completed job (trimmed):

{
  "username": "khaby.lame",
  "nickname": "Khabane lame",
  "user_id": "127905465618821121",
  "bio": "Se vuoi ridere sei nel posto giusto😎 If u wanna laugh u r in the right place😎",
  "verified": true,
  "followers": 163000000,
  "following": 81,
  "likes": 2700000000,
  "videos": 1358,
  "avatar_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?…",
  "profile_url": "https://www.tiktok.com/@khaby.lame"
}

User Videos

Get a TikTok user's latest videos, one full page (about 10) per call: link, caption, post date, length, plays, likes, comments, shares, saves, cover image and sound. Use cursor for older videos.

action_id: tiktok_user_videos · Credits: 2 / call · Returns: 10 videos per page

ParameterTypeDescription
action_id requiredstringSet to tiktok_user_videos
params.username requiredstringTikTok username (with or without @) or profile URL.
params.cursorstringLeave empty for the first page. For the next page, pass the next_cursor value from the previous response (next_cursor is null when there are no more).

Request

{
  "action_id": "tiktok_user_videos",
  "params": {
    "username": "khaby.lame"
  }
}

Response — data.data of the completed job (trimmed):

{
  "username": "khaby.lame",
  "videos": [
    {
      "video_id": "7694335322922044703",
      "url": "https://www.tiktok.com/@khaby.lame/video/7694335322922044703",
      "description": "Was the ball out, or was it just my imagination? 🤨#learnfromkhaby #comedy ",
      "created_at": "2026-10-08T16:31:16Z",
      "duration_s": 31,
      "plays": 5625537,
      "likes": 629335,
      "comments": 11537,
      "shares": 19522,
      "saves": 36780,
      "cover_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/osAHzWAIipBAxVMie5CIDqxK0ArEREAAEKVSfn~tplv-tiktokx-cropcenter-q:300:400:q70.heic?…",
      "music": null,
      "author_username": "khaby.lame",
      "author_nickname": "Khabane lame"
    },
    {
      "video_id": "7691740195418377502",
      "url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502",
      "description": "Just give me 5 more minutes 😭#learnfromkhaby #comedy ",
      "created_at": "2026-10-01T16:40:54Z",
      "duration_s": 35,
      "plays": 4114587,
      "likes": 372807,
      "comments": 6657,
      "shares": 22674,
      "saves": 17458,
      "cover_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/o0jRDQRMAbfFAlZX8eqGQcARBqerRfAHR7gVSU~tplv-tiktokx-cropcenter-q:300:400:q70.heic?…",
      "music": null,
      "author_username": "khaby.lame",
      "author_nickname": "Khabane lame"
    },
    "… 8 more"
  ],
  "count": 10,
  "next_cursor": "1787070894791",
  "message": null
}

Paging: the first call returns next_cursor; pass it back as cursor for the next page (null when there are no more). Each page is a new call.


Video Details

Get the details of one TikTok video: caption, post date, length, plays, likes, comments, shares, saves, cover image, sound and author.

action_id: tiktok_video_detail · Credits: 2 / call · Returns: 1 item

ParameterTypeDescription
action_id requiredstringSet to tiktok_video_detail
params.video_url requiredstringLink to the TikTok video (https://www.tiktok.com/@user/video/...).

Request

{
  "action_id": "tiktok_video_detail",
  "params": {
    "video_url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502"
  }
}

Response — data.data of the completed job (trimmed):

{
  "video_id": "7691740195418377502",
  "url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502",
  "description": "Just give me 5 more minutes 😭#learnfromkhaby #comedy ",
  "created_at": "2026-10-01T16:40:54Z",
  "duration_s": 35,
  "plays": 4114576,
  "likes": 372806,
  "comments": 6656,
  "shares": 22674,
  "saves": 17458,
  "cover_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/o0jRDQRMAbfFAlZX8eqGQcARBqerRfAHR7gVSU~tplv-tiktokx-cropcenter-q:300:400:q70.heic?…",
  "music": null,
  "author_username": "khaby.lame",
  "author_nickname": "Khabane lame"
}

Video Comments

Get the comments on a TikTok video, one full page (about 10-20) per call: text, likes, reply count, date and commenter username. Use cursor for more.

action_id: tiktok_video_comments · Credits: 2 / call · Returns: 14 comments per page

ParameterTypeDescription
action_id requiredstringSet to tiktok_video_comments
params.video_url requiredstringLink to the TikTok video.
params.cursorstringLeave empty for the first page. For the next page, pass the next_cursor value from the previous response (next_cursor is null when there are no more).

Request

{
  "action_id": "tiktok_video_comments",
  "params": {
    "video_url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502"
  }
}

Response — data.data of the completed job (trimmed):

{
  "video_url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502",
  "comments": [
    {
      "comment_id": "7691760978288132886",
      "text": "The kids is Rubix cube GOAT",
      "likes": 1540,
      "replies": 16,
      "created_at": "2026-10-01T18:01:31Z",
      "author_username": "keithlukemason"
    },
    {
      "comment_id": "7691788957193290517",
      "text": "free Palestine 😭😭😭😭😭",
      "likes": 1448,
      "replies": 40,
      "created_at": "2026-10-01T19:51:40Z",
      "author_username": "abdoulahadkhoum66"
    },
    "… 12 more"
  ],
  "count": 14,
  "next_cursor": "20",
  "message": null
}

Paging: the first call returns next_cursor; pass it back as cursor for the next page (null when there are no more). Each page is a new call.


Search TikTok videos by keyword, one full page (about 30) per call, with caption, author, post date, plays, likes, comments and shares. Use cursor for more.

action_id: tiktok_keyword_search · Credits: 2 / call · Returns: 30 videos per page

ParameterTypeDescription
action_id requiredstringSet to tiktok_keyword_search
params.query requiredstringKeyword or phrase to search for.
params.cursorstringLeave empty for the first page. For the next page, pass the next_cursor value from the previous response (next_cursor is null when there are no more).

Request

{
  "action_id": "tiktok_keyword_search",
  "params": {
    "query": "cooking"
  }
}

Response — data.data of the completed job (trimmed):

{
  "query": "cooking",
  "videos": [
    {
      "video_id": "7688873787407797534",
      "url": "https://www.tiktok.com/@406bbq/video/7688873787407797534",
      "description": "Crockpot Mongolian Beef & Noodles 🥩🍜🔥 Crockpot Series Episode 7: Mongolian Beef & Noodles This is my crockpot series, where I help you make easy recipes so g…",
      "created_at": "2026-09-23T23:17:30Z",
      "duration_s": 38,
      "plays": 8335397,
      "likes": 620232,
      "comments": 2182,
      "shares": 153895,
      "saves": 415033,
      "cover_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oQAEAgs0hXqIfC0A9CDF4EI0VtXRE4FAA6gEfN~tplv-tiktokx-cropcenter:500:800.jpeg?…",
      "music": null,
      "author_username": "406bbq",
      "author_nickname": "406bbq3"
    },
    {
      "video_id": "7694812952976739615",
      "url": "https://www.tiktok.com/@406bbq/video/7694812952976739615",
      "description": "Grilled Teriyaki Chicken 🔥🍗 Cook Like an Asian Ep 1: Grilled Teriyaki Chicken. Welcome to my series, where I teach you easy Asian recipes so good, your frien…",
      "created_at": "2026-10-09T23:24:29Z",
      "duration_s": 33,
      "plays": 248620,
      "likes": 21891,
      "comments": 86,
      "shares": 2610,
      "saves": 11355,
      "cover_url": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oIHC4DiZyEBzV4AAvlAAfni51JIvIXUiKA6LdB~tplv-tiktokx-cropcenter:500:800.jpeg?…",
      "music": null,
      "author_username": "406bbq",
      "author_nickname": "406bbq3"
    },
    "… 28 more"
  ],
  "count": 30,
  "next_cursor": "30",
  "message": null
}

Paging: the first call returns next_cursor; pass it back as cursor for the next page (null when there are no more). Each page is a new call.


Video Transcript

Get the spoken transcript of a TikTok video as plain text and timed segments. Videos without speech return has_transcript false.

action_id: tiktok_transcript · Credits: 2 / call · Returns: 1 item

ParameterTypeDescription
action_id requiredstringSet to tiktok_transcript
params.video_url requiredstringLink to the TikTok video.

Request

{
  "action_id": "tiktok_transcript",
  "params": {
    "video_url": "https://www.tiktok.com/@foodinfivemins/video/7693497065078312214"
  }
}

Response — data.data of the completed job (trimmed):

{
  "video_url": "https://www.tiktok.com/@foodinfivemins/video/7693497065078312214",
  "has_transcript": true,
  "text": "This is how you make garlic lemon chicken with green beans and sweet potato mash. It's an easy, whole food focus dinner that everyone is gonna love. To make…",
  "segments": [
    {
      "start": "00:00:00.260",
      "end": "00:00:03.020",
      "text": "This is how you make garlic lemon chicken"
    },
    {
      "start": "00:00:03.021",
      "end": "00:00:05.621",
      "text": "with green beans and sweet potato mash."
    },
    "… 14 more"
  ]
}