TikTok Transcript Scraper avatar

TikTok Transcript Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
TikTok Transcript Scraper

TikTok Transcript Scraper

Extract transcripts and subtitles from TikTok videos in all available languages. Returns timestamped segments plus full plain-text transcript per language.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

1

Bookmarked

167

Total users

36

Monthly active users

17 days ago

Last modified

Share

Extract subtitles and full transcripts from TikTok videos in every available language. The actor fetches all subtitle tracks attached to a video — including auto-generated speech recognition (ASR) captions and machine-translated (MT) versions — parses the WebVTT format, and emits one dataset row per video-language combination. No account, login, or cookies are required to scrape public videos.

What this actor does

  • Accepts TikTok video URLs or bare numeric post IDs as input
  • Returns one output row per video per language (e.g. a video with 6 languages produces 6 rows)
  • Provides both a full plain-text transcript field and a segments array with precise start/end/text cues
  • Identifies the subtitle source: ASR (auto speech recognition), MT (machine translation), or other creator-uploaded captions
  • Includes video metadata — username, display name, caption, publish date, duration — on every row
  • Supports an optional language filter so you only receive the language(s) you need
  • Exits cleanly with a success: false row when a video has no captions available
  • Empty fields are omitted

Output per transcript row

  • postId — unique TikTok video ID
  • postUrl — canonical video URL
  • username — author's TikTok username
  • displayName — author's display name
  • caption — video description/caption text
  • createdAt — publish timestamp (ISO 8601)
  • duration — video duration in seconds
  • languageCode — BCP-47 language code (e.g. eng-US, fre-FR, spa)
  • languageId — TikTok's internal language identifier
  • subtitleFormat — subtitle format, always webvtt
  • source — subtitle origin: ASR (auto speech recognition), MT (machine translation), or other
  • version — subtitle version string from TikTok
  • variant — subtitle variant identifier from TikTok
  • subtitleUrl — direct URL to the WebVTT subtitle file
  • subtitleUrlExpiresAt — expiry timestamp of the subtitle URL
  • isAutoGenerated — true when TikTok generated the captions automatically
  • isOriginalCaption — true when the caption is in the video's original language
  • segments — array of timestamped cues: [{ "start": 0.0, "end": 2.5, "text": "..." }, ...]
  • segmentCount — number of caption segments
  • transcript — full joined plain-text transcript for this language
  • transcriptDuration — total duration covered by captions in seconds
  • scrapedAt — ISO 8601 timestamp of when the row was collected

Input

FieldTypeDefaultDescription
postUrlsarray of stringsTikTok video URLs to extract transcripts from. Accepts full URLs and short links.
postIdsarray of stringsNumeric TikTok post IDs (alternative to postUrls).
languagesarray of stringsallOptional language filter. Only return rows whose languageCode starts with one of these values (e.g. ["eng-US", "fre-FR"]). Leave empty for all languages.
useWhisperFallbackbooleanfalseWhen enabled, uses Whisper speech-to-text to generate transcripts for videos with no native subtitles. Adds significant processing time.

Example: Extract all languages from a NatGeo video

{
"postUrls": ["https://www.tiktok.com/@natgeo/video/7637581966396656909"]
}

Example: English transcripts only

{
"postUrls": [
"https://www.tiktok.com/@natgeo/video/7637581966396656909",
"https://www.tiktok.com/@natgeo/video/7652858746137234702"
],
"languages": ["eng-US"]
}

Example: Using post IDs

{
"postIds": ["7637581966396656909", "7652858746137234702"],
"languages": ["eng-US", "spa"]
}

Example: Enable Whisper fallback for videos without captions

{
"postUrls": ["https://www.tiktok.com/@somecreator/video/7123456789012345678"],
"useWhisperFallback": true
}

Use cases

  • Content repurposing — convert TikTok videos into blog posts, newsletters, or social copy using the plain-text transcript field
  • Multi-language SEO — harvest all MT subtitle tracks to identify keyword opportunities across markets
  • Accessibility tooling — build caption archives or compliance audits for brands and media companies
  • Journalism and research — extract verbatim quotes from news, political, or educational creators without manual transcription
  • Translation pipelines — feed segments arrays into translation APIs with exact timing for dubbed audio or subtitle files

FAQ

Q: Do I need a TikTok account or cookies?
A: No. The actor works entirely with public TikTok videos and requires no authentication.

Q: How many rows will I get per video?
A: One row per available language. Popular news and educational videos often have 5–10 languages (one original plus several machine translations).

Q: What is the difference between ASR and MT sources?
A: ASR (auto speech recognition) is the transcript generated from the video's own audio. MT (machine translation) is a TikTok-produced translation of the ASR track into another language. Creator-uploaded subtitle files appear as a separate source.

Q: What happens when a video has no subtitles?
A: The actor emits one row with success: false and a descriptive message. Video metadata (username, caption, duration) is still populated in that row.

Q: Which URL formats are supported?
A: Standard video URLs (https://www.tiktok.com/@username/video/ID), short share links (vm.tiktok.com, vt.tiktok.com), and bare numeric IDs.

Q: Can I scrape private or deleted videos?
A: No. Private, deleted, or regionally restricted videos return a failure row with an explanatory message.

Q: What is the languages filter format?
A: Prefix-based matching on BCP-47 codes. For example, "eng" matches eng-US, eng-GB; "eng-US" matches only that exact variant. You can mix short and long codes in the same array.

Q: Are slideshow (photo) posts supported?
A: Slideshows do not have audio tracks and therefore typically have no subtitle data. The actor will return a failure row for those posts.

Q: How fresh are the subtitle URLs?
A: The subtitleUrl expires after a short window (usually a few hours). The subtitleUrlExpiresAt field tells you the exact cutoff. Download the VTT file promptly if you need it long-term.

Q: Can I run this on hundreds of videos?
A: Yes. The actor processes URLs sequentially. For large batches, consider splitting across multiple runs.

Build a complete TikTok data pipeline with our full suite:

ScraperURL
TikTok Post Scraperhttps://apify.com/crawlerbros/tiktok-post-scraper
TikTok Profile Scraperhttps://apify.com/crawlerbros/tiktok-profile-scraper
TikTok Comments Scraperhttps://apify.com/crawlerbros/tiktok-comments-scraper
TikTok Search Scraperhttps://apify.com/crawlerbros/tiktok-search-scraper
TikTok Hashtag Scraperhttps://apify.com/crawlerbros/tiktok-hashtag-scraper
TikTok Music Scraperhttps://apify.com/crawlerbros/tiktok-music-scraper
TikTok Followers Scraperhttps://apify.com/crawlerbros/tiktok-followers-scraper
TikTok Mention Scraperhttps://apify.com/crawlerbros/tiktok-mention-scraper
TikTok Profile Mention Scraperhttps://apify.com/crawlerbros/tiktok-profile-mention-scraper
TikTok Playlist Scraperhttps://apify.com/crawlerbros/tiktok-playlist-scraper
TikTok Explore Scraperhttps://apify.com/crawlerbros/tiktok-explore-scraper
TikTok For You Scraperhttps://apify.com/crawlerbros/tiktok-for-you-scraper
TikTok Downloaderhttps://apify.com/crawlerbros/tiktok-downloader-api
TikTok Ads Library Scraperhttps://apify.com/crawlerbros/tiktok-ads-library-scraper-pro
TikTok Top Ads Scraperhttps://apify.com/crawlerbros/tiktok-top-ads-scraper
TikTok Hashtag Trends Scraperhttps://apify.com/crawlerbros/tiktok-hashtag-trends-scraper
TikTok LIVE Scraperhttps://apify.com/crawlerbros/tiktok-live-scraper