๐ฌ YouTube Transcript Scraper
Pricing
from $5.00 / 1,000 results
๐ฌ YouTube Transcript Scraper
Turn any YouTube video, playlist or channel into clean, structured text. Bulk-extract transcripts and captions in 75 languages, plus views, likes, comments, keywords and thumbnails. Text array, plain text, WebVTT or SRT โ ready for AI training data, RAG pipelines, summarisation and SEO.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
19 hours ago
Last modified
Share
YouTube Transcript Scraper is an Apify Actor that extracts transcripts, subtitles and captions from YouTube videos, Shorts, playlists, channels and search keywords in bulk. Paste links or keywords and get one row per video, with the transcript as a text array, single-line text, WebVTT or SRT, plus optional channel, date, views and likes. Use it as a YouTube video transcript downloader and subtitle downloader, then export JSON, CSV or Excel. Pay per saved transcript, from $0.005 per result on the Gold plan. ๐ Try it free
What can YouTube Transcript Scraper do?
- ๐ Bulk YouTube transcript extractor - collect the captions of many videos in one run and skip copying by hand.
- ๐ฅ Bulk downloads - download YouTube transcripts in bulk with a simple YouTube transcript tool.
- ๐ Many source types - video links, Shorts links, playlists, channels and search keywords in the same run.
- ๐งพ Four transcript formats - text array, single-line text, WebVTT or SubRip (SRT) subtitles with timestamps, so YouTube subtitles in SRT and VTT are one setting away. Both creator-written and auto-generated captions can be collected.
- ๐ Multiple languages - get YouTube transcripts in multiple languages by picking a preferred caption language from 76 language codes.
- ๐ฌ Video metadata with transcript - scrape YouTube captions together with optional details: add channel, publish date, views, likes, comments, keywords, thumbnail and description with simple checkboxes.
- โก Live results - every transcript is written to the dataset as soon as it is ready.
- ๐ Export and integrations - JSON, CSV and Excel exports, the Apify API, schedules and webhooks.
What data can I extract from YouTube?
Every row always has the first three fields. The other fields are added only when you tick the matching option in the input.
| Field | Description |
|---|---|
๐ videoId | The YouTube video ID. Always included. |
๐ฌ title | The video title. Always included. |
๐ captions | The transcript in the format you chose: an array of caption lines for json, or a string for text, vtt and srt. Always included. |
๐บ channelName | Name of the channel that published the video. |
๐ channelID | The channel ID. |
๐
datePublished | Publish timestamp in ISO format, for example 2024-02-22T23:00:12.000Z. |
๐ dateText | Readable publish date, for example Feb 22, 2024. |
โณ relativeDateText | How long ago the video went live, for example 2 years ago. |
๐ viewCount | View count as text, for example 27,406,159 views. |
๐ likes | Number of likes as text, for example 564,840. |
๐ฌ comments | Number of comments as text, for example 30,915. |
๐ท keywords | The video tags as one comma-separated string. |
๐ thumbnailUrl | Direct link to the thumbnail image. |
๐ description | The full video description. |
YouTube Transcript Scraper only returns videos that have a caption track. Optional details can be empty or null when YouTube does not show them for a video.
What can you do with the data from YouTube?
๐ฏ Collect YouTube transcripts for AI training data and RAG
- Add your video, playlist or channel links to
urls. - Set
outputFormattojsonto get one clean line per caption, ready as transcript text for search and retrieval. - Send the dataset to your language model datasets or retrieval pipeline.
๐ฐ Repurpose YouTube videos into blog posts
- Paste the video links in
urlsand choosetextasoutputFormat. - Tick
descriptionBooleanandchannelNameBooleanto keep context next to each transcript. - Summarize YouTube videos, then turn the transcript into articles, quotes and newsletters for content marketing research.
๐ Run YouTube keyword research from transcripts
- Add topics to
searchKeywordsand setmaxVideosPerSourcefor topic research from videos. - Tick
viewCountBoolean,likesBooleanandkeywordsBoolean. - Compare transcripts, topics and engagement across channels for competitor video analysis and YouTube research and text analysis.
โฟ Create YouTube subtitles for accessibility and study lecture transcripts
- Add lecture or course links and set
outputFormattosrtorvtt. - Choose your
language. - Save the YouTube lecture subtitles for notes, translation or accessibility checks.
How do I use YouTube Transcript Scraper?
- Open YouTube Transcript Scraper on Apify and click Try for free.
- Add video, Shorts, playlist or channel links to
urls, or type topics intosearchKeywords. - Choose the
outputFormatand the preferred captionlanguage. - Tick the extra data points you want, such as channel name, views or likes.
- Set
maxVideosPerSourceand, if needed,maxResultsto control the size of the run. - Click Start and wait for the run to finish.
- Open the Dataset tab and export the transcripts as JSON, CSV or Excel.
How much does it cost to scrape YouTube transcripts?
YouTube Transcript Scraper uses pay-per-event pricing: you pay for each transcript saved to the dataset, and Apify platform usage is billed in addition. The price per result depends on your Apify plan.
| Plan | Price per result | Per 1,000 results |
|---|---|---|
| ๐ Free | $0.007 | $7.00 |
| ๐ฅ Bronze | $0.0063 | $6.30 |
| ๐ฅ Silver | $0.0056 | $5.60 |
| ๐ฅ Gold, Platinum and Diamond | $0.005 | $5.00 |
Each run also pays one start event at $0.00005 per GB of memory, minimum one. This Actor runs with 1 GB (1024 MB) by default, so the start of a run costs $0.00005.
Example: saving 200 transcripts on the Gold plan costs 200 x $0.005 = $1.00, plus the $0.00005 start event, with platform usage billed in addition.
Is scraping YouTube transcripts free?
Not entirely. Every saved transcript is charged at the price of your plan, shown in the table above, plus the small start event. Videos that are skipped, for example because they have no captions, are not saved as rows and are not charged as results.
How much does YouTube Transcript Scraper cost per 1,000 results?
1,000 transcripts cost $7.00 on the Free plan, $6.30 on Bronze, $5.60 on Silver and $5.00 on Gold, Platinum and Diamond, plus the $0.00005 start event and platform usage.
Input
Give the Actor at least one link in urls or one keyword in searchKeywords. All fields are optional, but a run with neither has nothing to process. Playlist and channel links are expanded into single videos, up to maxVideosPerSource each. Links you paste for single videos are never limited by that setting, and duplicate links are processed once.
Sources and limits
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
urls | array | No* | YouTube video, Shorts, short-link, playlist or channel links. | ["https://www.youtube.com/watch?v=Qb9s3UiMSTA"] |
searchKeywords | array | No* | Keywords. The top matching videos are added to the run. | ["python asyncio"] |
scrapeShorts | boolean | No | Include Shorts (60 seconds or less) found inside channels, playlists and searches. A Shorts link you paste is always processed. | false |
maxVideosPerSource | integer | No | Videos to take from each playlist, channel or keyword (1 to 1000). | 10 |
maxResults | integer | No | Overall ceiling for the whole run after links are expanded and de-duplicated (0 to 100000). 0 means no limit. | 0 |
*Provide at least one of urls or searchKeywords.
Transcript output
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
outputFormat | string | No | json (array of caption lines), text (one continuous string), vtt (WebVTT) or srt (SubRip). | json |
language | string | No | Preferred caption language code, such as en, es, fr, de, hi, ja, zh-Hans. If that language is missing, English is used, then any available track. | en |
Extra data points
| Field | Type | Required | Description | Default |
|---|---|---|---|---|
channelNameBoolean | boolean | No | Add channelName. | false |
channelIDBoolean | boolean | No | Add channelID. | false |
datePublishedBoolean | boolean | No | Add datePublished. | false |
dateTextBoolean | boolean | No | Add dateText. | false |
relativeDateTextBoolean | boolean | No | Add relativeDateText. | false |
viewCountBoolean | boolean | No | Add viewCount. | false |
likesBoolean | boolean | No | Add likes. | false |
commentsBoolean | boolean | No | Add comments. | false |
keywordsBoolean | boolean | No | Add keywords. | false |
thumbnailBoolean | boolean | No | Add thumbnailUrl. | false |
descriptionBoolean | boolean | No | Add description. | false |
Speed and reliability
| Field | Type | Required | Description | Default |
|---|---|---|---|---|
maxConcurrency | integer | No | Videos processed at the same time (1 to 16). | 4 |
requestDelaySecs | number | No | Pause in seconds before each request starts (0 to 10). | 1 |
maxRetries | integer | No | Attempts per video before it is skipped (3 to 12). | 8 |
proxyConfiguration | object | No | Optional network setting. Leave it off unless you need a specific network setup. | {"useApifyProxy": false} |
Input example
{"urls": ["https://www.youtube.com/watch?v=Qb9s3UiMSTA","https://www.youtube.com/@example"],"searchKeywords": ["python asyncio"],"scrapeShorts": false,"maxVideosPerSource": 10,"maxResults": 0,"outputFormat": "json","language": "en","channelNameBoolean": true,"datePublishedBoolean": true,"viewCountBoolean": true,"likesBoolean": true}
Output
Results go to the default dataset, one row per video, and appear as each transcript is ready. Download them as JSON, CSV or Excel from the Dataset tab or through the API. The dataset has five views: Quick View, Transcript, Channel & Publishing, Engagement Stats and Metadata & Media.
Dataset row with outputFormat set to json and the input above (values are fake examples):
{"videoId": "abc123XYZ00","title": "Example video title","channelName": "Example Channel","datePublished": "2024-02-22T23:00:12.000Z","viewCount": "27,406,159 views","likes": "564,840","captions": ["Welcome to this example video.","Today we cover the first topic."]}
With all extra options ticked, the row also contains channelID, dateText, relativeDateText, comments, keywords, thumbnailUrl (for example https://example.com/thumbnail.jpg) and description.
If any video is skipped, the run also saves a skipped-videos.json record in the key-value store, listing each skipped link and the reason:
[{"url": "https://www.youtube.com/watch?v=abc123XYZ00","reason": "No transcript available for this video"}]
Notes and limitations
- Only videos that have captions can return a transcript. Videos without captions are skipped and listed in
skipped-videos.json. viewCount,likesandcommentsare text values, andkeywordsis one comma-separated string.- Shorts found in channels, playlists and searches are skipped unless
scrapeShortsis on. - Rows can arrive in a different order than your links, because several videos are processed at the same time.
- A very large transcript is trimmed so it fits in one dataset row.
- If a run reaches the spending limit you set, it stops and keeps the transcripts saved so far.
FAQ
Is it legal to scrape YouTube transcripts?
YouTube Transcript Scraper collects publicly visible captions and video details. Whether your use is lawful depends on your country, your purpose and how you use the content, including copyright and platform terms. Read this overview on web scraping legality. This is not legal advice; ask a lawyer if unsure.
Do I need an account, cookies or an API key?
No. YouTube Transcript Scraper does not ask for a YouTube account, cookies or an API key. You only need an Apify account to run it. Add your links or search keywords, choose the format and language, and start the run. Public videos with captions work without any extra setup on your side.
How many videos can I get per run?
Single video links are all processed. For each playlist, channel or keyword you can take 1 to 1,000 videos with maxVideosPerSource, and maxResults adds an overall cap for the run. Set maxResults to 0 for no overall cap. Start with the default of 10 per source for a quick test.
Which languages are supported for YouTube transcripts?
Choose json for a text array, text for one continuous string, vtt for WebVTT or srt for SubRip subtitles with timestamps. Pick a preferred caption language from 76 language codes. If the video has no track in that language, English is used first, then any available track.
What happens when a video has no transcript?
The video is skipped, no row is saved and no result is charged for it. The run keeps going with the other videos. At the end, a skipped-videos.json record in the key-value store lists each skipped link and the reason, so you can check them or retry later.
Can I export YouTube transcripts to CSV or Excel?
Yes. Open the Dataset tab after the run and export the rows as JSON, CSV or Excel, or download them through the API. For spreadsheets, text is usually the easiest format because the whole transcript fits in one cell. Use srt or vtt when you need timestamps.
Can I schedule YouTube transcript scraping or connect other tools?
Yes. Because this is an Apify Actor, you can schedule runs, trigger webhooks when a run finishes and connect the dataset to other tools with Apify integrations. This suits recurring jobs, such as checking a channel for new videos every week with the same input.
Can I use YouTube Transcript Scraper with the Apify API or an MCP server?
Yes. You can start runs and read the dataset through the Apify API, and you can call Actors from MCP-compatible AI tools through Apify. See the Apify API documentation for endpoints, authentication and usage details, and the ready-made API examples shown on this Actor page.
Why am I getting fewer transcripts than expected?
The most common reasons are videos without captions, private or unavailable videos, Shorts skipped because scrapeShorts is off, and low values in maxVideosPerSource or maxResults. Open skipped-videos.json for the reason per video. If requests were refused, try again in a few minutes or lower maxConcurrency for a gentler run.
YouTube Transcript Scraper not working?
First check the run log and skipped-videos.json for the reason, then test with a single public video link that has captions. If the problem continues, open a report in the Issues tab with your run link and input, and we will look into it.
Related Actors
| Actor | Use it to |
|---|---|
| ๐ฌ YouTube Comments Scraper | Extract YouTube video comments and replies with author, text, likes and publish date. |
| โก Fast YouTube Channel Scraper | Scrape a channel's Videos, Shorts and Live tabs with view, like and comment counts. |
| ๐ฑ YouTube Shorts Scraper | Extract YouTube Shorts from any channel with views, likes, comments and hashtags. |
| โถ YouTube Scraper | Scrape YouTube videos, channels, playlists and search results with engagement data. |
Support and disclaimer
Found a bug or need a feature? Open an issue in the Issues tab. For custom solutions, integrations or questions, write to hello.dataminds@gmail.com. YouTube Transcript Scraper is independent and not affiliated with YouTube or Google. Trademarks belong to their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the platform's terms.
Last updated: 2026-10-17