YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

$10.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

YouTube Transcript Scraper & Extractor API — Extract transcripts, captions & subtitles from YouTube videos, Shorts & VODs without an API key. Supports auto-generated and manual captions in 100+ languages with translation, batch extraction & clean JSON for AI agents, RAG, SEO & automation.

Pricing

$10.00 / 1,000 transcripts

Rating

4.9

(12)

Developer

Akash Kumar Naik

Akash Kumar Naik

Maintained by Community

Actor stats

30

Bookmarked

1.2K

Total users

47

Monthly active users

4 days ago

Last modified

Share

YouTube Transcript Scraper is an Apify Actor that extracts transcripts, captions, and subtitles from any YouTube video in seconds — no YouTube Data API key, OAuth setup, or quota management required. Paste a video URL and get clean, structured JSON transcript data ready for AI apps, RAG pipelines, SEO analysis, and content repurposing.

What Is YouTube Transcript Scraper?

YouTube Transcript Scraper is a cloud-based transcript extraction API that converts YouTube captions into structured JSON. It accepts all major YouTube URL formats and retrieves transcript data without touching the official YouTube Data API — so there are no daily quota limits, no key rotation, and no OAuth configuration. Typical extraction takes 3 to 5 seconds per video.

Key Features

  • Extract full transcripts and captions from YouTube videos with available subtitles
  • Supports both auto-generated and manually created captions
  • Extract transcripts in 100+ languages
  • Translate transcripts into 14 supported languages via Mistral AI
  • Structured JSON output ready for APIs, databases, and vector stores
  • Batch process thousands of videos through the Apify API
  • Automatic residential proxy rotation for reliable extraction
  • No YouTube Data API key required, no OAuth, no quota limitations

Supported Content Types

  • Standard YouTube videos
  • YouTube Shorts
  • Premieres
  • Completed live streams (VODs)
  • Embedded videos
  • Public and unlisted videos (when the URL is available)

Supported YouTube URL Formats

https://www.youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
https://youtube.com/shorts/VIDEO_ID
https://youtube.com/live/VIDEO_ID
https://youtube.com/embed/VIDEO_ID
VIDEO_ID

Use Cases

  • AI & machine learning — build LLM training datasets, RAG pipelines (Pinecone, Weaviate, Chroma, Qdrant, Milvus), semantic search, and video summarization
  • Content marketing — turn videos into blog posts, newsletters, social clips, quotes, and podcast show notes
  • SEO & research — competitor video analysis, keyword discovery from transcripts, content gap analysis
  • Accessibility — generate text versions of video content and convert webinars into searchable documentation
  • Automation — plug into n8n, Make, Zapier, Activepieces, or custom API workflows

As a drop-in replacement, the Actor works as a YouTube Transcript API, YouTube Caption API, YouTube Subtitle API, transcript downloader, subtitle extractor, and caption scraper.

Input Parameters

ParameterTypeRequiredDefaultDescription
videoUrlstringYes—YouTube URL or video ID
languagestringNoAuto-detectCaption language (BCP-47 code, e.g. en, hi)
translatebooleanNofalseEnable AI translation when the target language differs from the original

Example input:

{
"videoUrl": "https://youtu.be/dQw4w9WgXcQ",
"language": "en",
"translate": false
}

Supported Languages

The Actor can extract any caption language available on the target video — English, Hindi, Spanish, French, German, Portuguese, Japanese, Korean, Chinese, Arabic, and many more.

Translation output is available into: English, Spanish, French, German, Italian, Portuguese, Russian, Japanese, Korean, Chinese, Arabic, Hindi, Dutch, and Polish. Translation runs on Mistral AI: the original transcript is always returned, translation is attempted only when source and target languages differ, and transcript_translated appears upon success. If translation fails, the original transcript is still returned.

Sample Output

{
"success": true,
"video_id": "dQw4w9WgXcQ",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"video_title": "Example Video",
"published_at": "Jan 15, 2026",
"thumbnail_max_hd_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"transcript": "Full transcript text...",
"language": "en",
"extraction_time": 3.42,
"proxy_type": "apify",
"timestamp": "2026-05-18T12:00:00.000Z"
}

With translate: true, the response additionally includes transcript_translated and translated_language.

Full output schema:

FieldTypeDescription
successbooleanExtraction status
video_idstringYouTube video ID
video_urlstringCanonical URL
video_titlestringVideo title
published_atstringPublish date
thumbnail_max_hd_urlstringThumbnail URL
transcriptstringExtracted transcript
transcript_translatedstringTranslated transcript (when enabled)
translated_languagestringTranslation language
languagestringCaption language
extraction_timenumberProcessing time
proxy_typestringProxy type used
proxy_statsobjectProxy attempt statistics
timestampstringExtraction timestamp
errorstringError message (on failure)

How to Use the YouTube Transcript Scraper

  1. Open the Actor page on Apify Store and click Start Actor.
  2. Paste a YouTube URL (or ID) and optionally choose a caption language.
  3. Toggle translate if you want the transcript translated.
  4. Run the Actor and download results as JSON, CSV, Excel, or HTML from the Apify dataset.

Connect via API

cURL:

curl -X POST "https://api.apify.com/v2/acts/akash9078/youtube-transcript-scraper/runs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrl":"https://youtu.be/dQw4w9WgXcQ","language":"es","translate":true}'

Python:

import requests
response = requests.post(
"https://api.apify.com/v2/acts/akash9078/youtube-transcript-scraper/runs",
headers={"Authorization": "Bearer YOUR_API_TOKEN"},
json={"videoUrl": "https://youtu.be/dQw4w9WgXcQ", "language": "es", "translate": True},
)
print(response.json())

Node.js with Apify Client:

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('akash9078/youtube-transcript-scraper').call({
videoUrl: 'https://youtu.be/dQw4w9WgXcQ',
language: 'es',
translate: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Error Responses

{ "success": false, "video_id": "xxxxxxxxxxx", "error": "No captions available for this video" }
{ "success": false, "video_id": "xxxxxxxxxxx", "error": "Video is private or unavailable" }
{ "success": false, "video_id": "xxxxxxxxxxx", "error": "Unable to extract transcript" }

YouTube Transcript Scraper Pricing

EventPrice
Transcript Extraction$0.01

You only pay for successful extractions. Estimated cost: 10 videos ≈ $0.10, 100 ≈ $1.00, 1,000 ≈ $10.00, 10,000 ≈ $100.00.

Why Use This Instead of the YouTube Data API?

CapabilityYouTube Transcript ScraperYouTube Data API v3
API key requiredNoYes
OAuth requiredNoYes
Daily quota limitsNoYes
Auto-generated captionsYesNo
Manual captionsYesLimited
Batch processingYesQuota-limited
Setup complexityLowMedium
Proxy handlingBuilt inNo

Limitations

  • Videos must have captions enabled (manual or auto-generated)
  • Currently live streams, private videos, and age-restricted videos are not supported
  • Output contains complete transcript text only, without timestamps

FAQ

Does the Actor support auto-generated captions?

Yes — both manual and auto-generated captions are supported.

Can I extract transcripts in bulk?

Yes. You can process thousands of videos using the Apify API or schedule batch runs.

Does it work with YouTube Shorts?

Yes, Shorts are fully supported, along with Premieres and completed live streams.

Is a YouTube API key required?

No. The Actor never touches the YouTube Data API, so there is no key or quota setup.

Does the Actor return timestamped captions?

No. The current output is the complete transcript text without timestamps.

Can I translate transcripts?

Yes. Translation into 14 supported languages is available via the translate input.

Is there a daily limit?

No. There are no YouTube API quota restrictions.

How fast is transcript extraction?

Most videos are processed within 3 to 5 seconds.

If you need more YouTube data from Apify, check out my other Apify Actors:


Built and maintained by akash9078 on the Apify platform.