YouTube Transcript Scraper - Timestamps, SRT and Metadata
Pricing
from $10.00 / 1,000 result items
YouTube Transcript Scraper - Timestamps, SRT and Metadata
Get YouTube transcripts from video URLs or IDs: timestamped segments, plain text, word count, optional SRT, plus title, channel, views and caption languages. Creator-made captions come first. Videos without captions get a free error row. 37 of 37 test requests returned a transcript.
Pricing
from $10.00 / 1,000 result items
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
40
Total users
9
Monthly active users
6 days ago
Last modified
Categories
Share
YouTube Transcript Scraper - Timestamps, SRT and Metadata
Get the full transcript of any public YouTube video that has captions, from a URL or a video ID. Each video comes back as one row with timestamped segments, the plain text, a word count, an optional SRT file and the video metadata (title, channel, duration, views, likes, upload date, tags, caption languages). You do not need an API key or a quota.
Tested on September 24, 2026: 37 of 37 transcript requests came back, across 10 captioned videos in 18 runs (English and Spanish, creator-made and auto-generated captions). Each run finished in 4.3 to 11.1 seconds.
You pay only for videos that return a transcript. A video with no captions gets a row that says why, with its metadata, and that row is free. There is no start fee today; see Pricing for the fee scheduled on October 7, 2026.
YouTube's official API needs OAuth and quota, and it only returns captions for videos you own. This Actor reads the same caption tracks the YouTube player uses. When a video has both a creator-made track and an auto-generated one, you get the creator-made track.
| Who uses it | What they scrape YouTube for |
|---|---|
| Content marketers | Repurpose video content into blog posts, social snippets, or SEO articles |
| Market researchers | Analyze what competitors say in their videos without watching them |
| Podcast producers | Turn video interviews into searchable text and show notes |
| Data scientists | Build datasets of spoken content for NLP and sentiment analysis |
| Accessibility teams | Generate accurate captions and transcripts for video libraries |
What it does
This Actor takes YouTube video URLs or video IDs and returns one row per video with the transcript and the video's metadata.
- π Segmented JSON transcript: every line with its start time, duration, and text, ready for analysis.
- ποΈ SRT subtitle export: optional SRT file per video, billed per video, for direct use in players.
- π Language selection: pick any ISO language code (en, es, fr...) or leave empty for the spoken language.
- π Flexible input: feed video URLs, video IDs, or both, and cap the run with maxItems.
Each row also says which caption track was used (captionType is manual or auto-generated, plus captionTrackName) and lists every caption language the video offers.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with YouTube data
π Repurpose video content.
A content marketer feeds a list of YouTube video URLs and gets full transcripts to turn into blog posts, newsletters, and social media copy.
π Competitor research.
A market researcher scrapes transcripts from competitor videos to identify talking points, product mentions, and messaging without watching hours of footage.
ποΈ Podcast transcription.
A podcast producer extracts transcripts from video interviews to create searchable show notes and improve SEO.
π NLP dataset building.
A data scientist collects thousands of transcripts by video ID to train sentiment analysis or topic modeling models.
βΏ Accessibility compliance.
An accessibility team scrapes transcripts and SRT files to add captions to an existing video library.
Why choose this scraper
| What you get | |
|---|---|
| No API key or quotas | Reads the public caption tracks directly, with no OAuth or daily limits. |
| Creator captions first | When a video has a human-made track, you get it instead of the auto-generated one. |
| Metadata on every row | Title, channel, duration, views, likes, upload date, tags and caption languages, even on rows without a transcript. |
| Free error rows | A video without captions returns a row with the reason and is not billed. |
| A run that failed says so | If no video in the run returns a transcript, the run ends as FAILED instead of SUCCEEDED with an empty dataset. |
Common complaints about transcript scrapers, and what this Actor does
These come from the 1 and 2 star reviews on the most used YouTube transcript Actor in the Apify Store, and from a 3 star question about its pricing.
"Did not give response to the video." Every video you send gets a row. If there is no transcript, the error field says why: no captions on the video, only auto-generated captions when you turned them off, or the video is private or removed. That row still carries the title, channel and caption languages, and you are not charged for it.
"Worked very well, but now it stopped." YouTube changes things, and any scraper can break. This Actor makes a breakage visible. When not a single video in a run returns a transcript, the run ends as FAILED with the reason in the status message, so a scheduled job or an API integration notices at once.
"Does $7 per 1000 items mean 1000 transcriptions?" Here, yes. One billed item is one video with its complete transcript, however long the video is. The 58-minute NASA press conference in our tests (1,590 segments, 10,129 words) was one item.
How it compares
Same videos, same day (September 24, 2026), against the most used transcript Actor in the Store, pintostudio/youtube-transcript-scraper.
| This Actor | pintostudio/youtube-transcript-scraper | |
|---|---|---|
| Captioned test videos returned | 6 of 6 | 6 of 6 |
| Time per run | 4.3 to 11.1 s | 4.4 to 6.0 s |
| Videos per run | Many (URL list, ID list, or both) | One videoUrl per run |
| Timestamped segments | Yes | Yes |
| Plain text, word count, SRT | Yes | No, segments only |
| Video metadata and caption languages | Yes, on every row | No |
| Which track when there are several | Creator-made first, captionType says which | Not shown |
| Video with no captions | Error row with the reason, not billed | Empty data: [] row, billed |
Configure the run
Give the Actor video URLs, video IDs, or both. Set a language if you want a specific one, and cap the run with maxItems. The Input tab lists every parameter. We ran each example below on September 24, 2026; the result is under it.
1. One video (the default input).
{"startUrls": [{ "url": "https://www.youtube.com/watch?v=UF8uR6Z6KLc" }],"maxItems": 10}
Result: 1 row, 244 segments from the creator-made English track.
2. Several videos by ID.
{"videoIds": ["iG9CE55wbtY", "arj7oStGLkU", "H14bBuluwB8"]}
Result: 3 rows with 427, 315 and 117 segments, all creator-made English tracks.
3. A specific language.
{"startUrls": [{ "url": "https://www.youtube.com/watch?v=XUqrvbsTfck" }],"language": "es"}
Result: 1 row, 365 segments from the Spanish track.
4. A short link with an SRT file.
{"startUrls": [{ "url": "https://youtu.be/H14bBuluwB8" }],"includeSrt": true}
Result: 1 row with 117 segments and the SRT text in transcriptSrt. The SRT is billed as its own event.
5. Creator-made captions only.
{"videoIds": ["arj7oStGLkU", "BbPeeZLKrT0"],"includeAutoGenerated": false}
Result: 1 transcript (315 segments) and 1 unbilled row for BbPeeZLKrT0, which only has auto-generated captions.
Pricing
Pay per event. You pay for each video that comes back with a transcript. Rows that report an error are free.
| Your Apify plan | Per transcript | Per 1,000 transcripts | SRT export, per video |
|---|---|---|---|
| Free | $0.015 | $15.00 | $0.0045 |
| Bronze | $0.0133 | $13.30 | $0.00399 |
| Silver | $0.0117 | $11.70 | $0.00351 |
| Gold and above | $0.010 | $10.00 | $0.003 |
There is no start fee today. From October 7, 2026 a start fee of $0.005 per run is scheduled (one charge at the default 1,024 MB of memory, one more for each extra GB if you raise the memory). The Pricing tab always shows the live numbers.
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the YouTube Transcript Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to YouTube through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/youtube-transcript-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why does a row have an error instead of a transcript?
The error field gives the reason. "No subtitles available for this video" means the video has no caption track at all, so there is nothing to read. "Manual subtitles not available" means you turned off auto-generated captions and the video only has those. "Video not available" means it is private, removed or blocked. "Could not load captions" means YouTube refused several attempts in a row; run the video again. These rows are not billed.
Why is the transcript in the wrong language?
Set the language field to the ISO code you want. If the video has no track in that language, you get the spoken language. availableSubtitleLanguages and availableAutoCaptionLanguages show what the video offers.
Why is the SRT field empty?
Set includeSrt to true. With it off, transcriptSrt stays empty and you are not charged for it.
Why did the run stop before processing all my videos?
Check maxItems. The Actor stops after that many videos. Free-plan runs stop at 10.
Why did my run end as FAILED?
No video in the run returned a transcript. The status message lists the first errors. You were not charged for those rows.
FAQ
| Question | Answer |
|---|---|
| Does this work for auto-generated captions? | Yes. When a video only has auto-generated captions you get those, and captionType says auto-generated. Turn off includeAutoGenerated to skip them. |
| Which track do I get when there are several? | The track in your chosen language if it exists. Otherwise the spoken language, with the creator-made track ahead of the auto-generated one. |
| Can I get the transcript in a specific language? | Yes, set the language field to an ISO code like en, es, or fr. If the video has no track in that language, you get the spoken language. |
| What is the difference between the JSON transcript and the SRT export? | The JSON transcript is an array of segments with start time, duration, and text. The SRT export is the same text as a subtitle file, in the transcriptSrt field. SRT is billed per video and is off by default. |
| How many videos can I scrape in one run? | Up to 1,000,000 with maxItems. The Actor works through 10 videos at a time. |
| Do I need a YouTube API key? | No. There are no API keys, OAuth, or daily quotas. |
| Can I input a YouTube channel or playlist URL? | No, only single videos. To get every video of a channel or playlist, run the YouTube Scraper first and paste its url column here. |
| What output formats are supported? | CSV, JSON, Excel, or XML from the Dataset tab or the API. |
| Does it work with age-restricted or private videos? | Private videos do not work, and age-restricted videos may not return a transcript. When no transcript comes back, you get an error row that is not billed. |
| Is the transcript returned as one string or segmented? | Both. transcriptPlainText has the full text and transcript has the timestamped segments. |
| Can I run this on a schedule? | Yes, you can schedule recurring runs in Apify to collect new transcripts automatically. |
Next step
Each transcript row names its video and its channel, so you can keep going with the other ParseForge YouTube Actors:
- YouTube Comments Scraper - Replies and Likes: put the
urlcolumn instartUrlsto see how viewers reacted to what was said. - YouTube Scraper - Search, Channels and Playlists: put the
channelUrlcolumn instartUrlsto list the channel's other videos, then feed theirurlcolumn back here. It is also the quickest way to get video URLs from a search or a playlist. - YouTube Shorts Scraper - 35 Fields Per Short: put the
channelUrlcolumn inchannelsto get the channel's Shorts, then send theirurlcolumn here for the captions. Use the@handlelinks: the Shorts Scraper does not read/channel/UC...links yet. - YouTube Channel Scraper - Stats and Video List: put the
channelUrlcolumn (orchannelId) instartUrlsto get the channel's subscribers, total views, video count and latest uploads.
Related actors
Browse the full ParseForge collection for more scrapers.
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by YouTube LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
