YouTube Transcript & Subtitles Scraper - Bulk & Channels
Pricing
from $1.40 / 1,000 results
YouTube Transcript & Subtitles Scraper - Bulk & Channels
Get YouTube transcripts and subtitles as clean text with timestamps, from videos, Shorts, playlists or whole channels. Any language. $2 per 1,000, and videos without captions are never charged.
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Pretorius
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Transcript & Subtitles Scraper
Turn YouTube videos into text. Paste video, Shorts, playlist or channel URLs and get back one JSON row per video with the full transcript, timestamped segments and video details. Works with any caption language, manual or auto-generated.
$2 per 1,000 transcripts. Videos that have no captions, or that fail, are never charged.
Sample output
Three real rows from a run on 22 Oct 2026 (one JSON row per video; segments holds the timestamped lines):
| video_id | channel | language | auto-generated | word_count | segments |
|---|---|---|---|---|---|
| jNQXAC9IVRw | jawed | en | false | 39 | 6 |
| dQw4w9WgXcQ | Rick Astley | en | false | 487 | 61 |
| 9bZkp7q19f0 | officialpsy | ko | true | 194 | 67 |
transcript_text for the first row starts: "All right, so here we are, in front of the elephants..."
What you get
For each video:
- The full transcript as one clean string, ready for an LLM, a search index or a document
- Timestamped segments (
start,duration,text) for subtitles, quotes and chapter work - Title, channel, channel ID, duration and view count
- Which caption language you got, whether it was auto-generated, and every language the video offers
Quick start
- Paste one or more YouTube links into Video URLs or IDs.
- Set Language to the caption language you want (for example
en,es,de,pt,ko). - Click Start. Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.
Input example
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/jNQXAC9IVRw","https://www.youtube.com/shorts/VIDEO_ID","https://www.youtube.com/playlist?list=PLAYLIST_ID","https://www.youtube.com/@3blue1brown"],"language": "en","preferManual": true,"includeTimestamps": true,"plainText": true,"expandPlaylists": true,"maxItems": 200}
Accepted links: watch?v=, youtu.be/, /shorts/, /embed/, /live/ and bare 11-character video IDs. Playlist links (?list=) and channel links (/@handle or /channel/UC...) are expanded into their videos when Expand Playlists is on.
Input options
| Field | Default | What it does |
|---|---|---|
videoUrls | one sample video | Video links or IDs. Playlist and channel links when expandPlaylists is on |
language | en | Preferred caption language code |
preferManual | true | Use human-written captions before auto-generated ones |
includeTimestamps | true | Return the timestamped segments list |
plainText | true | Return the whole transcript as one string in transcript_text |
expandPlaylists | false | Expand playlist and channel links into individual videos |
maxItems | 100 | Maximum number of videos per run (up to 10,000) |
Output example
{"video_id": "dQw4w9WgXcQ","video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","channel": "Rick Astley","channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw","duration_seconds": 213,"view_count": 1815620592,"published_at": null,"language": "en","is_auto_generated": false,"available_languages": ["en", "en (auto)", "de-DE"],"transcript_text": "[music] We're no strangers to love You know the rules and so do I ...","segments": [{ "start": 0.0, "duration": 2.4, "text": "[music]" },{ "start": 18.88, "duration": 3.28, "text": "We're no strangers to love" }],"word_count": 487,"route": "direct","error": null}
Output fields
| Field | Description |
|---|---|
video_id, video_url | The video |
title, channel, channel_id | Video and channel details |
duration_seconds, view_count | Length and views |
is_live | True for live streams and past live streams |
language | Language code of the transcript you received |
is_auto_generated | True if YouTube generated the captions automatically |
available_languages | Every caption track on the video, auto tracks marked (auto) |
transcript_text | Full transcript as one string (null if plainText is off) |
segments | List of {start, duration, text} (null if includeTimestamps is off) |
word_count | Number of words in the transcript |
route | Network route used for the video (direct, datacenter or residential) |
published_at | Always null. YouTube's mobile API does not return it |
error | Always null in the results. Failed videos go to a separate free list (see below) |
Pricing
You pay $2.00 per 1,000 transcripts delivered, which is $0.002 per video. There is also a start fee of $0.00005 per GB of run memory, which is a fraction of a cent per run.
You are only charged for rows in the results dataset. Videos that can't be transcribed (no captions, private, deleted, age-restricted, or blocked by YouTube after every retry) are never written there. Instead they are listed with the reason in the run's OUTPUT record and in a separate failed-videos dataset, at no charge.
Use cases
- LLM and RAG pipelines. Feed clean transcript text into ChatGPT, Claude or a vector database to summarise videos or answer questions about them.
- Content repurposing. Turn videos and podcasts into blog posts, newsletters, show notes and social posts.
- Research. Pull every talk from a channel or playlist and search, quote or analyse what was said.
- Subtitles and quotes. Use the timestamped segments to find the exact moment something was said.
- SEO and competitor research. See what topics and keywords other channels cover.
How it works
Transcripts come from YouTube's own caption tracks through its mobile player API, not from scraping the web page. YouTube often blocks cloud servers, so when a request is refused the actor retries that video through fresh proxy IPs (datacenter first, then residential). Retries are included in the price.
In tests on 27 September 2026 it delivered 30 of 33 random videos across 7 languages. The 3 misses had no captions at all. A 3.5-hour podcast came back at 29,466 words, and transcripts matched YouTube's own transcript view at about 97%.
Limitations
- Videos with no captions at all can't be transcribed. This is common for music videos and sports highlights. They are reported free of charge.
- If the language you ask for isn't available, you get the best track the video has (manual first, then auto-generated). The
languagefield tells you which one you got. - Channel links return the channel's latest uploads from its Videos tab.
- A link that contains both a video and a playlist (
watch?v=...&list=...) is treated as that single video. Use theplaylist?list=link to get the whole playlist.
Calling it from code or AI agents
Run it from the Apify API, the JavaScript or Python clients, Make, Zapier or n8n, or from AI agents through Apify's MCP server. Each run returns a dataset you can read as JSON or CSV.