TikTok & YouTube & Loom Transcript Extractor & Video Downloader avatar

TikTok & YouTube & Loom Transcript Extractor & Video Downloader

Pricing

from $2.00 / 1,000 transcript rows

Go to Apify Store
TikTok & YouTube & Loom Transcript Extractor & Video Downloader

TikTok & YouTube & Loom Transcript Extractor & Video Downloader

Transcripts from TikTok, YouTube (incl. Shorts and Live) and Loom videos as text, WebVTT and SRT, with video details. Whisper AI for videos without captions, optional MP4 download. Pay only for delivered transcripts: private or unsupported links cost nothing. Mix platforms in one run.

Pricing

from $2.00 / 1,000 transcript rows

Rating

3.0

(11)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

18

Bookmarked

560

Total users

5

Monthly active users

a day ago

Last modified

Share

TikTok, YouTube & Loom Transcript Extractor

Paste TikTok, YouTube or Loom video links and get their transcripts back as clean text, WebVTT subtitles and video details. Videos without captions are transcribed from their audio with Whisper AI, and you can save each video as an MP4 in the same run.

Why Use This Scraper?

  • Three platforms in one run: mix TikTok, YouTube (including Shorts and Live) and Loom links in a single list
  • Captions first, AI second: TikTok's, YouTube's and Loom's own caption tracks are used when they exist, Whisper only when they don't
  • Timestamped output: WebVTT on every platform, SRT for Loom, timed segments for YouTube
  • Rich TikTok rows: author, likes, comments, shares, plays, saves and sound details at no extra cost
  • Optional MP4 download (up to 720p) stored next to the transcript
  • You pay only for transcripts: unsupported, private or silent videos are listed in the run's ERRORS record and cost nothing

Overview

This actor is built for content teams, researchers, marketers and developers who need the spoken words of short-form and long-form videos as data, without logging in anywhere.

Each video URL produces one dataset row. The row shape depends on the platform: a TikTok row carries the transcript plus the post's metadata and engagement, a YouTube row carries the transcript plus (optionally) the video's details, and a Loom row carries the transcript in plain text, WebVTT and SRT plus the title, creator and duration.

A URL that cannot be transcribed does not become a row. It goes to the ERRORS record in the run's key-value store with a reason, and the run's status line counts it, for example "Transcribed 3 of 5 URLs (3 rows). Not charged: 1 URL is not a supported video; 1 video has no captions and no Whisper transcript."

Supported Inputs

URL types

PlatformURL formExample
TikTok videotiktok.com/@user/video/<id>https://www.tiktok.com/@stoolpresidente/video/7451747413649263915
TikTok share linkvm.tiktok.com/..., vt.tiktok.com/..., tiktok.com/t/...https://vm.tiktok.com/ZMabc123/
YouTube videoyoutube.com/watch?v=<id>, youtu.be/<id>https://www.youtube.com/watch?v=aAkMkVFwAoo
YouTube Short / Liveyoutube.com/shorts/<id>, youtube.com/live/<id>https://www.youtube.com/shorts/aAkMkVFwAoo
Loom videoloom.com/share/<id>, loom.com/embed/<id>https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6

Copy-pasteable startUrls

{
"startUrls": [
{ "url": "https://www.tiktok.com/@stoolpresidente/video/7451747413649263915" },
{ "url": "https://www.youtube.com/watch?v=aAkMkVFwAoo" },
{ "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6" }
]
}

The same video pasted twice (for example a watch?v= link and a youtu.be link) is processed once.

Unsupported inputs

  • TikTok profiles (tiktok.com/@user): paste video links, or use TikTok Transcript Scraper, which takes profiles
  • YouTube channels and playlists
  • Private, login-only or password-protected videos
  • Sites other than TikTok, YouTube and Loom

Unsupported URLs are listed in ERRORS with the reason and are not charged.

Use Cases

AudienceUse case
Content teamsTurn videos into blog posts, newsletters and captions for other channels
Marketing teamsStudy what competitors and creators actually say, at scale
ResearchersBuild text datasets from TikTok, YouTube and Loom for analysis
AI and LLM buildersFeed clean transcripts into summarizers, RAG pipelines and agents
Sales and support teamsMake recorded Loom walkthroughs searchable and quotable
Accessibility workGet subtitle files (WebVTT, SRT) for existing videos

How It Works

  1. Sort the URLs - every link is matched to TikTok, YouTube or Loom; anything else goes to ERRORS before a single request is made.
  2. Read the captions - the actor fetches the platform's own caption tracks: TikTok's auto and creator captions, YouTube's caption tracks in the language you pick, Loom's transcript.
  3. Fall back to Whisper - when a video has no caption track and whisperFallback is on, its audio is downloaded and transcribed with Whisper AI (faster-whisper, language detected automatically).
  4. Deliver - each video becomes one dataset row with the transcript and the video's details; failed URLs go to ERRORS, uncharged.
  5. Download (optional) - with downloadVideo on, the MP4 is saved to the run's key-value store and linked from the row.

Input Configuration

Input fields

FieldTypeDefaultDescription
startUrlsarray3 sample URLsTikTok, YouTube and Loom video URLs, mixed freely. Required.
maxItemsintegerno limitThe most URLs a run processes, in input order. Free Apify plan runs take the first 20.
whisperFallbackbooleantrueTranscribe videos without captions from their audio with Whisper AI. Billed per started minute of audio.
downloadVideobooleanfalseAlso save each video as an MP4 (up to 720p) and link it from the row. Billed per started minute of video.
maxFileSizeMbinteger100Skip MP4 downloads larger than this. Used only with downloadVideo.
maxRequestRetriesinteger3Retries for a failed URL. Private and silent videos are not retried.
includeYoutubeVideosDetailsbooleanfalseYouTube: add title, channel, views, keywords, thumbnails and description to each row.
youtubeTranscriptLanguagestringdefaultYouTube caption language; falls back to the video's default track.
includeVideoMetadatabooleantrueTikTok: video id, caption, creation time, duration.
includeAuthorMetadatabooleantrueTikTok: author username, name, id, verified flag.
includeEngagementStatsbooleantrueTikTok: likes, comments, shares, plays, saves.
includeMusicMetadatabooleantrueTikTok: sound title, author, id, original flag.
languageFilterstringemptyTikTok: comma-separated caption languages to keep, e.g. en,es. Empty keeps any.
maxTranscriptLanguagesPerVideointeger1TikTok: how many caption languages per video, original first.
proxyobjectApify residentialProxy for fetching pages. Custom proxy URLs also route MP4 downloads.

Common scenarios

Transcripts only, no Whisper (cheapest; caption-less videos are skipped and not charged):

{
"startUrls": [{ "url": "https://www.tiktok.com/@stoolpresidente/video/7451747413649263915" }],
"whisperFallback": false
}

YouTube in Spanish with video details:

{
"startUrls": [{ "url": "https://www.youtube.com/watch?v=aAkMkVFwAoo" }],
"youtubeTranscriptLanguage": "es",
"includeYoutubeVideosDetails": true
}

Loom walkthroughs with the MP4 saved:

{
"startUrls": [{ "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6" }],
"downloadVideo": true,
"maxFileSizeMb": 200
}

Output Overview

One row per video that was transcribed. The fields differ by platform:

  • TikTok rows: url, the transcript as text and vtt, the caption language and source (subtitles or whisper), every selected language in transcripts, plus the post's metadata, author, engagement and sound.
  • YouTube rows: videoId, the transcript as transcriptText, with timed segments (transcript) when it came from YouTube's captions, or WebVTT (transcriptVtt) when it came from the yt-dlp fallback; transcriptSource says which (captions or fallback-yt-dlp).
  • Loom rows: transcript, transcriptVTT and transcriptSRT, plus title, creator and duration.

With downloadVideo on, every row also carries videoUrl and videoKey (or videoError when the download failed).

URLs that could not be transcribed are in the ERRORS record of the run's key-value store, each as { url, reason, message }.

Output Samples

TikTok row (captioned video, transcript shortened):

{
"url": "https://www.tiktok.com/@stoolpresidente/video/7451747413649263915",
"videoId": "7451747413649263915",
"description": "TinyBrickOven in Baltimore was owned by the most upbeat guy ever and was closing forever on Christmas",
"createTimeISO": "2024-12-23T23:05:50.000Z",
"durationSeconds": 129,
"authorUsername": "stoolpresidente",
"authorName": "Dave Portnoy",
"authorVerified": true,
"likeCount": 2200000,
"commentCount": 11800,
"shareCount": 77400,
"playCount": 15900000,
"collectCount": 110386,
"musicTitle": "original sound",
"language": "eng-US",
"source": "subtitles",
"transcriptLanguages": ["eng-US"],
"text": "Watch out for the snow storm, president. Oh, he said watch out for. No, I didn't know what the hell you were talking about. Tiny brick oven. That looks good...",
"vtt": "WEBVTT\n\n00:00:00.260 --> 00:00:01.500\nWatch out for the snow storm,\n\n00:00:01.501 --> 00:00:02.621\npresident. Oh,\n..."
}

YouTube row (captions read through the yt-dlp fallback, transcript shortened):

{
"videoId": "aAkMkVFwAoo",
"title": "Mariah Carey - All I Want for Christmas Is You (Make My Wish Come True Edition)",
"author": "MariahCareyVEVO",
"channelId": "UClS0wn3LPs9jdX_yt2g1k8w",
"lengthSeconds": "243",
"viewCount": "913234099",
"transcriptSource": "fallback-yt-dlp",
"transcriptText": "(light cheerful music) I don't want a lot for Christmas. There is just one thing I need..."
}

Loom row (subtitle fields shortened):

{
"url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6",
"title": "Getting Started with Loom",
"creator": "Chanel Lovell",
"duration": "00:05:54",
"durationISO8601": "PT354.97S",
"transcript": "Hey, Chanel here from the Loom team. I'm going to show you how to get started with Loom...",
"transcriptVTT": "WEBVTT\r\n\r\n1\r\n00:00:01.154 --> 00:00:04.774\r\n...",
"transcriptSRT": "1\n00:00:01,154 --> 00:00:04,774\n...",
"error": null
}

ERRORS record entry (uncharged):

{
"url": "https://www.tiktok.com/@bbcnews/video/7690191232705891606",
"reason": "no_transcript",
"message": "https://www.tiktok.com/@bbcnews/video/7690191232705891606: the video has no captions, and its audio had no speech to transcribe (or whisperFallback is off)."
}

Key Output Fields

Transcript

  • TikTok: text (plain), vtt (WebVTT), language, source (subtitles or whisper), transcriptLanguages, transcripts (one entry per selected language)
  • YouTube: videoId, url, transcriptText, transcript (timed segments with startMs, endMs, startTimeText), transcriptVtt, transcriptSource
  • Loom: transcript, transcriptVTT, transcriptSRT

TikTok post

  • url, videoId, description, createTime, createTimeISO, durationSeconds
  • Author: authorUsername, authorName, authorId, authorVerified
  • Engagement: likeCount, commentCount, shareCount, playCount, collectCount
  • Sound: musicTitle, musicAuthor, musicId, musicOriginal

YouTube video

  • videoId, title, author, channelId, lengthSeconds, viewCount, keywords, shortDescription, thumbnail (with includeYoutubeVideosDetails, or on fallback rows)

Loom video

  • url, title, creator, uploadDate, duration, durationISO8601

Video file (with downloadVideo)

  • videoUrl, videoKey, videoError

Errors record

  • url, reason (invalid_input, video_unavailable, no_transcript, too_long_for_whisper, transcription_failed, fetch_failed, no_result), message

FAQ

Which URLs are supported?

TikTok video and share links, YouTube videos, Shorts and Live links, and Loom share and embed links. See the table in Supported Inputs. Profiles, channels and playlists are not supported.

What happens with a video that has no captions?

With whisperFallback on (the default), the audio is transcribed with Whisper AI and billed per started minute of audio. With it off, the video goes to ERRORS and costs nothing. A video with no speech at all (music only, silent) also goes to ERRORS.

How long can a video be for Whisper?

Whisper runs on the run's CPU, which Apify scales with memory. At the default 2 GB, TikTok clips up to about 8 minutes are transcribed, and YouTube audio is cut into chunks that each fit the Whisper timeout. A video that cannot finish in time is listed as too_long_for_whisper, uncharged; a run with more memory can take it.

Which language is the transcript in?

TikTok: the original caption language first, or the languages in languageFilter. YouTube: youtubeTranscriptLanguage, falling back to the video's default track. Whisper detects the spoken language and reports it in language.

What does it cost?

Pay per event: $0.002 per transcript row, $0.05 per started minute of audio transcribed by Whisper, $0.01 per started minute of video downloaded, plus a small start fee per GB of run memory. URLs that end in ERRORS and URLs left out by maxItems or the free-plan limit are not charged.

Can I scrape private videos?

No. The actor reads only public videos. Private, login-only and password-protected videos go to ERRORS.

Why did my run take a while?

Caption-only runs take seconds per video. Whisper and MP4 downloads take longer: the audio or video has to be downloaded through the proxy, and Whisper needs roughly 0.3 to 1 second per second of audio at the default memory.

Can I mix platforms in one run?

Yes. Paste TikTok, YouTube and Loom links together in startUrls; each is routed to the right extractor.

Support

Found a bug or need a field added? Open an issue on the actor's Issues tab or email muhamed.didovic@gmail.com. Author's website: muhamed-didovic.github.io.

Additional Services

Need a custom transcript pipeline, a private version of this actor, or data from another platform? Email muhamed.didovic@gmail.com. API access to this scraper without the Apify fee is available on request.

Explore More Scrapers

Browse all actors on memo23's Apify profile.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/tiktok-transcript-extractor-cheerio).

Purpose: transcripts of TikTok, YouTube and Loom videos from their URLs, using the platforms' captions and Whisper AI for videos without captions.

Minimal input:

{ "startUrls": [{ "url": "https://www.tiktok.com/@stoolpresidente/video/7451747413649263915" }], "maxItems": 10 }

Output: one dataset row per transcribed video. TikTok: url, videoId, text, vtt, language, source, transcripts[], description, createTimeISO, durationSeconds, authorUsername, likeCount, commentCount, shareCount, playCount. YouTube: videoId, url, transcriptText, transcriptSource, transcript[] {text, startMs, endMs} or transcriptVtt (plus title, author, viewCount with includeYoutubeVideosDetails). Loom: url, title, creator, duration, transcript, transcriptVTT, transcriptSRT.

Behaviors an agent should know:

  • Set maxItems; it caps URLs per run. Free Apify plan runs take 20 URLs.
  • Failed and unsupported URLs are not rows: read the ERRORS key-value record (url, reason, message) and the run's status message.
  • Billing: $0.002 per row; Whisper $0.05 per started minute of audio; MP4 download $0.01 per started minute; small start fee per GB of memory. Misses are free.
  • whisperFallback: false skips caption-less videos at no cost.
  • Profiles, channels, playlists and private videos are not supported.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ByteDance Ltd. (TikTok), Google LLC (YouTube) or Loom, Inc., or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available video pages and their public caption tracks - no authenticated endpoints, paid features, or content behind a login wall. Users are responsible for ensuring their use complies with the Terms of Service of TikTok, YouTube and Loom, applicable data-protection law (GDPR, CCPA, etc.), copyright law, and any contractual obligations of their own organization.


SEO Keywords

tiktok transcript extractor, youtube transcript extractor, loom transcript extractor, tiktok transcript scraper, youtube transcript scraper, loom transcript, video transcript scraper, video to text, tiktok subtitles download, youtube subtitles download, loom video downloader, tiktok video downloader, whisper transcription, speech to text api, webvtt export, srt subtitles, transcript api, Apify transcript, content repurposing data, video content analysis, ai training transcripts, social media video intelligence