TikTok Transcript Generator & Scraper: Captions, Subtitles & AI
Pricing
from $1.20 / 1,000 transcripts
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
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
4
Monthly active users
8 days ago
Last modified
Categories
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
- Paste one or more TikTok video links into Video URLs (regular links,
vm.tiktok.comorvt.tiktok.comshare links, or bare video IDs). - Optional: tick Transcript files to also get
.srt,.vttor.txtfiles. - 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: falseand 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-transcribereturns text without timestamps (TXT only);whisper-1also 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) andmaxAIDurationSeconds(default 600 seconds per video). Downloads are capped at 100 MiB. transcript_sourceshowsopenai/<model>for AI rows, andasr_statustells you what happened (transcribed,no_speech,failed,limit_reached,duration_limit).
AI transcription keeps the spoken language; it does not translate.
๐ฅ Input
| Field | Type | Description |
|---|---|---|
videoUrls | array | TikTok video links in any form (tiktok.com/@user/video/<id>, vm.tiktok.com short links, or numeric video IDs). |
profiles | array | Profile URLs or @handles. Transcribes the creator's videos, newest first. |
keywords | array | Search terms. Transcribes the videos TikTok search returns. |
maxVideosPerProfile | integer | Videos per profile. 0 for every public video. Default 20. |
maxVideosPerKeyword | integer | Search results per keyword. Default 20. |
language | string | original (default) for the spoken language, or a code like en or es to prefer that caption track when TikTok has one. |
includeSegments | boolean | Include the timed segments array. Default true. |
outputFormats | array | Transcript files to save: any of txt, srt, vtt. Default none. |
transcribeMissingCaptions | boolean | AI transcription for videos without captions. Default false. |
openaiApiKey | string | Your OpenAI API key (secret). Needed for AI transcription. |
transcriptionModel | string | gpt-transcribe (text only, default) or whisper-1 (text with timed segments). |
maxAITranscriptions | integer | Most videos sent to AI per run. Default 10. |
maxAIDurationSeconds | integer | Longest video sent to AI, in seconds. Default 600. |
proxyConfiguration | object | Proxy 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 exampleen.transcript_source:auto(TikTok auto captions),creator(captions added by the creator),translation(TikTok's translation), oropenai/<model>(AI transcription).transcript_text: the full transcript as plain text.segments: timed lines withstart_sec,end_secandtext.transcript_files: key-value store record keys of the savedtxt,srtandvttfiles.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 ApifyClientclient = 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.
Is it legal to scrape TikTok transcripts?
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.
๐ Related TikTok scrapers
All of them share the same no-login engine and output conventions.
- TikTok Search Scraper: search TikTok videos by keyword in any region, with views, likes, hashtags and author data.
- TikTok Profile Scraper: follower counts, bio, links and the full post history of any TikTok user.
- TikTok Comments Scraper: export every comment and reply thread from any TikTok video, no login.
- TikTok Shop Scraper: TikTok Shop reviews, star ratings and product data from any product URL.
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.