YouTube Subtitles & Transcript Scraper API
Pricing
$8.00 / 1,000 complete transcripts
YouTube Subtitles & Transcript Scraper API
Get public YouTube subtitles and full transcripts with timestamps from up to 5 video links.
Pricing
$8.00 / 1,000 complete transcripts
Rating
0.0
(0)
Developer
Cliqto Media
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Get public YouTube subtitles and transcripts as full text and timestamped segments.
Add up to 5 video IDs or links. The Actor gets one public subtitle track for each video. A successful result contains the full transcript and every subtitle time segment. You pay only when the Actor saves a complete result.
Use the Actor in Apify Console or call it through the Apify API. The same JSON result works in apps, scripts, AI tools, search indexes, and data pipelines.
What you get
Each successful video gives you one result with:
- the full subtitle transcript in the
textfield; - all subtitle parts in
segments, with start time and duration; - the selected language and subtitle type;
- the available public subtitle tracks;
- a clear note about how the Actor chose the track;
complete: truewhen the whole selected transcript was saved.
The Actor never cuts a successful transcript. If the full result is too large, it returns an error instead. This error is not charged as a complete transcript.
How to use it
- Add 1 to 5 YouTube video IDs or links.
- Choose the languages to try, such as
en,es, orde. - Choose manual or auto-generated subtitles.
- Start the Actor.
- Open Subtitle and transcript results to get the text and time segments.
The Actor accepts normal video links, youtu.be links, Shorts links, live links, and raw
11-character video IDs. It does not accept channel, playlist, or search links.
Use it as an API
Send the same input JSON through the Apify API. After the run, read the subtitle and transcript rows from the default Dataset. Each row has a stable status, video ID, text, and time segments.
Example input
{"videoUrls": ["M7lc1UVf-VE","https://youtu.be/dQw4w9WgXcQ"],"preferredLanguages": ["en", "de"],"languageFallback": "FIRST_AVAILABLE","captionPreference": "MANUAL_FIRST"}
Language settings
preferredLanguages is the list of languages to try. The Actor checks the list from left to
right. The default is English (en).
languageFallback tells the Actor what to do when an exact language is missing:
NONE: return an error;BASE_LANGUAGE: try a close language code, such asenforen-US;FIRST_AVAILABLE: use the first allowed subtitle track.
captionPreference chooses manual or auto-generated subtitles. The default is
MANUAL_FIRST. You can also allow only one subtitle type.
translateTo asks YouTube for a translation that the selected track offers. This is not AI
translation. Leave the field out when you do not need translation.
Example output
This short synthetic example shows the main fields:
{"status": "SUCCEEDED","complete": true,"videoId": "abcdefghijk","track": {"effectiveLanguageCode": "en","sourceIsGenerated": false,"isTranslated": false},"segments": [{"sequence": 0,"text": "Synthetic first caption.","startSeconds": 0,"durationSeconds": 1.5},{"sequence": 1,"text": "Synthetic second caption.","startSeconds": 1.5,"durationSeconds": 2}],"text": "Synthetic first caption. Synthetic second caption."}
The JSON export keeps every field and every segment. The table view shows the main fields for a quick check.
Pricing
You pay for each video that ends with a complete saved transcript. The event name is
transcript_succeeded. Videos with no available subtitles and other error results do not use this
event. Check the price box on the Actor page for the current price.
The Actor uses Apify Residential proxy for public YouTube requests. There is no separate Actor event for proxy traffic. Long transcripts can use more proxy data and take more time, but one complete video still counts as one result.
Use the run charge limit if you need a hard spending limit. When the limit is reached, the Actor stops new work and lists videos it did not process in the run summary.
Limits
- You can add up to 5 videos in one run.
- The Actor returns one selected subtitle track for each unique video.
- A transcript can contain up to 20,000 segments and 2,000,000 text characters.
- One saved JSON result must be smaller than 4 MiB.
- A run can take up to 10 minutes.
- Repeated video IDs are processed once and keep their input positions.
Not every YouTube video has public subtitles. The Actor does not create subtitles from audio. It cannot get private, paid, members-only, age-restricted, or geo-restricted content. A finished live video works only after YouTube shows a normal public subtitle track.
Complete results and errors
A successful result always has status: SUCCEEDED and complete: true. It contains all subtitle
segments returned for the selected track. A successful result is never cut or saved as a partial
transcript.
When the Actor cannot save a complete transcript, it returns a clear error row. Common codes are:
| What happened | Code |
|---|---|
| YouTube has no public subtitle track | CAPTIONS_NOT_AVAILABLE |
| The video is not available | VIDEO_UNAVAILABLE |
| The selected language is missing | LANGUAGE_NOT_AVAILABLE |
| The requested translation is missing | TRANSLATION_NOT_AVAILABLE |
| YouTube blocked the request | REQUEST_BLOCKED |
| The proxy connection failed | PROXY_ERROR |
| YouTube changed the transcript format | SOURCE_CHANGED |
| The full result is too large | TRANSCRIPT_OVERSIZE |
Open Run summary to see how many videos succeeded, failed, or were not processed. The run can finish on Apify even when one video returns an error, so always check the result rows.
Privacy and safe use
Inputs and outputs stay in your Apify run storage. The Actor does not send a copy to the creator or to an analytics service. It does not use your YouTube account, cookies, OAuth, or API key.
Delete the run data in Apify when you no longer need it. Do not send passwords, cookies, proxy links, signed URLs, or full transcripts in a support request.
Use the Actor only for content you may access and use. Public access does not give you copyright or reuse rights. Do not use the Actor to bypass access controls, watch people, infer sensitive traits, or share content unlawfully.
Troubleshooting
The input is not accepted
Check that each value is a video ID or a supported YouTube video link. Remove playlist, channel, search, embed, and non-YouTube links. A run can contain no more than 5 values.
The result says subtitles are not available
Open the video on YouTube and check whether a public subtitle track exists. Some public videos have no subtitles. The Actor does not create new text from audio.
The requested language is not available
Try another code in preferredLanguages. You can also use FIRST_AVAILABLE. Check
availableTracks in the error result to see the languages YouTube offered.
The result shows a proxy or block error
Try the run one more time later. YouTube can block or challenge public requests. If the problem continues, send the run ID and the error code to support.
The result is too large
The Actor does not cut the transcript. It returns TRANSCRIPT_OVERSIZE and does not charge the
complete-transcript event. Use a shorter video or contact support with the run ID.
FAQ
Does this work with every YouTube video?
No. YouTube must offer a public subtitle track for the video.
Does a successful result contain the full transcript?
Yes. It contains every segment returned for the selected track. If the full result cannot be saved, the Actor returns an error instead of a cut transcript.
Can I add a playlist or channel?
No. Add up to 5 direct video IDs or links.
Can the Actor make subtitles from audio?
No. It gets subtitles that YouTube already makes public. It does not download audio or use speech recognition.
Why does the Actor use Residential proxy?
Direct cloud requests are often blocked by YouTube. Residential proxy worked in repeated cloud tests for this Actor. It is used only to request public subtitles.
What do I pay for?
You pay for each complete transcript saved to the results. Error rows are not charged as complete transcripts. The Actor does not charge per segment or per proxy byte.
Need help?
Send the Apify run ID and the error code. You can also include the counts from Run summary. Never send cookies, passwords, proxy links, signed URLs, raw page data, or a full transcript.
Important notice
This is an independent Actor. It is not made, approved, or supported by YouTube or Google. It uses public YouTube pages, not an official transcript API. YouTube may limit automated access.
You are responsible for your inputs and use of the results. Follow the law, YouTube's terms, copyright rules, privacy rules, and access limits. This notice is not legal advice.