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

Extract full transcripts and subtitles from TikTok videos in every available language — auto-generated (ASR), machine-translated, and creator captions. Get plain text, timestamped segments, and video metadata. No login or cookies. Works with URLs, short links, or IDs. JSON, CSV, Excel.

Pricing

from $2.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

9 hours ago

Last modified

Categories

Share

TikTok Transcript Scraper

Extract the full transcript of any public TikTok video — in every language TikTok has. One video link in, clean text out: auto-generated speech-recognition captions (ASR), TikTok's machine translations (MT), and creator-uploaded subtitles, each as its own row with a plain-text transcript, timestamped segments, and the video's engagement stats. No login, no cookies, no browser.

How it works

Why Use This Scraper?

  • Every language, not just one — a video with six caption tracks returns six rows: the original ASR plus every translation TikTok generated. 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.
  • Raw WebVTT on demand — switch on includeVtt and get the original subtitle file text, ready for any video editor or player.
  • Bulk-friendly and honest — mix URLs, share links, and bare IDs in one run. Private, deleted, and caption-less videos yield a clear error item instead of a failed run.

Overview

This Actor takes a list of TikTok videos and returns their subtitle tracks as structured transcripts. One dataset row = one video-language combination. 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/
Bare video ID723987198712345678

All three forms can be mixed freely in the videos list.

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.
  2. Extract — the video's caption tracks are collected: ASR originals, machine translations, and creator uploads, with an optional language filter.
  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.

Input Configuration

FieldTypeDefaultDescription
videosarray— (required)TikTok video URLs, share links, or bare numeric IDs.
languagesarrayallOptional filter, prefix-matched — ["eng"] matches eng-US. One row per matching language.
includeVttbooleanfalseInclude the raw WebVTT subtitle text in each row (vtt field).

Example input:

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

Output Overview

One row per video per language. A 3-language video produces 3 rows, each carrying the full video metadata plus that language's transcript. Videos that cannot be delivered (private, deleted, no captions) produce a single error item with a message explaining why — the run itself still succeeds.

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"
}

Error item (video without captions):

{
"video": "7582320231775816981",
"error": "no_captions",
"message": "No transcript available for video 7582320231775816981 — the video has no caption track…"
}

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.
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).
playCountsaveCountThe video's engagement stats at scrape time.

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 and photo posts have no caption track and return a clear no_captions error item.

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 returns an error item explaining why, 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. Error items are the only rows a failed target ever costs you. 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"] }

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), isAutoGenerated, isOriginalCaption, subtitleFormat, variant, subtitleUrl, subtitleUrlExpiresAt, segmentCount, segments[{start,end,text}], transcript, transcriptDurationSeconds, scrapedAt (+ vtt when includeVtt: true).

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 yield one error item each (error, message) instead of failing the run. 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, 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