YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Extract YouTube captions, timestamps, SRT, VTT, and plain text from public videos in bulk without browser automation.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Share

YouTube Transcript Bulk API

After this run

Turn this Actor's output into a capped paid report with YouTube Channel Transcript RAG Intelligence. Use it when AI builders, content teams, and knowledge-base owners need to decide whether a YouTube corpus is clean enough for RAG before building embeddings or a chatbot.

  • First report: $9 / corpus_snapshot_report; set maxChargeUsd to $9.
  • Deeper report: $29 / rag_readiness_report; use only when the first result needs competitor or action-depth.
  • This is an internal Apify flow aid. It is not revenue proof until accounted paid usage appears.

Next report-style Actors

If you already have data from this Actor, these follow-on Actors turn public or user-provided inputs into decision-ready reports. They are optional, capped by maxChargeUsd, and do not make business outcome claims.

Extract transcripts from public YouTube videos in bulk. The actor is built for AI pipelines, RAG ingestion, content repurposing, subtitle export, research, and searchable video archives.

What It Does

You provide YouTube video URLs, video IDs, playlist URLs, or channel URLs. The actor resolves visible video IDs, fetches public caption tracks, selects the best matching language, downloads the timed transcript XML, and returns one dataset row per video.

The implementation is HTTP-first and does not use browser automation. That keeps Apify hosting cost low and makes the pricing predictable.

Input

  • videoUrls: YouTube watch, Shorts, embed, live, or youtu.be URLs.
  • videoIds: Direct 11-character YouTube video IDs.
  • playlistUrls: Public playlist pages to expand into video IDs.
  • channelUrls: Public channel pages to expand into visible video IDs.
  • dedupeVideos: Remove duplicate video IDs after combining direct, playlist, and channel sources.
  • language: Preferred caption language such as en or ja.
  • includeAutoGenerated: Allows auto-generated captions when manual captions are not available.
  • translationLanguage: Optional YouTube transcript translation target.
  • outputFormat: json, text, srt, or vtt.
  • delivery / webhookUrl: Write to dataset only, or also send the final payload to a webhook.
  • maxVideos: Maximum videos to process.
  • dryRun: Validate input and emit preview rows without fetching YouTube.

Output

Each video produces one row with transcript data and billing audit fields:

  • videoId, videoUrl, videoTitle, channelTitle, sourceType
  • status, chargedEvent, sourceUrls, errors
  • language, sourceLanguage, isAutoGenerated, captionTrackName
  • segmentCount, fullText, segments, formattedTranscript
  • errorCode, errorMessage, scrapedAt

Unavailable captions, deleted videos, private videos, and request failures are returned as no-charge error rows instead of failing the full run.

Pricing Events

Recommended PPE launch target:

  • apify-actor-start: keep Apify default $0.00005.
  • transcript_extracted: $0.0025 for successful transcript rows.
  • transcript_partial: $0.001 for useful partial transcript rows if enabled later.
  • dry_run, error, and unavailable-caption rows are no-charge.

The current cost model assumes HTTP requests, no browser, and no residential proxy. Publication should remain blocked if live cost probes show that residential proxy is required.

Limits

  • Only public videos with public caption tracks are supported.
  • Age-restricted, private, deleted, or captionless videos return an error row.
  • Playlist and channel expansion uses public page HTML and only discovers visible video IDs.
  • YouTube may change its watch page payload shape. The canary should run daily against a known captioned video.

Local Run

npm test
npm start

The default input.json uses dryRun: true so local startup does not depend on live YouTube access.

Premium Report Pack

Use these premium report actors when a raw dataset is ready to become a buyer-facing audit, watch summary, or agency deliverable. All three keep sourceDatasetId as advanced-only; first runs should use pasted input, URLs, demo mode, and reportTier.

Recommended flow from this actor: run the current extraction/check first, export the useful dataset or copy the relevant URLs, then choose entry, premium, or bundle in the report actor with maxChargeUsd as the safety cap.

Turn Transcripts Into A Corpus Audit

After bulk transcript extraction, use YouTube Transcript Corpus Audit & RAG Readiness when the next question is not ?can I get text?? but ?is this corpus ready for RAG?? Start with reportTier="corpus_snapshot"; use rag_readiness only when the snapshot has enough caption coverage.

Use these follow-on Actors when you want a capped, decision-ready report instead of more raw rows. They use public or user-provided inputs, respect maxChargeUsd, and do not promise rankings, revenue, conversion lifts, or sales outcomes.

If this Actor gave you raw rows or source context, these follow-on report Actors are designed for a small capped paid run. They help make a decision, not just collect more data.

  • YouTube Channel Transcript RAG Intelligence - decide whether a YouTube corpus is clean enough for RAG before building embeddings or a chatbot. Entry $9 / corpus_snapshot_report; premium $29 / rag_readiness_report.

Keep maxChargeUsd equal to the selected tier. Internal links are traffic aids only; real proof requires accounted paid usage.