YouTube Transcript Scraper - Captions, Timestamps, Text
Pricing
Pay per event
YouTube Transcript Scraper - Captions, Timestamps, Text
Transcripts of YouTube videos, Shorts, playlists and channels: full text or timestamped segments, auto-generated or manual captions, any language, plus title, channel and views. No login, no API key.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Scrapify
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
YouTube Transcript Scraper: captions, timestamps and full text from any public video
Get the transcript of any public YouTube video without a login, cookies, API key or Google quota. Paste video links (watch, youtu.be, Shorts, embed), video IDs, or a playlist or channel link, and every video comes back as one clean row: video ID and URL, title, channel, publish date, duration, views, language, whether the captions are auto-generated, the full transcript as plain text, timestamped segments (start, duration, text) and the list of all caption languages the video offers. Export to JSON, CSV or Excel, or call it from the API.
Use it to feed transcripts to AI agents and LLM pipelines (RAG, summaries, Q&A), repurpose video content, do keyword and topic research, build training sets, monitor a channel, or index lecture and podcast archives. Works with AI agents through the Apify MCP server. It reads only the public caption tracks YouTube shows to every viewer - no video or audio is downloaded.
Why this one
- No login, no cookies, no API key. Public captions only; nothing to configure. A residential proxy is not needed: it runs on Apify's standard proxy pool, and a fresh IP is used on every retry.
- Videos, Shorts, playlists and channels. Accepts watch / youtu.be / shorts / embed / live links and bare IDs; playlists and channels are expanded to their newest videos (you set the limit).
- Language control. List preferred languages (
en,de,pt-BR...); for each, manual captions win over auto-generated ones. If none match, it falls back to the auto-generated track in the spoken language (switchable) and tells you which language and kind you got. - Your output shape. Plain text only, segments only, or both; metadata on or off.
- Never fails the whole run for one video. A video with no captions, a private or removed video or a block gets its own row with an
errormessage and is not charged; the rest continue. ARUN_SUMMARYrecord counts successes and errors. - Polite by design. Small parallelism, pauses between requests, retries with backoff and a new IP, and the run stops politely if YouTube keeps blocking.
Input (main fields)
| Field | Meaning |
|---|---|
| Video URLs or IDs | One per line: watch, youtu.be, Shorts, embed links or the 11-character ID. Playlist/channel links are expanded too |
| Playlist or channel URLs | Optional; newest videos are listed and transcribed |
| Max videos per playlist/channel | Default 10, max 500 |
| Preferred caption languages | Ordered codes, default en |
| Fall back to any available language | Default on |
| Output format | Text and segments (default), text only, or segments only |
| Include video metadata | Title, channel, publish date, duration, views, category, description (first 2,000 characters) |
| Proxy configuration | Apify Proxy on by default (needed: YouTube blocks most datacenter IPs without it) |
Output (one row per video)
videoId, url, title, channel, channelId, channelUrl, publishDate, durationSeconds, viewCount, category, isLive, description, language, languageName, isAutoGenerated, segmentCount, wordCount, transcript, segments[{start, duration, text}], availableLanguages[{languageCode, name, isAutoGenerated, isTranslatable}], error, scrapedAt. A RUN_SUMMARY record in the key-value store lists counts (transcripts, no captions, unavailable, blocked), per-video errors and charged events. See sample-output.json for real rows (long fields shortened there).
Notes on the data: viewCount is the number YouTube shows at scrape time. publishDate comes from a second public request that can occasionally be blocked; then it is null while the transcript is still returned. Segment times are seconds from the start of the video. Captions are returned as published: auto-generated captions can contain recognition errors, and some tracks are sparse (music videos often carry only lyrics).
Pricing
Pay per event: $0.002 per transcript ($2.00 per 1,000 transcripts) plus a $0.00005 start event per run. Videos without captions, unavailable videos and blocked videos are not charged. A 10-video run costs about two cents. See PRICING.md for the benchmark.
Public data only
The Actor reads only the public caption tracks and public page data that YouTube offers every viewer. It does not log in, use cookies or accounts, read private or members-only videos, download video or audio, or bypass paywalls. Captions and metadata can contain personal data (speaker names, channel names). You are responsible for using the data in line with YouTube's terms of service, copyright law, GDPR and other applicable data-protection law.
Notes and limits
- Only videos with public captions (manual or auto-generated) return a transcript. Age-restricted, private, members-only, live-in-progress and removed videos usually return an error row.
- Machine translation of captions into other languages is not offered (YouTube blocks that request from cloud IPs); use a language the video already has.
- Playlists and channels return the newest videos first, up to your limit.
- YouTube rate-limits cloud traffic. If you see
blockederrors, rerun the failed videos later or with a smaller batch.
FAQ
How much does it cost? $0.002 per transcript plus $0.00005 per run. 1,000 transcripts = $2.00. Error rows are free.
Do I need a YouTube API key or login? No.
Does it work for auto-generated captions? Yes. isAutoGenerated tells you which one you got.
Which languages? Whatever the video offers; availableLanguages lists them. Ask for several in order of preference.
Can I get a whole channel? Yes: give the channel link and a Max videos per playlist/channel limit (up to 500, newest first).
Does it download videos or audio? No. Text only.
Why did a video return an error? Common reasons: the video has no captions, is private/removed/age-restricted, or YouTube blocked the request after retries. The error field says which.
Which export formats are available? JSON, CSV, Excel, XML, HTML or RSS from the Console or API, or Apify integrations such as Make, Zapier, n8n and Google Sheets.
Something broke or a field is missing? Open an issue on the Actor's Issues tab with the run link.
Use with AI agents / MCP
Agents can call this Actor through the Apify MCP server (https://mcp.apify.com). Add the Actor to the server, or let the agent find it with the search-actors tool ("youtube transcript"), then call it by name:
- Actor:
santis_hermes/youtube-transcript-scraper - Example prompt: "Get the English transcript of https://www.youtube.com/watch?v=dQw4w9WgXcQ as plain text."
- Minimal input:
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"languages": ["en"],"outputFormat": "text"}