Video Transcripts + AI Summaries: YouTube, TikTok, Reels, X
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
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, timestampedsegments(start,end,text),srtandvtt. Optionally the Actor also saves.srt,.vttand.txtfiles 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
- Paste one or more URLs into Video, reel, post or podcast URLs, one per line.
- Optional: set a preferred language such as
en,esorhi. - Optional: choose output formats (text and segments by default, plus SRT and VTT).
- Optional: switch on Add AI summary and choose the outputs you want.
- 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
| Platform | Supported URLs | How the transcript is made |
|---|---|---|
| YouTube | watch?v=, youtu.be/, /shorts/, /live/, m.youtube.com, playlists, channels (/@name, /@name/videos, /@name/shorts) | Manual captions → auto-captions → translated captions → speech-to-text |
| TikTok | tiktok.com/@user/video/…, vm.tiktok.com short links | Speech-to-text from the video's audio. TikTok's own subtitles are used when they are offered. |
/reel/…, /p/… (video posts), /tv/… | Speech-to-text from the audio | |
| X / Twitter | x.com/…/status/…, twitter.com/…/status/… | Subtitles if present, otherwise speech-to-text |
| Podcasts | RSS feeds, Apple Podcasts show or episode links | Published transcript (<podcast:transcript>) → speech-to-text of the episode audio |
| Files | Direct links to MP3, M4A, AAC, WAV, OGG, OPUS, FLAC, MP4, MOV, WEBM | Speech-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
| Field | Description |
|---|---|
status | ok, error or skipped |
platform | youtube, tiktok, instagram, x, podcast, media-file |
transcriptSource | captions, auto-captions, translated-captions, podcast-transcript or speech-to-text |
text, segments, srt, vtt | The transcript in the formats you selected |
subtitleFiles | Download links for saved .srt / .vtt / .txt files (when enabled) |
title, author, publishedAt, durationSeconds, viewCount, likeCount, thumbnailUrl | Video or episode metadata where the platform provides it |
podcastTitle, episodeUrl, audioUrl | Podcast metadata |
summary, keyPoints, chapters, quotes, topics | AI outputs (when enabled) |
audioMinutes, sttModel, sttCostUsd | Speech-to-text usage for items without captions |
aiModel, aiCostUsd | AI summary model and its cost at OpenRouter prices |
errorCode, errorMessage, errorHint | Why an item failed and what to do |
chargedEvents | What 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
OUTPUTrun summary: success rate by platform, error counts, audio minutes and charges.
Error codes
| Code | Meaning |
|---|---|
NOT_FOUND | Removed, private or wrong URL |
LOGIN_REQUIRED / AGE_RESTRICTED | Needs a logged-in account (not supported) |
BLOCKED | The platform blocked every proxy we tried. TikTok also returns this for deleted or region-locked posts. |
NO_CAPTIONS | No captions, and speech-to-text is off |
NO_AUDIO / NO_SPEECH | No audio track (for example a text or image post), or audio without speech (music only) |
TOO_LONG | Longer than Max audio minutes per item |
DRM_PROTECTED | Spotify and other DRM audio |
UNSUPPORTED_URL / INVALID_URL | Profile, hashtag or unknown page |
STT_FAILED / STT_CREDITS | The speech-to-text service failed, or your account is out of credit. Retry later. |
FEED_ERROR | The podcast feed could not be read |
BUDGET_LIMIT | Your Maximum cost per run was reached |
How much does it cost?
This Actor uses pay-per-event pricing. You only pay for successful results:
| Event | Price | When |
|---|---|---|
| Transcript | $0.004 | Each URL successfully transcribed, by captions or by speech-to-text |
| Audio minute | $0.006 | Each started minute of audio transcribed with speech-to-text. Not charged when captions exist. |
| AI summary | $0.003 | Each 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×.
| Example | Actor events | Model usage (paid plans) | Total |
|---|---|---|---|
| 1,000 YouTube videos with captions | 1,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):
| Platform | URLs tested | Transcribed | Correctly reported as no speech/audio | Expected errors (fake/unsupported URLs) | Success on videos with speech |
|---|---|---|---|---|---|
| YouTube (captions + speech-to-text, incl. Shorts, Korean auto-captions, Hindi) | 19 | 16 | 1 (music-only Short) | 2 fake IDs → NOT_FOUND | 16 / 16 |
| TikTok | 10 | 8 | 0 | 1 deleted post → BLOCKED, 1 profile → UNSUPPORTED_URL | 8 / 8 |
| Instagram Reels | 10 | 6 | 2 (music-only reels) | 1 fake reel → LOGIN_REQUIRED, 1 profile → UNSUPPORTED_URL | 6 / 6 |
| X / Twitter | 11 | 6 | 2 no speech, 1 video without an audio track | 1 text-only post, 1 nonexistent post → NO_AUDIO | 6 / 6 |
| Podcasts: published transcripts and feed/Apple resolution | 12 | all feeds and Apple links resolved | — | Spotify → DRM_PROTECTED, fake feed → FEED_ERROR, over-limit episodes → TOO_LONG | 100 % |
| Podcasts: speech-to-text of long episodes (beta) | 16 attempts | 5 | — | — | 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_SPEECHdetection 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.