YouTube Transcripts & Subtitles (Timestamps, 20+ Languages) avatar

YouTube Transcripts & Subtitles (Timestamps, 20+ Languages)

Pricing

from $3.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcripts & Subtitles (Timestamps, 20+ Languages)

YouTube Transcripts & Subtitles (Timestamps, 20+ Languages)

Extract YouTube transcripts and subtitles with timestamps. One video or thousands, manual or auto-generated captions, language selection and translation. Clear per-video error rows instead of silent failures.

Pricing

from $3.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Waseem Ahmed

Waseem Ahmed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

YouTube Transcripts Scraper — Subtitles with Timestamps, Any Language

Extract the full transcript of any YouTube video — one video or thousands — with timestamps, manual or auto-generated captions, language selection and optional translation. Built for RAG pipelines, AI agents, content repurposing and research.

What this actor does: it extracts the caption/subtitle track that YouTube already hosts for a video. It does not run speech-to-text on the audio. If a video has no captions at all, the row comes back with status: "error" and a clear reason.

Why this one

Most transcript scrapers rely on a single YouTube client. When YouTube rate-limits that client you get empty files or a run that silently "succeeds" with no text. This actor:

  • Rotates 4 YouTube clients (Android VR, Android, iOS, Web) and retries across them per video.
  • Rotates proxy sessions per video (Apify Proxy by default) so one blocked IP does not fail the run.
  • Never fails silently — every requested video produces a row, with status: "ok" or status: "error" plus the exact reason.
  • Handles both caption formats YouTube returns (srv3 XML and json3).
  • Keeps timestamps so transcripts can be cited, seeked to, or turned into subtitle files.
  • Flags auto-generated captions (isAutoGenerated) so you know the quality tier.
  • Translates on request using YouTube's own caption translation.

What you get

FieldDescription
videoId11-character YouTube video id
urlCanonical watch URL
title, channelVideo title and channel name
durationSeconds, viewCountVideo metadata
languageLanguage of the returned transcript
isAutoGeneratedtrue when the track is YouTube ASR
translatedtrue when a translation was requested
availableLanguagesEvery caption language the video offers
transcriptFull transcript as one clean string
segments[{ start, duration, text }] with second-level timestamps
segmentCountNumber of caption segments
status / errorok, or error with the reason
scrapedAtISO timestamp

How to use

  1. Paste video URLs (watch, youtu.be, Shorts, embed) or bare video IDs.
  2. Pick your preferred languages, e.g. en, es, de. The actor uses the best available match.
  3. Leave Allow auto-generated captions on unless you only want manual subtitles.
  4. Run. Export as JSON, CSV or Excel, or pull the dataset through the API.

Example input

{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/jNQXAC9IVRw"
],
"languages": ["en"],
"includeAutoGenerated": true,
"maxConcurrency": 5
}

Example output (trimmed)

{
"videoId": "jNQXAC9IVRw",
"title": "Me at the zoo",
"channel": "jawed",
"language": "en",
"isAutoGenerated": false,
"segmentCount": 6,
"transcript": "All right, so here we are, in front of the elephants...",
"segments": [
{ "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" }
],
"status": "ok"
}

Use cases

  • RAG and AI agents — index video content so an assistant can answer questions about it.
  • Content repurposing — turn videos into blog posts, newsletters, threads or clip scripts.
  • Research — analyse interviews, lectures, podcasts and conference talks at scale.
  • SEO — publish searchable text versions of video content.
  • Accessibility and localisation — generate subtitle bases and translated transcripts.
  • Competitive monitoring — track what a channel says over time.

Pricing

Pay per transcript via Apify's pay-per-event model: $3 per 1,000 transcripts ($0.003 each), plus a negligible actor-start event. Failed rows and invalid inputs are not charged. Set a maximum charge in the run options and the actor stops cleanly when it is reached.

Run it with the API

curl -X POST "https://api.apify.com/v2/acts/waseem9~youtube-transcripts/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"languages":["en"]}'

The synchronous endpoint returns dataset items directly, which makes this actor easy to wrap behind your own REST endpoint or RapidAPI listing.

Limitations (read before using)

  • Captions only. No captions means no transcript. There is no audio transcription.
  • Auto-generated captions contain errors (names, punctuation), which is why they are flagged.
  • Age-restricted or private videos require authentication and will return an error row.
  • Heavy use without a proxy can be rate-limited by YouTube; Apify Proxy is enabled by default.

Notes for developers

  • Built on the Apify SDK (Node 20), HTTP-only — no browser, so runs are fast and cheap.
  • Pure parsing helpers live in src/parse.js and are covered by npm test.
  • Client ladder lives in src/youtube.js; add a client there when YouTube changes a surface.