YouTube Transcripts: Any Language, Auto-Captions, SRT avatar

YouTube Transcripts: Any Language, Auto-Captions, SRT

Pricing

from $2.80 / 1,000 transcripts

Go to Apify Store
YouTube Transcripts: Any Language, Auto-Captions, SRT

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

Dottti

Maintained by Community

Actor 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

FieldWhat it does
urlsVideo links or IDs, playlist links, or channel links (@handle, /channel/UC...).
preferredLanguagesLanguage codes in order, for example ["ar", "en"]. Default ["en"].
allowAutoGeneratedUse YouTube speech-recognition captions when no manual track exists. Default on.
translateToOptional. Output language. A native track is used if it exists; otherwise YouTube translation is requested.
allowTranslationAsk YouTube to translate when your languages are missing. Default on.
fallbackToAnyLanguageIf the wanted language is missing, return the video's own track. Default on.
outputFormatsegments (timed lines plus text), text, srt, or all.
includeChaptersChapters with first and last line per chapter. Default on.
maxVideos, maxVideosPerListCaps 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:

FieldMeaning
statusok, no_captions, blocked or unavailable.
videoId, url, title, channel, channelId, durationSecVideo details.
languageLanguage of the returned text.
sourceLanguageTrack it came from. Differs from language only when translated.
isAutoGeneratedtrue for YouTube speech-recognition captions.
isTranslatedtrue when YouTube machine translation was used.
segments[{ "start": 18.64, "duration": 3.24, "text": "..." }], times in seconds.
textThe whole transcript as one string.
srtSubRip subtitle text, when asked for.
wordCount, segmentCountSize of the transcript.
firstLine, lastLineFirst and last spoken line.
chapters[{ title, startSec, endSec, firstLine, lastLine, wordCount }].
chaptersSourcedescription when the video has chapter stamps, fixed_blocks for 5-minute blocks.
availableLanguagesEvery track the video has. (auto) marks auto-generated ones.
messagePlain 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.

StatusMeaning
okTranscript delivered.
no_captionsThe video has no captions, or none that match your language and auto-caption settings.
unavailablePrivate, removed, age-restricted or region-blocked video, or an invalid ID.
blockedYouTube 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, isTranslated is false, and message says so. Turn off fallbackToAnyLanguage if you prefer no_captions in 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_SUMMARY record lists counts per status, timing, and requests and bytes per video.
  • Live streams that are still live have no final captions yet.