Video Transcript Scraper – YouTube, X, TikTok, Facebook
Pricing
from $10.50 / 1,000 results
Video Transcript Scraper – YouTube, X, TikTok, Facebook
Get transcripts from YouTube, X, TikTok, Facebook, Vimeo, Loom and more. Paste video, playlist or channel links and get full text, timestamped segments, title, channel, views and languages as clean JSON. Mix platforms, no account or login needed.
Pricing
from $10.50 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Video Transcript Scraper — full text, segments and video data
Video Transcript Scraper takes video, playlist or channel links from YouTube, X, TikTok, Facebook, Vimeo, Dailymotion, Loom, Rumble and similar sites, and returns each video's transcript as plain text and as timestamped segments, together with the title, channel, views, likes, languages and more. You can mix platforms in one run and paste as many links as you like. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a RAG pipeline. No account, login or cookies are needed, because it reads the captions that videos already publish. Use it to turn video libraries into searchable text.
Why choose this Video Transcript Scraper?
- Bulk and mixed links. One run can take videos, playlists, channels and
@handlesfrom different platforms. - Real-time output. Every finished video appears in the output table straight away, so you can watch the table fill while the run goes on.
- Separate tables per section. Besides the transcript table you get tables for timestamped segments, caption languages, channels, your links and videos without a transcript.
- Starts light, escalates only if needed. The run begins without a proxy. If a platform refuses the request, it switches to a datacenter proxy, then to a residential proxy, and keeps that proxy for the rest of the run.
- Honest about gaps. Videos with no captions are never invented; they are listed with the reason, or kept with empty text if you turn on best effort.
Key features
- Full transcript as one string (
text) plus timestampedtranscriptsegments with start, end and a jump link to that moment (YouTube and Vimeo). - Choose a caption language; if it is not available the closest one is returned and
language_notesays so. - Manual (human-written) captions are preferred over auto-generated ones, and
transcript_sourcetells you which you got. - Playlist and channel expansion with a total video limit.
- Duplicate links are removed, and
youtu.be/IDandwatch?v=IDcount as the same video. - Plain-language reasons for failures: private, removed, age-restricted, login required, region-locked, live, no captions, blocked.
Supported platforms
| Platform | What to expect |
|---|---|
| YouTube | Videos, Shorts, playlists, channels and @handles; manual and auto captions |
| Dailymotion | Videos that carry captions |
| X, TikTok, Loom | Video details are returned; a transcript is returned when the video carries captions |
| Facebook, Vimeo, Rumble | Accepted, but these sites often refuse automated requests or ask for a login, so some videos come back as failed |
Only captions that already exist are used. The Actor does not transcribe audio.
Input
Example input:
{"urls": ["https://www.youtube.com/watch?v=vl6jn-DdafM","https://www.youtube.com/@NASA/videos"],"maxVideos": 10,"language": "auto","bestEffort": false,"proxyConfiguration": { "useApifyProxy": false }}
| Field | Type | What it does |
|---|---|---|
🎬 urls | array, required | Video, playlist or channel links, one per line. Platforms can be mixed. |
📊 maxVideos | integer, default 10 | Total videos for the whole run. 0 means every video found. Free plan: up to 10 videos per run. |
🌍 language | string, default auto | Caption language code such as en, es, fr. auto returns the video's own language. |
🧩 bestEffort | boolean, default false | Keep videos without captions in the main table, with details and an empty transcript. |
🌐 proxyConfiguration | object | Optional. Default is no proxy; the run escalates by itself if the platform refuses. |
Output
Each video is one row in the Transcripts table. Example (shortened):
{"url": "https://www.youtube.com/watch?v=vl6jn-DdafM","status": "ok","platform": "youtube","video_id": "vl6jn-DdafM","title": "We Are Going","channel": "NASA","channel_id": "UCLA_DiR1FfKNvjuUpBHmylQ","channel_followers": 15100000,"published_date": "2019-05-14T20:34:54Z","duration": 227,"duration_string": "3:47","view_count": 17934893,"like_count": 1337804,"selected_language": "en","transcript_source": "manual","word_count": 591,"words_per_minute": 156,"text": "- [Narrator] 50 years ago we pioneered a path to the moon. The trail we blazed cut through ...","transcript": [{ "start": 2.36, "end": 5.26, "text": "- [Narrator] 50 years ago we pioneered a path to the moon.", "link": "https://www.youtube.com/watch?v=vl6jn-DdafM&t=2s" }]}
| Table | One row per | Main fields |
|---|---|---|
| Transcripts (default) | video | title, channel, view_count, like_count, selected_language, transcript_source, word_count, text, transcript |
| Transcript segments | caption segment | segment_number, timestamp, start, end, text, link |
| Caption languages | language a video offers | language, type (manual or auto), selected |
| Channels | channel or uploader | channel, channel_url, channel_followers |
| Your links | link you gave | kind, videos_found, status, note |
| Videos without a transcript | video that gave none | status, error |
A run summary (counts, timing) is also saved as RUN_SUMMARY in the key-value store. Fields the platform does not show, such as likes on some sites, stay null.
🚀 How to use (Apify Console)
- Log in at console.apify.com and open Actors.
- Find Video Transcript Scraper and open it.
- Paste your video, playlist or channel links into the first field.
- Set the maximum number of videos and, if you want, a language.
- Click Start.
- Watch the live log: each finished video is printed with its title, length, word count and language.
- Open the Output tab, switch between the tables, and export to JSON, CSV or Excel.
🤖 Use via API and MCP
Start the Actor from the Apify API, a schedule or an integration such as Make, n8n or Zapier, then read the dataset items. For AI agents, add the Apify MCP server with claude mcp add --transport http apify "https://mcp.apify.com"; the agent finds this Actor through the server's search, details and call tools.
Best use cases
- Build a searchable archive of a channel or playlist.
- Feed transcripts into summarisation, Q&A or RAG pipelines.
- Quote exact moments using the segment jump links.
- Compare what different creators say about a topic across platforms.
- Collect captions in several languages for translation or research.
Frequently asked questions
Is it legal to get transcripts? The Actor reads public data that any visitor can see. You are responsible for following the rules of each site and the laws that apply to how you use the text.
Why did a video come back without a transcript? The video has no captions, is private, removed, age-restricted, region-locked or live, or the platform refused the request. The reason is in the error field and in the failed inputs table.
How do I get another language? Set language to a code such as es. If the video offers no captions in that language, the closest available one is returned and language_note explains it.
Can it transcribe audio? No. It uses captions that already exist on the video.
What happens when a site blocks the run? The run moves from no proxy to a datacenter proxy and then a residential proxy, retries on fresh residential IPs, and keeps the residential proxy for the rest of the run.
Why are likes or channel followers empty? Some platforms do not show them, so the field stays null.
Support and feedback
Found a link that should work but does not? Open an issue on the Actor page with the link and the run URL.