How to get a TikTok video transcript with one API call

TikTok has no official transcript API. One call returns the spoken transcript, timestamped WebVTT, of any public video. It's $0.002 a call, the same pattern as YouTube and Instagram.
TikTok has three official APIs. Not one of them returns the words spoken in a public video.
The Research API is gated to vetted academics, the Display API only reaches a user's own account, and the on-screen caption is the text the creator typed, not the audio.
So you reverse-engineer the private endpoints and inherit a target that re-signs its requests and throws captchas whenever it feels like it.
I got tired of that. One request now returns the spoken transcript of any public TikTok, as timestamped text, with none of that to maintain.
The one call
Send the video URL, get the transcript back. Here's the call I actually run, and the real response it returns:
curl -X POST https://api.getanyapi.com/v1/run/tiktok.video_transcript \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.tiktok.com/@mrbeast/video/7651447222449556767"}'import os, requests
res = requests.post(
"https://api.getanyapi.com/v1/run/tiktok.video_transcript",
headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"},
json={"url": "https://www.tiktok.com/@mrbeast/video/7651447222449556767"},
)
print(res.json()["output"]["data"]["transcript"])const res = await fetch("https://api.getanyapi.com/v1/run/tiktok.video_transcript", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ANYAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://www.tiktok.com/@mrbeast/video/7651447222449556767" }),
});
const { output } = await res.json();
console.log(output.data.transcript);{
"output": {
"found": true,
"data": {
"language": "en",
"transcript": "WEBVTT\n\n00:00:00.000 --> 00:00:02.700\nGuess the Youtuber win $1,000, MrBeast. You are correct.\n\n00:00:06.020 --> 00:00:08.380\nI ride a skateboard. I live in..."
}
},
"provider": "AnyAPI",
"costUsd": 0.002
}The transcript comes back as timestamped WebVTT, the same caption format video players use, so you get the text and the moment each line was said.
The language field is filled when TikTok tags the audio and blank when it doesn't, so detect it yourself if your pipeline needs it. The data sits under output.data, and costUsd is the exact price of that call.
That's the whole integration. No session to keep alive, no markup to parse, no proxy pool to rotate.
When TikTok changes how its player loads captions, we fix it on our side and your call keeps working.
Why the scrapers break
The do-it-yourself path is an open-source scraper, and the most popular one is TikTok-Api at about 6,500 GitHub stars.
It works until TikTok serves a captcha instead of data. The library raises a TikTokCaptchaError, and on other runs a call that returned video yesterday comes back empty today.
The root cause is request signing. TikTok signs its private calls with rotating X-Gorgon and X-Argus headers, and when the algorithm changes the scraper goes dark until someone works out the new one.
That work has a market. Developers openly sell the current signature scheme in the project's own issue tracker.
That's the maintenance behind a free scraper: a captcha to clear, a signature to chase, and an empty response when you lose the race.
What a transcript actually unlocks
A transcript turns the audio into text, which makes the video searchable, summarizable, and reusable. The work splits two ways, and the endpoint serves both:
- If you build software: pipe the text into full-text search, a summarizer, a translation step, a RAG index for an assistant, or a moderation/brand-safety check. It's plain text, so it drops into whatever you already run.
- If you do marketing or content: one video becomes a blog post, a newsletter section, a tweet thread, subtitles, and a list of the keywords it ranks for. The hook a competitor opened with is right there in the first two lines.
One transcript feeds several formats at once. Send the text to an LLM with a prompt per format and you've got a repurposing tool: a long-form draft, a thread, a summary, and the SEO keywords, all from a single 30-second clip.

Do it across a whole account
One transcript helps with a single video. Every transcript a creator posted is a searchable archive. Chain two endpoints, tiktok.profile_videos to list a creator's uploads and tiktok.video_transcript to transcribe each one, and you have searchable text for their entire catalog:
# 1. list a creator's recent video URLs
curl -s -X POST https://api.getanyapi.com/v1/run/tiktok.profile_videos \
-H "Authorization: Bearer $ANYAPI_KEY" -H "Content-Type: application/json" \
-d '{"handle": "mrbeast"}' \
| jq -r '.output.data.videos[].url' > urls.txt
# 2. transcribe each one
while read url; do
curl -s -X POST https://api.getanyapi.com/v1/run/tiktok.video_transcript \
-H "Authorization: Bearer $ANYAPI_KEY" -H "Content-Type: application/json" \
-d "{\"url\": \"$url\"}" | jq -r '.output.data.transcript'
done < urls.txtIndex the spoken words, not just the captions, and you can search what was actually said. A marketer finds every video where a competitor mentioned a product; a developer ships the search box that makes that possible. Same data, two jobs. The transcript endpoint is one of 26 TikTok endpoints in the catalog, so the same pattern covers profiles, comments, sounds, and Shop too.

Captions are not the transcript
This trips people up, so it's worth a sentence. The on-screen caption is what the creator typed into the editor. The transcript is what the audio actually says. They're often different, and sometimes a video has one without the other. This endpoint returns the spoken audio, falling back to captions only when there's no speech track. If you need the audio, this is the field; if you need the typed overlay, that's a different call. Ask and we'll point you at it.
Try it without writing code
If you just need one transcript right now, the free tool does it in the browser. No key, no login, paste a link and copy the text. It's the fastest way for a marketer to grab a transcript, and a quick way for a developer to see the output shape before wiring up the API.
Paste a TikTok link, get the transcript.
Open the free TikTok transcript tool
Frequently asked questions
Does TikTok have a transcript API?
No. TikTok's official APIs don't expose video transcripts: the Research API is gated to vetted academics, and the Display API only reaches a user's own account. To get the spoken text of an arbitrary public video you either scrape it yourself or call a hosted endpoint like the one above.
How do I get the transcript of a TikTok video?
Two ways. For a one-off, paste the link into the free tool. For bulk or programmatic use, POST the video URL to tiktok.video_transcript and read output.data.transcript, which comes back as timestamped WebVTT.
What's the difference between TikTok captions and a transcript?
Captions are the text a creator typed on the video. The transcript is what the audio says. This endpoint returns the spoken audio, which is the version you want for search, summarization, or subtitles.
How much does a TikTok transcript cost?
$0.002 per call, billed in dollars, with no subscription. That's $2 per 1,000 transcripts.
Can I get a TikTok transcript for free?
Yes, for a one-off. The free tool does it in the browser with no key or login. For bulk or programmatic use, the endpoint is one call at $0.002.
What format does the transcript come back in?
Timestamped WebVTT, the same caption format video players use, so you get both the text and the moment each line was spoken. It sits under output.data.transcript.
Does it transcribe the audio or read the on-screen text?
The spoken audio, falling back to on-screen captions only when there's no speech track. The two are often different, and the audio is the version you want for search or summarization.
Can I transcribe a whole TikTok account?
Yes. Chain tiktok.profile_videos to list a creator's uploads, then tiktok.video_transcript on each URL. The shell loop above does it in two calls per video and builds a searchable archive of the whole catalog.
What languages does it support?
It returns the transcript in whatever language the audio is in. The language field is filled when TikTok tags the audio and blank when it doesn't, so detect the language yourself if your pipeline needs it.
How long does a transcript take?
About seven seconds per call on a cold run. There's no session to warm up and no proxy pool to rotate.
What can I build with TikTok transcripts?
Full-text search across a creator's videos, an LLM summarizer or repurposing tool, subtitles, a translation step, a RAG index for an assistant, or a brand-safety scan. It's plain text, so it drops into whatever you already run. It's also one of 26 TikTok endpoints you can chain. The same one-call transcript pattern works on YouTube and Instagram too; the video transcript API overview compares all three.
Related guides
The transcript endpoint plus 200+ other TikTok and cross-platform data sources, one key, priced in dollars. New accounts start with free credit.
Browse the data catalog