YouTube Transcript Scraper
Pricing
$10.00 / 1,000 transcripts
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
Maintained by CommunityActor stats
30
Bookmarked
1.2K
Total users
47
Monthly active users
4 days ago
Last modified
Categories
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_IDhttps://youtu.be/VIDEO_IDhttps://youtube.com/shorts/VIDEO_IDhttps://youtube.com/live/VIDEO_IDhttps://youtube.com/embed/VIDEO_IDVIDEO_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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
videoUrl | string | Yes | — | YouTube URL or video ID |
language | string | No | Auto-detect | Caption language (BCP-47 code, e.g. en, hi) |
translate | boolean | No | false | Enable 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:
| Field | Type | Description |
|---|---|---|
success | boolean | Extraction status |
video_id | string | YouTube video ID |
video_url | string | Canonical URL |
video_title | string | Video title |
published_at | string | Publish date |
thumbnail_max_hd_url | string | Thumbnail URL |
transcript | string | Extracted transcript |
transcript_translated | string | Translated transcript (when enabled) |
translated_language | string | Translation language |
language | string | Caption language |
extraction_time | number | Processing time |
proxy_type | string | Proxy type used |
proxy_stats | object | Proxy attempt statistics |
timestamp | string | Extraction timestamp |
error | string | Error message (on failure) |
How to Use the YouTube Transcript Scraper
- Open the Actor page on Apify Store and click Start Actor.
- Paste a YouTube URL (or ID) and optionally choose a caption language.
- Toggle
translateif you want the transcript translated. - 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 requestsresponse = 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
| Event | Price |
|---|---|
| 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?
| Capability | YouTube Transcript Scraper | YouTube Data API v3 |
|---|---|---|
| API key required | No | Yes |
| OAuth required | No | Yes |
| Daily quota limits | No | Yes |
| Auto-generated captions | Yes | No |
| Manual captions | Yes | Limited |
| Batch processing | Yes | Quota-limited |
| Setup complexity | Low | Medium |
| Proxy handling | Built in | No |
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.
Related Actors
If you need more YouTube data from Apify, check out my other Apify Actors:
- YouTube Transcript Extractor
- YouTube Full Channel Transcripts Extractor
- YouTube Playlist Scraper With Transcript
- YouTube Channel Video Scraper
- YouTube Trending Scraper
- YouTube Playlist Scraper
- YouTube Search Scraper
Built and maintained by akash9078 on the Apify platform.