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.
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
{
"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
{
"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
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.
{
"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_foundand 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:
langis 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.