TikTok Transcript Scraper - Subtitles in Every Language avatar

TikTok Transcript Scraper - Subtitles in Every Language

Pricing

from $2.00 / 1,000 transcripts

Go to Apify Store
TikTok Transcript Scraper - Subtitles in Every Language

TikTok Transcript Scraper - Subtitles in Every Language

Get transcripts of TikTok videos or a creator's latest videos. Uses TikTok's own captions (ASR, translations, creator subtitles) and Whisper AI for videos without captions. Plain text, timestamps, SRT/WebVTT and video stats. Pay only for transcripts. URLs, share links, IDs or profiles.

Pricing

from $2.00 / 1,000 transcripts

Rating

5.0

(1)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

34

Total users

6

Monthly active users

a day ago

Last modified

Categories

Share

TikTok Transcript Scraper

Extract the full transcript of any public TikTok video, or of a creator's latest videos. Paste video links or a profile, get clean text out: TikTok's own speech-recognition captions (ASR), its machine translations (MT), and creator-uploaded subtitles, each as a row with a plain-text transcript, timestamped segments, optional SRT/WebVTT, and the video's engagement stats. Videos without captions can be transcribed from their audio with Whisper AI. No login, no cookies, no browser.

How it works

Why Use This Scraper?

  • Whole profiles, not just single links - give a handle like @bbcnews and get transcripts of its latest videos (up to 30 per profile), newest first.
  • Videos without captions still get a transcript - turn on whisperFallback and caption-less or freshly uploaded videos are transcribed from their audio with Whisper AI.
  • Every caption language - when TikTok has more than one track (the original plus translations), each comes back as its own row. Filter to just the languages you need.
  • Timestamped segments included - each row carries a segments array (start, end, text) precise to the millisecond, ready for subtitling, clipping, or search indexing.
  • Know what you're reading - every row is flagged ASR, MT, or creator, so you can separate spoken-word originals from machine translations.
  • Video metadata for free - author, caption, publish date, duration, plays, likes, comments, shares, and saves ride along on every row at no extra charge.
  • SRT and WebVTT on demand - switch on includeSrt or includeVtt and get subtitle files ready for any video editor or player.
  • You pay only for transcripts - private, deleted, and caption-less videos are listed in the run's ERRORS record with the reason, and are not charged. The run's status line says how many videos were transcribed and why any were not.

Overview

This Actor takes a list of TikTok videos and/or profiles and returns their subtitle tracks as structured transcripts. One dataset row = one video-language combination (almost always one row per video). It works with public videos only and requires no TikTok account.

Supported Inputs

Input formExample
Full video URLhttps://www.tiktok.com/@nasa/video/723987198712345678
Share linkhttps://vm.tiktok.com/ZMabc123/, https://vt.tiktok.com/xyz/, https://www.tiktok.com/t/ZTabc123/
Bare video ID723987198712345678
Profile@bbcnews, bbcnews, https://www.tiktok.com/@bbcnews (in profiles)

Video forms can be mixed freely in the videos list. A profile URL or @handle pasted into videos is treated as a profile.

Use Cases

  • Content repurposing - turn spoken TikTok videos into blog posts, newsletters, or captions for other platforms.
  • AI & LLM pipelines - feed clean video text into summarizers, RAG systems, and agents instead of transcribing audio yourself.
  • Trend & competitor research - analyze what creators in your niche actually say, at scale, across languages.
  • Brand safety & compliance - audit influencer scripts and sponsored-content disclosures in written form.
  • Accessibility & localization - pull existing translations to bootstrap subtitles for your own edits.
  • Search & discovery - index transcripts to make a video library searchable by spoken content.

How It Works

  1. Resolve - every input is normalized to a numeric video ID. Share links are followed for free before any paid lookup happens. A profile is resolved to its latest videos in one request.
  2. Extract - the video's caption tracks are collected: ASR originals, machine translations, and creator uploads, with an optional language filter. With whisperFallback on, a video with no caption track is downloaded and transcribed with Whisper AI.
  3. Deliver - each track's subtitle file is downloaded and parsed into a plain-text transcript plus timestamped segments, and written as one dataset row. Anything that could not be transcribed goes to the ERRORS record, uncharged.

Input Configuration

FieldTypeDefaultDescription
videosarray-TikTok video URLs, share links, or bare numeric IDs.
profilesarray-Handles or profile URLs; each profile's latest videos are transcribed.
maxVideosPerProfileinteger10Latest videos per profile, 1 to 30.
maxItemsintegerno limitMost videos per run, direct URLs first, then profile videos.
languagesarrayallOptional filter, prefix-matched - ["eng"] matches eng-US. One row per matching language.
includeSrtbooleanfalseInclude an SRT subtitle file in each row (srt field).
includeVttbooleanfalseInclude the raw WebVTT subtitle text in each row (vtt field).
whisperFallbackbooleanfalseTranscribe videos that have no captions from their audio with Whisper AI (premium event, videos up to 10 minutes).
whisperModelstringtinytiny, base or small; used only by the Whisper fallback.

Give at least one video or one profile. Runs on the free Apify plan transcribe up to 3 videos; the status line names anything left out, and nothing left out is charged.

Example input:

{
"videos": [
"https://www.tiktok.com/@easyenglishwithfun/video/7607978879944379670",
"https://vm.tiktok.com/ZMabc123/",
"7673836093183151363"
],
"profiles": ["@bbcnews"],
"maxVideosPerProfile": 5,
"languages": ["eng"],
"includeSrt": true
}

Output Overview

One row per video per language (almost always one per video). A 3-language video produces 3 rows, each carrying the full video metadata plus that language's transcript. Profile videos also carry sourceProfile and isPinned. Videos that cannot be delivered (private, deleted, no captions, photo posts) are not written to the dataset and not charged: they go to the run's ERRORS key-value record with a reason code and a message, and the run's status line counts them.

Output Samples

Transcript row (trimmed):

{
"videoId": "7607978879944379670",
"videoUrl": "https://www.tiktok.com/@easyenglishwithfun/video/7607978879944379670",
"authorUsername": "easyenglishwithfun",
"authorNickname": "Easy English with fun",
"authorVerified": false,
"caption": "Simple English Conversation 💬 | A Friendly Market Dialogue for Beginners 🇺🇸 #LearnEnglish #EnglishConversation …",
"createdAt": "2026-02-17T23:23:48.000Z",
"durationSeconds": 72,
"playCount": 2100000,
"likeCount": 116800,
"commentCount": 857,
"shareCount": 11000,
"saveCount": 21282,
"originalLanguage": "eng-US",
"language": "eng-US",
"languageId": "2",
"source": "ASR",
"isAutoGenerated": true,
"isOriginalCaption": true,
"subtitleFormat": "webvtt",
"subtitleUrl": "https://v16-webapp.tiktokcdn-us.com/…",
"subtitleUrlExpiresAt": "2026-08-18T14:02:35.000Z",
"segmentCount": 24,
"segments": [
{ "start": 0, "end": 4.6, "text": "Are you busy right now? No, I have time." },
{ "start": 4.6, "end": 7.2, "text": "Why? Could you please help me?" },
{ "start": 7.2, "end": 9.8, "text": "Yes, of course. What do you need?" }
],
"transcript": "Are you busy right now? No, I have time. Why? Could you please help me? Yes, of course. What do you need? I'm very thirsty. I need some water. …",
"transcriptDurationSeconds": 57.819,
"scrapedAt": "2026-08-16T14:02:41.000Z"
}

ERRORS record entry (video without captions, uncharged):

{
"input": "https://www.tiktok.com/@bbcnews/video/7690191232705891606",
"videoId": "7690191232705891606",
"reason": "no_captions",
"message": "No transcript available for video 7690191232705891606 - the video has no caption track…"
}

Reason codes: no_captions, video_unavailable, photo_post, language_not_available, link_unresolved, invalid_input, whisper_no_speech, too_long_for_whisper, profile_not_found, profile_private, profile_no_videos, and, for failures worth a retry, captions_unreachable, whisper_failed, lookup_failed, profile_unreadable.

Key Output Fields

FieldMeaning
language / languageIdBCP-47-style language code (eng-US, hun-HU) and TikTok's internal ID for this track.
sourceASR = auto speech recognition of the original audio, MT = TikTok's machine translation, creator = uploaded by the creator, whisper = transcribed from the audio by the Whisper fallback.
isOriginalCaptiontrue on the track in the video's original spoken language.
originalLanguageThe video's detected original language - even on translated rows.
transcriptThe full plain-text transcript for this language.
segmentsTimestamped cues: start / end in seconds (millisecond precision) + text.
transcriptDurationSecondsSeconds of the video actually covered by captions.
subtitleUrl / subtitleUrlExpiresAtDirect WebVTT file URL and when it expires (typically ~48 h).
playCount … saveCountThe video's engagement stats at scrape time.
sourceProfile / isPinnedFor videos found through a profile: which profile, and whether it is pinned there.
srt / vttSubtitle files, when includeSrt / includeVtt is on.

FAQ

Do I need to log in or provide cookies? No. The Actor never touches your TikTok account and only reads public videos.

Which videos have transcripts? Any video where the creator added captions or TikTok's automatic speech recognition produced them - that covers most spoken-word content. Music-only videos, very fresh uploads and photo posts often have no caption track. Turn on whisperFallback to transcribe caption-less videos from their audio; without it they are listed in the ERRORS record and not charged.

Can I transcribe a whole profile? Yes. Put the handle or profile URL in profiles and set maxVideosPerProfile (up to 30). The Actor transcribes that profile's latest videos, newest first, and skips photo posts.

Can I get just English? Yes - set "languages": ["eng"]. The filter is prefix-matched, so eng catches eng-US and eng-GB. Without a filter you get every available language as separate rows.

Is this transcription AI? How accurate is it? The Actor returns TikTok's own caption tracks - the same subtitles viewers see in the app. Original-language tracks (source: "ASR" or "creator") are typically very accurate; machine translations ("MT") are TikTok's automatic translations, delivered as-is and flagged so you can tell them apart.

What happens with a private or deleted video? It is listed in the ERRORS record with the reason, it is not charged, and the run continues with your other videos.

What does it cost? Pay per result: one charge per transcript row delivered, plus a small per-run start fee. Whisper transcripts carry an extra premium event. Videos that could not be transcribed cost nothing. No subscription.

Support

Found a bug or need a field added? Open an issue on the Actor's Issues tab in Apify Console, or email muhamed.didovic@gmail.com.

Additional Services

Need a custom TikTok or social-media scraper, enrichment pipeline, or a private version of this Actor? Custom builds available - reach out at muhamed.didovic@gmail.com.

Explore More Scrapers

Browse the full portfolio: muhamed-didovic.github.io

🤖 For AI Agents & LLM Apps

Purpose: Return the transcript(s) of public TikTok videos in every available language, with timestamped segments.

Minimal tested input:

{ "videos": ["https://www.tiktok.com/@easyenglishwithfun/video/7607978879944379670"], "languages": ["eng"] }

Profile input: { "profiles": ["@bbcnews"], "maxVideosPerProfile": 5 }.

Output: array of flat objects, one per video-language. Fields: videoId, videoUrl, authorUsername, authorNickname, authorId, authorVerified, caption, createdAt, durationSeconds, playCount, likeCount, commentCount, shareCount, saveCount, originalLanguage, language, languageId, source (ASR|MT|creator|whisper), isAutoGenerated, isOriginalCaption, subtitleFormat, variant, subtitleUrl, subtitleUrlExpiresAt, segmentCount, segments[{start,end,text}], transcript, transcriptDurationSeconds, sourceProfile, isPinned, scrapedAt (+ srt / vtt when includeSrt / includeVtt is on).

Behavior & billing: Pay-per-event - one charge per transcript row. For LLM context economy, set "languages" to one language so each video returns exactly one row, and read the transcript field. Private/deleted/caption-less videos and unresolvable links are not written to the dataset and not charged; they are listed in the ERRORS key-value record (input, videoId, reason, message), and the run's status message counts them. No login/cookies required.

⚠️ Disclaimer

This Actor accesses publicly available data on TikTok for legitimate research, accessibility, market-intelligence, and business-analysis purposes. It does not log in, bypass authentication, or access private content. Use of this Actor must comply with TikTok's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The authors are not responsible for any misuse. Users must:

  • Respect rate limits and avoid overloading TikTok's infrastructure
  • Not use scraped data to violate user privacy or platform terms
  • Process any personal data only with a lawful basis and in compliance with their jurisdiction
  • Not republish scraped content in violation of copyright

We do not store scraped data; the Actor returns it directly to your Apify dataset for your authorized use. TikTok is a trademark of ByteDance Ltd.; this Actor is not affiliated with or endorsed by TikTok or ByteDance.

SEO Keywords

tiktok transcript scraper, tiktok transcript extractor, tiktok profile transcripts, tiktok srt download, tiktok whisper transcription, get tiktok transcript, tiktok video to text, tiktok subtitles download, tiktok captions scraper, tiktok subtitle extractor, tiktok speech to text, tiktok asr captions, tiktok transcript api, tiktok video transcript generator, extract tiktok captions, tiktok webvtt download, tiktok transcript multiple languages, tiktok translation captions, tiktok video text export, tiktok transcript for ai, tiktok content analysis, tiktok transcript csv, tiktok accessibility captions, video transcript scraper, apify tiktok transcript