Video Transcripts + AI Summaries: YouTube, TikTok, Reels, X avatar

Video Transcripts + AI Summaries: YouTube, TikTok, Reels, X

Pricing

Pay per event

Go to Apify Store
Video Transcripts + AI Summaries: YouTube, TikTok, Reels, X

Video Transcripts + AI Summaries: YouTube, TikTok, Reels, X

Get transcripts from YouTube, TikTok, Instagram Reels, X/Twitter videos and podcasts in one run: plain text, timestamped segments, SRT and VTT. Native captions first, AI speech-to-text fallback, optional AI summary, key points and chapters. Failed URLs are free.

Pricing

Pay per event

Rating

0.0

(0)

Developer

RS Automation Labs

RS Automation Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Video Transcripts + AI Summaries: YouTube, TikTok, Instagram Reels, X & Podcasts

Get transcripts from YouTube, TikTok, Instagram Reels, X (Twitter) videos and podcasts in one run, as plain text, timestamped segments, SRT or VTT subtitles. The Actor uses the platform's native captions first, which is fast, exact and cheap. When a video has no captions, it falls back to AI speech-to-text. You can also add an AI summary, key points and timestamped chapters for every video.

No API keys needed. Speech-to-text and summaries run through Apify's official OpenRouter proxy and are billed at cost to your Apify account. Failed URLs are free: every URL gets its own row, and a broken link becomes a clear error row instead of failing the run.

What does Video Transcripts + AI Summaries do?

  • One Actor for every platform: YouTube videos, Shorts, playlists and channels, TikTok videos, Instagram Reels and video posts, X/Twitter video posts, podcast RSS feeds, Apple Podcasts links, and direct audio or video files (MP3, M4A, MP4, WAV, FLAC and more).
  • Captions first, speech-to-text second: it reads YouTube manual and auto-generated captions, TikTok/X subtitles and Podcasting 2.0 <podcast:transcript> files. Audio is only transcribed when no captions exist, so you only pay for speech-to-text when it is really needed.
  • Any language: choose a preferred language. YouTube captions can be machine-translated into it when that track is missing, and AI summaries can be written in any language.
  • Every output format: text, timestamped segments (start, end, text), srt and vtt. Optionally the Actor also saves .srt, .vtt and .txt files with download links.
  • AI summaries (optional): a summary, key points, chapters with timestamps, notable quotes and topics. You can pick any OpenRouter model.
  • Built for reliability: it rotates YouTube player clients, falls back to residential proxy automatically when a platform blocks a request, retries and switches models when the speech-to-text model is busy, and resumes after platform migrations. Errors come with a code and a plain-English hint.

Who is it for?

  • Content and SEO teams: turn videos and podcasts into blog posts, show notes, captions and quotes.
  • Researchers and analysts: collect what creators, brands or competitors actually say across YouTube, TikTok, Reels and X.
  • AI and RAG builders: clean, timestamped transcripts in JSON for embeddings, search and chatbots.
  • Social media managers: subtitles (SRT/VTT) for reposting, and summaries for reporting.
  • Developers: one API call, or a Make / Zapier / n8n step, for any video URL.

Why this Actor?

  • Multi-platform in one run. Most transcript Actors on the Store handle a single platform. Here you can paste a mixed list and get one consistent output schema.
  • Reliable by design. Captions are fetched with lightweight API calls and residential proxy fallback. In our cloud tests every YouTube, TikTok, Instagram and X video that contained speech was transcribed (see Tested success rates).
  • Cheap where it can be. A YouTube video with captions costs a single transcript event. Speech-to-text minutes are only charged for videos with no captions.
  • Honest errors. Deleted, private, music-only or DRM-protected content is reported with a reason (NOT_FOUND, LOGIN_REQUIRED, NO_SPEECH, DRM_PROTECTED, …), and those rows are free.

How to use it

  1. Paste one or more URLs into Video, reel, post or podcast URLs, one per line.
  2. Optional: set a preferred language such as en, es or hi.
  3. Optional: choose output formats (text and segments by default, plus SRT and VTT).
  4. Optional: switch on Add AI summary and choose the outputs you want.
  5. Click Start. Each URL becomes one row in the dataset. Export it as JSON, CSV, Excel or HTML, or fetch it via the API.

Input example

{
"urls": [
"https://www.youtube.com/watch?v=arj7oStGLkU",
"https://www.youtube.com/@TED/shorts",
"https://www.tiktok.com/@spacedotcom/video/7629097281974848782",
"https://www.instagram.com/reel/DAbM6HKiEY0/",
"https://x.com/SpaceX/status/2112502543947325773",
"https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
"https://feeds.npr.org/500005/podcast.xml"
],
"language": "en",
"outputFormats": ["text", "segments", "srt"],
"speechToText": "auto",
"aiSummary": true,
"aiOutputs": ["summary", "keyPoints", "chapters"],
"maxVideosPerChannel": 5,
"maxEpisodesPerFeed": 1
}

Supported URLs

PlatformSupported URLsHow the transcript is made
YouTubewatch?v=, youtu.be/, /shorts/, /live/, m.youtube.com, playlists, channels (/@name, /@name/videos, /@name/shorts)Manual captions → auto-captions → translated captions → speech-to-text
TikToktiktok.com/@user/video/…, vm.tiktok.com short linksSpeech-to-text from the video's audio. TikTok's own subtitles are used when they are offered.
Instagram/reel/…, /p/… (video posts), /tv/…Speech-to-text from the audio
X / Twitterx.com/…/status/…, twitter.com/…/status/…Subtitles if present, otherwise speech-to-text
PodcastsRSS feeds, Apple Podcasts show or episode linksPublished transcript (<podcast:transcript>) → speech-to-text of the episode audio
FilesDirect links to MP3, M4A, AAC, WAV, OGG, OPUS, FLAC, MP4, MOV, WEBMSpeech-to-text

Spotify episodes are DRM-protected and cannot be transcribed. Paste the show's RSS feed or Apple Podcasts link instead (you will get a clear DRM_PROTECTED row). Profile pages, hashtag pages and private or login-only content are not supported.

Output example

One row per URL (shortened):

{
"url": "https://www.youtube.com/watch?v=arj7oStGLkU",
"platform": "youtube",
"status": "ok",
"id": "arj7oStGLkU",
"title": "Inside the Mind of a Master Procrastinator | Tim Urban | TED",
"author": "TED",
"durationSeconds": 844,
"viewCount": 62099590,
"transcriptSource": "captions",
"language": "en",
"captionLanguagesAvailable": ["ar", "bg", "en", "es", "hi", "..."],
"wordCount": 2377,
"segmentCount": 315,
"text": "So in college, I was a government major, which means I had to write a lot of papers...",
"segments": [
{ "start": 12.64, "end": 14.02, "text": "So in college," },
{ "start": 15.35, "end": 16.91, "text": "I was a government major," }
],
"srt": "1\n00:00:12,645 --> 00:00:14,015\nSo in college,\n\n2\n00:00:15,349 --> 00:00:16,913\nI was a government major,\n...",
"summary": "Tim Urban, a self-proclaimed procrastinator, explains the internal struggle of procrastination through a humorous analogy involving three characters: the Rational Decision-Maker, the Instant Gratification Monkey and the Panic Monster...",
"keyPoints": ["...", "..."],
"chapters": [
{ "start": 12, "timestamp": "0:12", "title": "Normal vs. Procrastinator Workflows" },
{ "start": 44, "timestamp": "0:44", "title": "The 90-Page Thesis Disaster" },
{ "start": 235, "timestamp": "3:55", "title": "The Instant Gratification Monkey" }
],
"aiModel": "google/gemini-2.5-flash-lite",
"proxyUsed": "residential",
"chargedEvents": { "transcript": 1, "ai-summary": 1 },
"processedAt": "2026-10-22T12:53:51Z"
}

An error row is free and looks like this:

{
"url": "https://www.instagram.com/reel/AAAAAAAAAAA/",
"platform": "instagram",
"status": "error",
"errorCode": "LOGIN_REQUIRED",
"errorMessage": "Instagram sent an empty media response",
"errorHint": "The content is private, age-restricted or needs a logged-in account, which this Actor does not use."
}

Main fields

FieldDescription
statusok, error or skipped
platformyoutube, tiktok, instagram, x, podcast, media-file
transcriptSourcecaptions, auto-captions, translated-captions, podcast-transcript or speech-to-text
text, segments, srt, vttThe transcript in the formats you selected
subtitleFilesDownload links for saved .srt / .vtt / .txt files (when enabled)
title, author, publishedAt, durationSeconds, viewCount, likeCount, thumbnailUrlVideo or episode metadata where the platform provides it
podcastTitle, episodeUrl, audioUrlPodcast metadata
summary, keyPoints, chapters, quotes, topicsAI outputs (when enabled)
audioMinutes, sttModel, sttCostUsdSpeech-to-text usage for items without captions
aiModel, aiCostUsdAI summary model and its cost at OpenRouter prices
errorCode, errorMessage, errorHintWhy an item failed and what to do
chargedEventsWhat this row was charged

Dataset views and files

  • Overview: status, platform, title, source, words and summary for each URL.
  • AI summaries: summary, key points and chapters.
  • Errors: only the failed URLs, with reasons.
  • The key-value store holds the saved subtitle files and an OUTPUT run summary: success rate by platform, error counts, audio minutes and charges.

Error codes

CodeMeaning
NOT_FOUNDRemoved, private or wrong URL
LOGIN_REQUIRED / AGE_RESTRICTEDNeeds a logged-in account (not supported)
BLOCKEDThe platform blocked every proxy we tried. TikTok also returns this for deleted or region-locked posts.
NO_CAPTIONSNo captions, and speech-to-text is off
NO_AUDIO / NO_SPEECHNo audio track (for example a text or image post), or audio without speech (music only)
TOO_LONGLonger than Max audio minutes per item
DRM_PROTECTEDSpotify and other DRM audio
UNSUPPORTED_URL / INVALID_URLProfile, hashtag or unknown page
STT_FAILED / STT_CREDITSThe speech-to-text service failed, or your account is out of credit. Retry later.
FEED_ERRORThe podcast feed could not be read
BUDGET_LIMITYour Maximum cost per run was reached

How much does it cost?

This Actor uses pay-per-event pricing. You only pay for successful results:

EventPriceWhen
Transcript$0.004Each URL successfully transcribed, by captions or by speech-to-text
Audio minute$0.006Each started minute of audio transcribed with speech-to-text. Not charged when captions exist.
AI summary$0.003Each AI summary / key points / chapters block, only when you turn it on

Failed, skipped and empty URLs are free. There is no start fee.

AI model usage (speech-to-text and summaries) is billed separately to your Apify account at OpenRouter prices through Apify's OpenRouter proxy. On the Apify FREE plan, Apify bills proxy model usage at 10×. Add your own OpenRouter API key to pay OpenRouter directly at 1×.

ExampleActor eventsModel usage (paid plans)Total
1,000 YouTube videos with captions1,000 × $0.004$0$4.00
1,000 YouTube videos with captions + AI summary$4 + $3≈ $0.30–0.70≈ $7.50
100 TikToks / Reels (≈ 1 min each, speech-to-text)$0.40 + $0.60≈ $0.10≈ $1.10
One 30-minute podcast episode (no published transcript)$0.004 + $0.18≈ $0.02–0.04≈ $0.21

Measured model cost with the default model google/gemini-2.5-flash-lite: about $0.0007–0.0012 per audio minute for speech-to-text and $0.0001–0.003 per AI summary, depending on length and language (paid plans; ×10 on FREE). You can cap the total cost with Maximum cost per run in the run options. The Actor stops starting new items before the limit is reached.

Using your own OpenRouter API key (optional)

Paste an OpenRouter key into Your OpenRouter API key (it is stored as a secret). It gives you three things:

  • model usage is billed by OpenRouter directly, with no Apify FREE-plan multiplier;
  • Whisper models (openai/whisper-large-v3-turbo, whisper-large-v3, gpt-4o-mini-transcribe) unlock; they give precise segment timestamps;
  • your own rate limits.

FAQ

Does it work without captions? Yes. With Speech-to-text fallback set to auto (the default), any video without captions is transcribed from its audio. Set it to off to use captions only (cheapest), or to always to ignore captions.

How accurate is speech-to-text? The default Gemini 2.5 Flash Lite model is very good on clear speech in major languages. Timestamps are accurate to about one to two seconds. For the most precise timestamps, use a Whisper model with your own OpenRouter key, or gemini-2.5-flash for harder audio.

Can I get transcripts in another language? Set Preferred language. For YouTube, a matching caption track is used if it exists. Otherwise the captions are machine-translated (turn this off with Translate YouTube captions). Speech-to-text keeps the spoken language. Summary language lets you write the AI summary in any language.

Can I transcribe a whole YouTube channel or playlist? Yes. Paste the playlist or channel URL (for example https://www.youtube.com/@TED/videos). Up to Max videos per YouTube playlist / channel of the newest videos are processed.

Can I transcribe Spotify podcasts? No. Spotify audio is DRM-protected. Paste the podcast's RSS feed or Apple Podcasts link instead; almost every podcast has one.

Is it legal? The Actor reads only public content, never logs in, and uses captions and audio that the platforms serve to anyone. You are responsible for how you use transcripts of other people's content. Respect copyright and each platform's terms, especially for republishing.

Why did an Instagram Reel or X video return NO_SPEECH? Many reels and clips are music-only or use on-screen text with no voice. Those rows are free.

Can I use it through the API, Make, Zapier or n8n? Yes. Like every Apify Actor, it has a REST API, client libraries for JavaScript and Python, and integrations with Make, Zapier, n8n, Google Sheets, Slack and webhooks.

Tested success rates

Cloud runs on Apify, October 2026, with real speech-to-text (default settings):

PlatformURLs testedTranscribedCorrectly reported as no speech/audioExpected errors (fake/unsupported URLs)Success on videos with speech
YouTube (captions + speech-to-text, incl. Shorts, Korean auto-captions, Hindi)19161 (music-only Short)2 fake IDs → NOT_FOUND16 / 16
TikTok10801 deleted post → BLOCKED, 1 profile → UNSUPPORTED_URL8 / 8
Instagram Reels1062 (music-only reels)1 fake reel → LOGIN_REQUIRED, 1 profile → UNSUPPORTED_URL6 / 6
X / Twitter1162 no speech, 1 video without an audio track1 text-only post, 1 nonexistent post → NO_AUDIO6 / 6
Podcasts: published transcripts and feed/Apple resolution12all feeds and Apple links resolved—Spotify → DRM_PROTECTED, fake feed → FEED_ERROR, over-limit episodes → TOO_LONG100 %
Podcasts: speech-to-text of long episodes (beta)16 attempts5——31 %, see Limitations

Limitations

  • Beta: long-audio speech-to-text (podcasts, long videos without captions) is not yet reliable. In our tests, Apify's OpenRouter proxy often returned HTTP 500 ("socket hang up") on multi-chunk episodes, so 11 of 16 long-episode attempts failed with STT_FAILED (free, not charged). Short clips were unaffected. A retry or your own OpenRouter key usually helps.
  • Private, login-only, age-restricted and DRM content is not supported. No cookies or accounts are used.
  • Speech-to-text needs this Actor to run on the Apify platform (for the OpenRouter proxy) or your own OpenRouter key.
  • Timestamps from Gemini speech-to-text are approximate (about 1–2 s). Whisper (own key) is more precise.
  • NO_SPEECH detection depends on the model, and a clip with very quiet speech under loud music may be reported as no speech.
  • YouTube often blocks datacenter IPs. The Actor then uses residential proxy automatically, which is slower.
  • Default limits: 180 audio minutes per item and 5,000 URLs per run.

Support

Found a URL that should work but doesn't? Open an issue in the Issues tab with the URL and the run ID, and we will look at it quickly.