TikTok Transcript Generator & Scraper: Captions, Subtitles & AI avatar

TikTok Transcript Generator & Scraper: Captions, Subtitles & AI

Pricing

from $1.20 / 1,000 transcripts

Go to Apify Store
TikTok Transcript Generator & Scraper: Captions, Subtitles & AI

TikTok Transcript Generator & Scraper: Captions, Subtitles & AI

Paste a TikTok link and get the video transcript as text with timestamps, plus SRT and VTT subtitle files. Bulk from profiles or keywords. AI transcription for videos without captions. No login. Pay only for videos with a transcript.

Pricing

from $1.20 / 1,000 transcripts

Rating

0.0

(0)

Developer

Stan Van Rooy

Stan Van Rooy

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

4

Monthly active users

8 days ago

Last modified

Share

TikTok Transcript Generator & Scraper: Captions, Subtitles & AI ๐Ÿ“

Paste a TikTok link, get the transcript. This TikTok transcript generator turns any TikTok video into clean text with timestamps, plus optional SRT and VTT subtitle files and a TXT file. Do it for one video, a creator's whole profile, or every video TikTok search returns for a keyword. No TikTok account, no login, no browser extension.

Free-plan sample: Apify Free accounts can collect up to 100 result rows total per run, across all inputs. Videos without a transcript also count toward this allowance. Upgrade your Apify plan for larger runs. Your input limits and normal Actor charges still apply. This allowance resets each run; it is not a daily or monthly quota.

๐Ÿš€ How to get the transcript of a TikTok video

  1. Paste one or more TikTok video links into Video URLs (regular links, vm.tiktok.com or vt.tiktok.com share links, or bare video IDs).
  2. Optional: tick Transcript files to also get .srt, .vtt or .txt files.
  3. Click Start. The transcript appears in the dataset within seconds, ready to copy or export as JSON, CSV or Excel.

Bulk: add Profiles (@handle or profile URL) to transcribe a creator's videos, newest first, or Keywords to transcribe the videos TikTok search returns. Mix all three in one run.

The text comes from the captions TikTok already publishes for the video (auto captions or captions the creator added), so it is fast and matches what viewers see. For videos without captions you can turn on AI transcription (see below).

๐Ÿ“Š What you get for each video

  • The full transcript as plain text
  • Timed segments: start and end time in seconds plus the text of every line
  • SRT, VTT and TXT files in the run's key-value store, when you ask for them
  • Transcript language, where the text came from (TikTok auto captions, creator captions, a TikTok translation, or AI), and every caption language TikTok has for the video
  • Video ID, URL, description, upload time and duration
  • Creator handle and display name
  • Views, likes, comments and shares
  • For videos without a transcript: has_transcript: false and the reason (photo post, music only, no captions, unavailable)

Every row also carries the input it came from (the URL, profile or keyword), so you can group transcripts by creator or topic.

๐ŸŽฌ SRT and VTT subtitles

Set Transcript files (outputFormats) to any of txt, srt and vtt. Each file is saved in the run's key-value store, and the row's transcript_files field lists the record keys. Subtitle files are built only from real timed segments (TikTok caption timings, or AI timings when the model returns them). A transcript without timings gets a TXT file only, and the row says subtitle_export_status: "no_timed_segments". Timings are never invented.

๐Ÿค– Videos without captions: AI transcription

In our tests about 4 in 5 TikTok videos had captions (9 in 10 for talking videos). For the rest you can turn on Transcribe missing captions with AI (transcribeMissingCaptions). It is off by default, so runs never cost more than you expect.

  • Add your OpenAI API key (openaiApiKey, stored as a secret input). The video's audio is sent to OpenAI, which bills your OpenAI account for it, separately from Apify. Failed or empty attempts can still use OpenAI credits.
  • On this Actor, an AI transcript costs the same as a caption transcript: the normal transcript event. Nothing extra is charged by the Actor.
  • Models: gpt-transcribe returns text without timestamps (TXT only); whisper-1 also returns timed segments, so SRT and VTT work (OpenAI has scheduled its retirement for February 26, 2027).
  • AI only runs for videos whose captions are missing. Videos with captions, photo posts, and private or deleted videos are never sent. Videos TikTok marks as music or a sound only are sent too, because many of them have a voiceover; a song with lyrics can come back as lyric text.
  • Limits you control: maxAITranscriptions (default 10 videos per run) and maxAIDurationSeconds (default 600 seconds per video). Downloads are capped at 100 MiB.
  • transcript_source shows openai/<model> for AI rows, and asr_status tells you what happened (transcribed, no_speech, failed, limit_reached, duration_limit).

AI transcription keeps the spoken language; it does not translate.

๐Ÿ“ฅ Input

FieldTypeDescription
videoUrlsarrayTikTok video links in any form (tiktok.com/@user/video/<id>, vm.tiktok.com short links, or numeric video IDs).
profilesarrayProfile URLs or @handles. Transcribes the creator's videos, newest first.
keywordsarraySearch terms. Transcribes the videos TikTok search returns.
maxVideosPerProfileintegerVideos per profile. 0 for every public video. Default 20.
maxVideosPerKeywordintegerSearch results per keyword. Default 20.
languagestringoriginal (default) for the spoken language, or a code like en or es to prefer that caption track when TikTok has one.
includeSegmentsbooleanInclude the timed segments array. Default true.
outputFormatsarrayTranscript files to save: any of txt, srt, vtt. Default none.
transcribeMissingCaptionsbooleanAI transcription for videos without captions. Default false.
openaiApiKeystringYour OpenAI API key (secret). Needed for AI transcription.
transcriptionModelstringgpt-transcribe (text only, default) or whisper-1 (text with timed segments).
maxAITranscriptionsintegerMost videos sent to AI per run. Default 10.
maxAIDurationSecondsintegerLongest video sent to AI, in seconds. Default 600.
proxyConfigurationobjectProxy used when TikTok does not answer a direct request. Apify residential by default.

๐Ÿ“ค Output

One row per video.

{
"video_id": "7681309378095353118",
"url": "https://www.tiktok.com/@tiktok/video/7681309378095353118",
"author_username": "tiktok",
"author_nickname": "TikTok",
"description": "You showed us what it means to be a Pop Girl this summer...",
"create_time": "2026-09-03T14:03:39Z",
"duration_sec": 67,
"views": 258200,
"likes": 10200,
"comments": 1191,
"shares": 1305,
"has_transcript": true,
"transcript_language": "en",
"transcript_source": "auto",
"transcript_text": "Hey, it's Nicole. This summer, you were the main character. You made it sound iconic...",
"segments": [
{ "start_sec": 0.1, "end_sec": 1.3, "text": "Hey, it's Nicole." },
{ "start_sec": 1.301, "end_sec": 3.301, "text": "This summer, you were the main character." }
],
"available_languages": ["en"],
"transcript_files": {
"srt": "transcript-7681309378095353118.srt",
"vtt": "transcript-7681309378095353118.vtt"
},
"no_transcript_reason": null,
"input_source": "https://www.tiktok.com/@tiktok/video/7681309378095353118",
"input_type": "video",
"ai_audio_minutes": 0
}

Field descriptions

  • video_id, url: the TikTok video.
  • author_username, author_nickname: the creator's handle and display name.
  • description: the creator's caption text with hashtags.
  • create_time: upload time in ISO 8601 (UTC).
  • duration_sec: video length in seconds.
  • views, likes, comments, shares: engagement counts at scrape time.
  • has_transcript: true when the row has a transcript. Only these rows are charged the transcript event.
  • transcript_language: language code of the transcript, for example en.
  • transcript_source: auto (TikTok auto captions), creator (captions added by the creator), translation (TikTok's translation), or openai/<model> (AI transcription).
  • transcript_text: the full transcript as plain text.
  • segments: timed lines with start_sec, end_sec and text.
  • transcript_files: key-value store record keys of the saved txt, srt and vtt files.
  • available_languages: every caption language TikTok has for the video.
  • no_transcript_reason: why there is no transcript.
  • asr_status: what AI transcription did for this video (only when it is turned on).
  • ai_audio_minutes: audio minutes of built-in AI transcription billed for this row (0 for captions and for your own OpenAI key).
  • input_source, input_type: the URL, profile or keyword that led to this video, and its type.

๐Ÿ’ฐ Pricing

Pay per event, no subscription:

  • Transcript: $1.50 per 1,000 videos with a transcript ($0.0015 each), whether it came from TikTok captions or from AI with your own key.
  • Videos without a transcript: listed in the dataset with the reason, no transcript charge.
  • Run start: $0.002 per GB of memory (under one cent for a typical run).
  • AI with your own OpenAI key: OpenAI bills your OpenAI account for the audio, separately from Apify. The Actor adds no charge beyond the transcript event.

Higher Apify plans get a discount on these prices. You can cap any run with Apify's maximum cost per run setting.

๐ŸŽฏ Example inputs

1. One video, with SRT and VTT subtitle files:

{
"videoUrls": ["https://www.tiktok.com/@tiktok/video/7681309378095353118"],
"outputFormats": ["srt", "vtt", "txt"]
}

2. A creator's last 50 videos, AI for the ones without captions (your OpenAI key):

{
"profiles": ["@garyvee"],
"maxVideosPerProfile": 50,
"transcribeMissingCaptions": true,
"openaiApiKey": "sk-proj-...",
"transcriptionModel": "whisper-1",
"maxAITranscriptions": 10
}

3. Hook and script research for a keyword (text only):

{
"keywords": ["iphone review", "tech unboxing"],
"maxVideosPerKeyword": 50,
"includeSegments": false
}

4. A batch of links with an English caption preference:

{
"videoUrls": [
"https://www.tiktok.com/@tiktok/video/7681309378095353118",
"https://vm.tiktok.com/ZMabcdefg/",
"7669681716176456980"
],
"language": "en"
}

๐Ÿ”Œ TikTok transcript API

Every Apify Actor is also an API. Call it with the Apify client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("stanvanrooy6/tiktok-transcript-scraper").call(run_input={
"videoUrls": ["https://www.tiktok.com/@tiktok/video/7681309378095353118"],
"outputFormats": ["srt"],
})
for video in client.dataset(run["defaultDatasetId"]).iterate_items():
if video["has_transcript"]:
print(video["url"], video["transcript_text"][:80])

The same works from JavaScript, cURL or any HTTP client. The API tab has ready-made snippets.

๐Ÿ’ก Use cases

  • Content research: collect every script from a creator to study hooks, structure and calls to action.
  • Marketing and brand monitoring: what is actually said about a product, brand or keyword.
  • Subtitles and localization: SRT and VTT files for editors, translators and caption tools.
  • AI and RAG datasets: timestamped TikTok text for summaries, sentiment, topic models or a vector database.
  • Journalism and compliance: a searchable, timestamped record of claims made in videos.
  • Repurposing: turn TikTok videos into blog posts, threads and newsletters.

โ“ FAQ

How do I get a transcript of a TikTok video?

Paste the video link into Video URLs and click Start. The transcript appears in the dataset as plain text and as timed segments. Tick Transcript files to also get SRT, VTT or TXT files.

Does it work for TikTok videos without captions?

Yes, with AI transcription turned on and your OpenAI key added: the Actor sends the audio of videos that have no captions to OpenAI and returns the text. Without it, those videos are listed with the reason and no transcript charge. TikTok often marks voiceover videos as music only; AI transcription checks their audio too.

Which languages are supported?

Any language TikTok has captions for. By default you get the transcript in the spoken language. Set language to a code such as en to prefer a TikTok caption track in that language when one exists. AI transcription keeps the spoken language and does not translate.

Can I download TikTok subtitles as SRT or VTT?

Yes. Set outputFormats to srt, vtt or both. Files are built from real timed segments only, so a transcript without timings gets a TXT file instead.

Can I transcribe all videos from a TikTok profile?

Yes. Add the profile and set maxVideosPerProfile to any number, or 0 for every public video. You can also transcribe the videos for a search keyword.

Is there a free TikTok transcript generator?

Apify's Free plan includes monthly platform credit you can use to try this Actor (up to 100 rows per run). Beyond that, it is $1.50 per 1,000 transcripts with no subscription, and videos without a transcript carry no transcript charge.

Do I need a TikTok account or login?

No. The Actor reads public data anonymously. You never share credentials.

How do I export TikTok transcripts?

Download the dataset as JSON, CSV or Excel from the Apify Console, or read it through the Apify API. Subtitle files are in the run's Key-value store tab.

The Actor only collects publicly visible data that any anonymous viewer can see, and it does not log in or bypass access controls. Transcripts and descriptions can contain personal data, so handle the data in line with GDPR, CCPA and your own use case. If you are unsure, consult a lawyer.

Can you add a field or an option I need?

Yes. Open an issue on the Issues tab and describe what you need.

All of them share the same no-login engine and output conventions.

Typical workflow: find videos with the TikTok Search Scraper, read what was said with this TikTok transcript generator, pull the audience reaction with the TikTok Comments Scraper, and profile the creators with the TikTok Profile Scraper.

๐Ÿค Feedback

I actively maintain this Actor. Found a bug or need a field? Open an issue on the Issues tab.

If this Actor saved you time, a rating on its Apify Store page helps other users find it.