How to get a TikTok video transcript

2 endpoints do it: TikTok user videos → TikTok video transcript. The worked example below is 11 calls and costs $0.0220 in all; a failed call is not charged.

Open in ChatGPTOpen in Claude

You get what is said in a TikTok video as text: the whole transcript and timed segments, for one video by its link or for every video of an account.

Step 1: TikTok user videos

For a whole account, list its videos by handle, 10 a page, newest first (sort=popular for the most popular). The next step takes each item's id. For one video you already have, go straight to the next step.

curl -G "https://api.dataxapi.com/v1/tiktok/users/videos/list" \
  --data-urlencode "username=nasa" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.tiktok.users.videos.list(username="nasa")
print(result["data"]["items"])
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.tiktok.users.videos.list({ username: "nasa" });
console.log(result.data.items);
dataxapi call tiktok.users.videos.list username=nasa
Recorded response
{
  "code": "ok",
  "request_id": "a42fa228-bf2c-4880-b287-caceb8e1bd8d",
  "data": {
    "items": [
      {
        "id": "7233742999990560590",
        "url": "https://www.tiktok.com/@hannah.w.photo/video/7233742999990560590",
        "type": "video",
        "text": "Everything I wish I knew about weekend hiking before starting.",
        "lang": "en",
        "published_at": "2026-07-21T20:09:02.000Z",
        "author": {
          "id": "6149684490433647203",
          "username": "hannah.w.photo",
          "name": "Hannah Weiss",
          "avatar_url": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/2ab492d722b3543fc068~c5_100x100.jpeg",
          "followers": 2060928
        },
        "metrics": {
          "likes": 103312,
          "comments": 3021,
          "shares": 3253,
          "favorites": 7513,
          "views": 1592522
        },
        "hashtags": [],
        "mentions": [],
        "is_pinned": true
      },
      // … 9 more
    ]
  },
  "page": {
    "next_cursor": "c1.yvxWofpiS46rHbSlVZq6wOmvvAKYGTTSKnC13UaD",
    "cursor_expires_at": "2026-10-12T19:45:11.000Z",
    "has_more": true,
    "returned": 10
  },
  "warnings": [],
  "meta": {
    "capability": "tiktok.users.videos.list",
    "result_status": "complete",
    "fetched_at": "2026-10-12T18:45:11.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": {
      "title": "platform",
      "images": "capability",
      "author.verified": "capability",
      "metrics.reposts": "capability",
      "mentions.username": "capability",
      "mentions.name": "capability",
      "post_id": "platform",
      "parent_id": "platform",
      "root_id": "platform"
    },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}

From a response recorded 2026-10-12 18:45 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

TikTok user videos · $0.0020 / a call · Parameters, fields and errors on the endpoint's page →

Step 2: TikTok video transcript

Get the transcript by the video's id, or by its link as url. text is the whole transcript; segments gives it line by line, with start and end in seconds.

curl -G "https://api.dataxapi.com/v1/tiktok/videos/transcript/get" \
  --data-urlencode "id=7665840565958872333" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.tiktok.videos.transcript.get(id="7665840565958872333")
print(result["data"]["item"])
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.tiktok.videos.transcript.get({ id: "7665840565958872333" });
console.log(result.data.item);
dataxapi call tiktok.videos.transcript.get id=7665840565958872333
Recorded response
{
  "code": "ok",
  "request_id": "d769ec30-ee48-492d-a245-185caeb7e795",
  "data": {
    "item": {
      "post_id": "7735791757913201402",
      "text": "Hey everyone, today I am going through what I packed for weekend hiking. Short version: light, fits in one bag, hard to break. Let's go piece by piece.",
      "segments": [
        {
          "start": 1.14,
          "end": 2.76,
          "text": "Hey everyone, today I am going through what I packed for weekend hiking."
        },
        {
          "start": 3.06,
          "end": 4.98,
          "text": "Short version: light, fits in one bag, hard to break."
        },
        // … 35 more
      ]
    }
  },
  "warnings": [],
  "meta": {
    "capability": "tiktok.videos.transcript.get",
    "result_status": "complete",
    "fetched_at": "2026-10-12T18:47:26.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": { "lang": "capability" },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}

From a response recorded 2026-10-12 18:47 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

TikTok video transcript · $0.0020 / a call · Parameters, fields and errors on the endpoint's page →

What the example costs

one page of an account's videos, then the transcript of each of those 10 videos

EndpointCallsPriceSubtotal
TikTok user videos1$0.0020$0.0020
TikTok video transcript10$0.0020$0.0200
Total11$0.0220

Prices are the prices in force when this page was built. A failed call, and an object that does not exist, cost nothing.

In your AI (MCP)

Connect DataXAPI to your AI client once. Then say what you want; the agent finds these endpoints, checks the price and calls them on your balance.

Say: Use DataXAPI to get the transcripts of the 10 latest videos of the TikTok account @nasa, and sum up each in one sentence.
What the agent sends to the call tool
{
  "capability": "tiktok.users.videos.list",
  "username": "nasa",
  "idempotency_key": "<a new UUID>"
}

Sign in to copy the setup prompt with your keyAbout the MCP server →

With a Skill

Good to know

  • Only a video TikTok has captions for has a transcript, and many have none. Such a video is answered not_found and is not charged, so the bill above is the most this can cost. A video that does not exist is answered the same way.
  • The answer does not say which language the transcript is in: lang is not returned.
  • The account's video list gives 10 a page; a cursor works for an hour, and an empty page is charged.
  • The transcript is the words only. A summary or a translation is for your own AI to write from text.