Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
YouTube Transcript Scraper icon

YouTube Transcript Scraper

Extract YouTube transcript text, timestamped segments, SRT, VTT, languages and video metadata without an API key.

32 runs on Apify $0.0005 per run
Run this in the cloudRun on Apify →

YouTube & Creator Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust videoUrls, videoIds, languagePreferences (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0005 per run

You are charged forWhenPrice
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.0005

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-03, and they are what you are actually charged.

Inputs

FieldWhat it doesType
videoUrlsYouTube watch, Shorts, live, embed, or youtu.be URLs. Raw 11-character video IDs are also accepted. Duplicate videos are processed once.array
videoIdsOptional additional list of raw 11-character YouTube video IDs. This is useful for programmatic runs that already have IDs.array
languagePreferencesBCP 47 language codes in priority order, for example en, es, fr, or pt-BR. The first available preference is used. If none match, the actor falls back to another available transcript.array
maxConcurrencyNumber of videos processed at once. Keep this low to reduce YouTube throttling and compute cost.integer
retriesRetries for temporary rate limits and YouTube server errors. Backoff is automatic.integer
requestTimeoutSecsMaximum time for all transcript requests for one video.integer

What you get

A structured dataset — each result includes fields like:

okvideoIdtitledetectedLanguagesegmentCounttexturlerrorCode

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in YouTube & Creator Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

YouTube Trending Scraper iconYouTube & Creator Tools

YouTube Trending Scraper

Scrape trending YouTube videos by topic or keyword, no login or API key. Views, titles, channels, duration, thumbnails.

Ready to run — no setup

YouTube Channel Email Scraper iconYouTube & Creator Tools

YouTube Channel Email Scraper

Find business emails publicly listed in YouTube channel descriptions and their linked websites. Built for creator outreach and sponsorships. No login needed.

Ready to run — no setup

YouTube Scraper iconYouTube & Creator Tools

YouTube Scraper

Scrape YouTube videos by keyword or channel without the API. Get titles, views, publish dates, watch URLs and channel data. No key or cookies needed.

18 use cases

YouTube Channel Monitor — New Upload Tracker iconYouTube & Creator Tools

YouTube Channel Monitor — New Upload Tracker

Watch any YouTube channels and get only their new uploads as structured data — title, URL, views, duration, Shorts flag. Works as an upload trigger.

17 use cases

YouTube Video & Audio Downloader iconYouTube & Creator Tools

YouTube Video & Audio Downloader

Download YouTube videos as MP4 or extract MP3 audio at your chosen quality, with metadata and optional SRT subtitles. Paste a URL and run.

16 use cases

YouTube Video Uploader iconYouTube & Creator Tools

YouTube Video Uploader

Upload videos to your YouTube channel from a URL with no code: set title, tags, privacy, thumbnail, and schedule an auto-publish time via OAuth.

2 use cases

See all YouTube & Creator Tools →

YouTube Transcript Scraper

Extract complete YouTube transcripts in batches without an API key, cookies, or a login.

Each successful video produces one dataset row containing:

  • Full plain text
  • Timestamped segments with start, duration, and end times in seconds
  • Ready-to-save SRT subtitles
  • Ready-to-save WebVTT subtitles
  • Detected and requested language
  • Available transcript languages and automatic-caption status
  • Video ID, canonical URL, title, author, channel ID, duration, view count, and thumbnail when YouTube provides them

The actor accepts standard YouTube watch URLs, Shorts URLs, live URLs, embed URLs, youtu.be links, and raw 11-character video IDs. Duplicate videos are processed once.

Pricing

$4.00 per 1,000 transcripts on the free plan, falling to $1.50 per 1,000 on Diamond ($0.004 → $0.0015 each), plus $0.0005 each time a run starts. You are charged only for transcripts actually returned.

Apify planPer transcriptPer 1,000
Free$0.004$4.00
Bronze$0.0035$3.50
Silver$0.003$3.00
Gold$0.0025$2.50
Platinum$0.002$2.00
Diamond$0.0015$1.50

That single per-transcript charge covers everything in the row: the full plain text, the timestamped segments, the ready-to-save SRT, the ready-to-save WebVTT, the language list and the video metadata. There is no second charge event, no per-format fee and no per-language fee. A batch of 100 videos where 12 have captions disabled bills 88 transcripts, not 100.

Why use this actor?

  • No YouTube Data API key
  • No account, cookies, or login
  • Batch input with controlled concurrency
  • Language preference fallback
  • Manual and automatically generated captions
  • Full text plus structured segments, SRT, and VTT in one result
  • Per-video diagnostics: one unavailable video does not fail the batch
  • Optional proxy, disabled by default to keep costs low
  • Pay only for successful transcript rows

Input

videoUrls

An array of YouTube URLs or video IDs.

{
  "videoUrls": [
    "https://www.youtube.com/watch?v=M7lc1UVf-VE",
    "https://youtu.be/dQw4w9WgXcQ",
    "aqz-KE-bpKQ"
  ]
}

videoIds

An optional second array for raw video IDs. This is convenient for API clients that store IDs separately from URLs.

languagePreferences

BCP 47 language codes in priority order. The actor uses the first available exact or base-language match. If none match, it falls back to another available transcript instead of failing the video.

{
  "videoUrls": ["M7lc1UVf-VE"],
  "languagePreferences": ["fr-CA", "fr", "en"]
}

Reliability controls

  • maxConcurrency: parallel videos, from 1 to 10. Default: 2.
  • retries: retries for temporary rate limits and server errors, from 0 to 5. Default: 2.
  • requestTimeoutSecs: total timeout per video, from 10 to 180 seconds. Default: 45.

Low concurrency is intentional. It reduces throttling and keeps compute usage small.

proxyConfiguration

Proxy use is optional and off by default. Transcript payloads are small and public, so direct requests are normally the right choice and they spend none of your proxy credits. Enable Apify Proxy only when YouTube rate-limits the run IP.

If a proxy is enabled, the actor keeps one sticky proxy session per video so YouTube sees a consistent IP across metadata and caption requests. Residential proxy traffic is billed by Apify on top of the per-transcript fee, so leave the proxy off unless you need it.

Output

A successful row has this shape:

{
  "ok": true,
  "_sample": false,
  "_diagnostic": false,
  "videoId": "M7lc1UVf-VE",
  "url": "https://www.youtube.com/watch?v=M7lc1UVf-VE",
  "title": "YouTube Developers Live: Embedded Web Player Customization",
  "detectedLanguage": "en",
  "requestedLanguage": "en",
  "isAutoGenerated": false,
  "segmentCount": 42,
  "text": "Complete transcript text...",
  "segments": [
    {
      "text": "First caption",
      "start": 0.25,
      "duration": 2.5,
      "end": 2.75
    }
  ],
  "srt": "1\n00:00:00,250 --> 00:00:02,750\nFirst caption",
  "vtt": "WEBVTT\n\n00:00:00.250 --> 00:00:02.750\nFirst caption",
  "author": "Google for Developers",
  "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
  "durationSeconds": 183,
  "viewCount": 1000,
  "thumbnailUrl": "https://i.ytimg.com/...",
  "availableLanguages": [
    {
      "languageCode": "en",
      "languageName": "English",
      "isAutoGenerated": false
    }
  ]
}

Metadata fields can be null when YouTube does not expose them. Transcript fields are present for every successful row.

Charging and diagnostics

The actor calls the transcript pay-per-event charge once after each successful transcript row is stored. That charge is $0.004 per transcript on the free plan and drops to $0.0015 on Diamond, as listed in Pricing above. A $0.0005 run-start fee applies once per run (per GB of run memory, minimum one unit).

These rows are never charged:

  • Invalid URL or video ID diagnostics
  • Private, removed, or region-blocked videos
  • Videos with captions disabled or no transcript
  • Rate-limit, timeout, or network diagnostics
  • The explicit _sample: true row returned for an empty input

An empty/default Apify automated test exits successfully with exactly one sample row. This prevents a no-input health check from placing the actor under maintenance.

Common diagnostic codes

CodeMeaning
INVALID_VIDEOThe input is not a supported YouTube URL or video ID.
VIDEO_UNAVAILABLEThe video is private, removed, blocked, or unavailable.
TRANSCRIPT_DISABLEDThe owner disabled captions.
NO_TRANSCRIPTYouTube returned no transcript segments.
LANGUAGE_UNAVAILABLEA requested language could not be fetched and no fallback worked.
RATE_LIMITEDYouTube throttled the run IP.
TIMEOUTThe per-video deadline expired.
NETWORKA network or proxy request failed.

Diagnostic rows include a concise error and a practical hint. The run remains successful so valid results from the same batch are preserved.

Technical notes

The actor uses the maintained youtube-transcript-plus package and YouTube's public, undocumented caption interfaces. It retries temporary HTTP failures with exponential backoff, discovers available languages, falls back between requested languages, and normalizes subtitle timestamps itself.

Because the caption interface is undocumented, YouTube can change it. Per-video diagnostics are designed to make those changes visible without losing other batch results.

Use this actor only for videos and transcript content you are allowed to process. Respect YouTube's terms, copyright, privacy, and applicable law.