YouTube Transcript Scraper With AI Enrichment
Pricing
$14.99/month + usage
YouTube Transcript Scraper With AI Enrichment
Scrapes transcripts from any YouTube video, capturing full text, timestamps, language, and metadata. Ideal for SEO research, content analysis, accessibility, subtitle extraction, and automated processing of large video libraries with accurate transcript output
Pricing
$14.99/month + usage
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
YouTube Transcript Scraper Plus
Extract transcripts from YouTube videos together with real video metadata, in a clean, flat, one-row-per-video format. Built on the youtube-transcript-api library for transcripts and YouTube's own watch-page data (InnerTube JSON + oEmbed) for metadata.
Accepts single videos, bulk lists, Shorts / embed / live links, bare 11-character video IDs, and channel or playlist URLs (expanded to their videos).
What it extracts
Each dataset row is one video and contains:
Transcript
plainText— the full transcript as clean textsegments[]— per-segmentstart,duration,end,timestamp(hh:mm:ss),text, and awatch?t=deep-linkurlsrt— ready-to-use SRT subtitle stringvtt— ready-to-use WebVTT subtitle stringsegmentCount,wordCount,characterCount,readingTimeMinutes
Language / caption fields (authoritative, from the library)
languageCode,languageisGenerated— true for auto-generated captions (from the library'sis_generated, not a display-name guess)isTranslatable,translationLanguages[],translationLanguageCountavailableLanguages[]— every caption track on the video (language,languageCode,isGenerated,isTranslatable)languageCounttranslatedTo— set when you request translation viatranslateTo
Video metadata
title,channel,channelId,channelUrlviewCount,likeCount(best-effort;nullwhen YouTube does not expose it)publishDate,uploadDate,durationSecondsdescription,category,keywords[],thumbnail,isLiveContent
Bookkeeping
status— one ofok,no_captions,unplayable,error(never faked — a video with no captions is reported honestly)scrapedAt(ISO 8601 UTC),error(message when status is notok)
Optional AI enrichment (off by default)
When aiEnhancement is on and an API key is provided, each row also gets:
aiSummary,aiKeyPoints[],aiTopics[],aiChapters[]
Providers are auto-detected from the model name: Claude (Anthropic), GPT/o-series (OpenAI), Gemini (Google), Grok (xAI), DeepSeek, Sonar (Perplexity), Mistral.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Video URLs / IDs / Shorts / embed / live links / channel / playlist URLs |
preferredLanguages | array | ["en"] | ISO codes in priority order; first match wins, falls back to best track |
transcriptType | enum | any | any / manualOnly / autoOnly |
translateTo | string | "" | ISO code to translate into (only if the track is translatable) |
includeSegments | boolean | true | Include the per-segment array |
includeSrt | boolean | true | Include SRT output |
includeVtt | boolean | true | Include WebVTT output |
maxVideosPerChannel | integer | 10 | Cap when expanding a channel/playlist |
concurrency | integer | 5 | Videos processed in parallel |
aiEnhancement | boolean | false | Turn on AI summary/key points/topics/chapters |
aiModel | enum | claude-haiku-4-5 | Model/provider for AI enrichment |
aiApiKey | secret | — | API key for the AI provider (or set the provider env var) |
proxyConfiguration | proxy | Residential | Residential proxy recommended — YouTube blocks datacenter IPs |
Example input
{"startUrls": ["https://www.youtube.com/watch?v=4KbrxIpQgkM"],"preferredLanguages": ["en"],"transcriptType": "any","includeSrt": true,"includeVtt": true,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Example output (abridged, real fields)
{"videoId": "4KbrxIpQgkM","url": "https://www.youtube.com/watch?v=4KbrxIpQgkM","status": "ok","title": "...","channel": "...","channelId": "UC...","channelUrl": "https://www.youtube.com/channel/UC...","viewCount": 123456,"likeCount": 4321,"publishDate": "2022-01-01","durationSeconds": 615,"languageCode": "en","language": "English","isGenerated": false,"isTranslatable": true,"availableLanguages": [{ "language": "English", "languageCode": "en", "isGenerated": false, "isTranslatable": true }],"segmentCount": 210,"wordCount": 1500,"readingTimeMinutes": 7.5,"plainText": "Full transcript text...","segments": [{ "start": 0.0, "duration": 3.2, "end": 3.2, "timestamp": "00:00:00", "text": "Hello", "url": "https://www.youtube.com/watch?v=4KbrxIpQgkM&t=0s" }],"srt": "1\n00:00:00,000 --> 00:00:03,200\nHello\n...","vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:03.200\nHello\n...","scrapedAt": "2026-07-02T00:00:00Z"}
When a video has no captions, the row is still emitted with status: "no_captions" and the transcript fields left null — no fabricated text. Only genuine result rows (status: "ok") are charged.
Notes
- Residential proxy is strongly recommended; YouTube blocks datacenter IPs for transcript requests.
likeCountand some metadata can benullwhen YouTube does not surface them — these are reported honestly rather than faked.- Legality: this retrieves captions and metadata already publicly served by YouTube. Review YouTube's Terms of Service for your use case; republishing content may require the creator's permission.