YouTube Transcripts: Any Language, Auto-Captions, SRT
Pricing
from $2.80 / 1,000 transcripts
YouTube Transcripts: Any Language, Auto-Captions, SRT
Get YouTube transcripts in any language, including Arabic. Picks manual or auto captions in your order, can use YouTube's translation, expands playlists and channels, adds chapters. Videos without captions are free.
Pricing
from $2.80 / 1,000 transcripts
Rating
0.0
(0)
Developer
Dottti
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
YouTube Transcript Scraper — Any Language, Playlists, SRT
Get the transcript of any public YouTube video. Paste video links, a playlist or a channel. Pick the languages you want, in order. You get one row per video with the text, the timed lines and a clear status.
What it does
- Reads the same caption tracks the YouTube player shows.
- Picks the first language in your list that the video has. Inside one language, it picks the manual track before the auto-generated one.
- Works with any language code YouTube uses, including Arabic (
ar), right-to-left text included. - Can ask YouTube for its own machine translation when your language is missing.
- Expands playlists and channels into their videos, up to a limit you set.
- Splits the transcript by the chapter timestamps in the description. Each chapter gets its first and last spoken line and a word count. No AI is used.
- Gives every video a status, so one video without captions never fails the run.
Input
| Field | What it does |
|---|---|
urls | Video links or IDs, playlist links, or channel links (@handle, /channel/UC...). |
preferredLanguages | Language codes in order, for example ["ar", "en"]. Default ["en"]. |
allowAutoGenerated | Use YouTube speech-recognition captions when no manual track exists. Default on. |
translateTo | Optional. Output language. A native track is used if it exists; otherwise YouTube translation is requested. |
allowTranslation | Ask YouTube to translate when your languages are missing. Default on. |
fallbackToAnyLanguage | If the wanted language is missing, return the video's own track. Default on. |
outputFormat | segments (timed lines plus text), text, srt, or all. |
includeChapters | Chapters with first and last line per chapter. Default on. |
maxVideos, maxVideosPerList | Caps on videos, and therefore on cost. |
Example:
{"urls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/playlist?list=PL2jdOr9oJl6L3SZwO8atLeLOJN52BgPpE"],"preferredLanguages": ["ar", "en"],"outputFormat": "segments","maxVideosPerList": 20}
Output
One row per video:
| Field | Meaning |
|---|---|
status | ok, no_captions, blocked or unavailable. |
videoId, url, title, channel, channelId, durationSec | Video details. |
language | Language of the returned text. |
sourceLanguage | Track it came from. Differs from language only when translated. |
isAutoGenerated | true for YouTube speech-recognition captions. |
isTranslated | true when YouTube machine translation was used. |
segments | [{ "start": 18.64, "duration": 3.24, "text": "..." }], times in seconds. |
text | The whole transcript as one string. |
srt | SubRip subtitle text, when asked for. |
wordCount, segmentCount | Size of the transcript. |
firstLine, lastLine | First and last spoken line. |
chapters | [{ title, startSec, endSec, firstLine, lastLine, wordCount }]. |
chaptersSource | description when the video has chapter stamps, fixed_blocks for 5-minute blocks. |
availableLanguages | Every track the video has. (auto) marks auto-generated ones. |
message | Plain explanation when something differs from what you asked. |
Sample row (shortened):
{"videoId": "4i7c8g5lA5U","title": "العبقري الذي أضاء العالم | الدحيح","status": "ok","language": "ar","isAutoGenerated": false,"isTranslated": false,"availableLanguages": ["ar", "ar (auto)", "en"],"wordCount": 4435,"durationSec": 1483,"segments": [{ "start": 7.061, "duration": 2.913, "text": "السلام عليكم ورحمة الله وبركاته،" }]}
Statuses and what you pay
You pay only for rows with status ok. Other rows are free.
| Status | Meaning |
|---|---|
ok | Transcript delivered. |
no_captions | The video has no captions, or none that match your language and auto-caption settings. |
unavailable | Private, removed, age-restricted or region-blocked video, or an invalid ID. |
blocked | YouTube refused every proxy tier. Run it again later. |
Pricing is per delivered transcript. You can set a maximum cost per run; the run stops cleanly when it is reached.
Good to know
- Translation. YouTube sometimes refuses machine-translation requests. When that happens you get the original track,
isTranslatedisfalse, andmessagesays so. Turn offfallbackToAnyLanguageif you preferno_captionsin that case. - Proxies. The run starts without a proxy. If YouTube refuses requests, it moves to datacenter proxy, then residential proxy, and stays there for the rest of the run. Proxy cost is included in the price.
- Chapters. Chapters come from timestamps in the video description. Videos without stamps are split into 5-minute blocks.
- Run summary. The
RUN_SUMMARYrecord lists counts per status, timing, and requests and bytes per video. - Live streams that are still live have no final captions yet.