YouTube Transcript Scraper (AI-Ready)
Pricing
from $2.00 / 1,000 transcript extracteds
YouTube Transcript Scraper (AI-Ready)
Scrape YouTube transcripts and captions from videos, playlists, and channels. Get timestamped text, language details, TXT/SRT/VTT files, and RAG-ready chunks for AI. You pay only for successful transcripts; videos without captions are free.
Pricing
from $2.00 / 1,000 transcript extracteds
Rating
0.0
(0)
Developer
SuicidalSquirrel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
Scrape YouTube transcripts and captions for AI
Scrape transcripts from YouTube videos, playlists, and channels as clean, AI-ready text — $0.003 per transcript ($3 per 1,000), with lower prices on paid Apify plans. You're never charged for a video that has no captions, is unavailable, or is age-restricted; you only pay for a transcript you actually get.
What you get
One dataset item per requested video. Example, lightly trimmed, from a real run against jNQXAC9IVRw ("Me at the zoo", the first video ever uploaded to YouTube):
{"status": "ok","errorCode": null,"videoId": "jNQXAC9IVRw","url": "https://www.youtube.com/watch?v=jNQXAC9IVRw","title": "Me at the zoo","channelName": "jawed","durationSeconds": 19,"language": "en","isAutoGenerated": false,"text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool (baaaaaaaaaaahhh!!) and that's pretty much all there is to say","segments": [{ "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" },// ...one entry per caption line, with exact start/duration...],"chunks": [{ "index": 0, "startSec": 1.2, "endSec": 18.88, "text": "All right, so here we are...", "tokenEstimate": 55 },// RAG-ready, overlapping, split only on caption boundaries],"chapters": [], // populated with YouTube's own chapter titles/timestamps when available"wordCount": 39,"tokenEstimate": 55,"files": {}, // txt/srt/vtt key-value-store links, when requested"source": { "type": "video", "input": "jNQXAC9IVRw" },"fetchedAt": "2026-10-08T09:10:52.932Z",}
A video without captions returns status: "no_captions" with empty text/segments — never a crash, never an empty item pretending to be a success, and never a charge.
How to use it
- Add your sources. Paste one or more video URLs, playlist URLs, or channel URLs/handles into
videos,playlists, andchannels. Mix and match; duplicates across all three are automatically removed. - Set your limits (optional).
maxVideosPerSourcecaps how many videos come from each playlist/channel;maxTranscriptsis a hard ceiling on the whole run, so a single large channel can never run away with your budget. - Run it. Read the results from the dataset as they land —
status,title,language, andwordCountin the default Overview view, everything (segments, chunks, chapters, files) in the Full view.
{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"playlists": ["https://www.youtube.com/playlist?list=PLBCF2DAC6FFB574DE"],"channels": ["@NASA"],"maxVideosPerSource": 50,"maxTranscripts": 1000,"languages": ["en"],"fallbackToAnyLanguage": true,"allowAutoGenerated": true,"includeSegments": true,"chunking": { "enabled": true, "maxTokens": 800, "overlapTokens": 80 },"extraFormats": ["srt"],"proxyConfiguration": { "useApifyProxy": true }}
Use cases
- RAG and knowledge bases —
chunksare already token-sized and overlapping, ready to embed without any extra preprocessing. - Summarization and research —
textis clean prose (no timestamps, no[Music]-style noise), so it drops straight into a summarization prompt. - Content research at scale — point it at a competitor's or your own channel, cap it with
maxVideosPerSource/maxTranscripts, and get every video's transcript in one dataset. - AI agents — pay-per-event pricing and limited permissions (see Integrations) mean an agent can call this Actor directly and only pay for transcripts it actually receives.
Pricing explained
Only the transcript-extracted event is billed, and only once per video that actually gets a transcript (status: "ok"). Enumerating a playlist or channel to find its videos is always free, and so is every no_captions, unavailable, age_restricted, or error item.
The price per transcript depends on your Apify plan:
| Apify plan tier | Per transcript | Per 1,000 transcripts |
|---|---|---|
| Free | $0.003 | $3.00 |
| Bronze | $0.0027 | $2.70 |
| Silver | $0.0024 | $2.40 |
| Gold | $0.002 | $2.00 |
The examples below use the Free-tier price.
- Example A — a curated list of 100 videos, some without captions. You submit 100
videos. 92 have captions and transcribe successfully; 8 don't. You pay for 92 transcripts: 92 × $0.003 = $0.276. The 8 caption-less items still appear in your dataset, for free, so you can see which videos they were. - Example B — a channel with more videos than you want to pay for. A channel has 4,000 uploads. You set
maxVideosPerSource: 500andmaxTranscripts: 500as a budget ceiling. Enumerating the channel's video list costs nothing. If 480 of those 500 videos have captions, you pay 480 × $0.003 = $1.44 — never more thanmaxTranscripts× $0.003, however large the channel actually is.
If your Apify spending limit is reached mid-run, the Actor stops starting new videos, lets any in-flight ones finish, and exits cleanly with a status message explaining why the dataset is smaller than requested — you're never charged past your own limit.
Limits and honest notes
- Videos without captions get a free, honest
no_captionsstatus — never an empty transcript pretending to be real, and never a charge. - Region-locked, private, deleted, and age-restricted videos come back as
unavailableorage_restricted, free, with a human-readableerrorMessage. - Chapters are included opportunistically, not guaranteed. YouTube's chapter markers live in a much heavier page than the one this Actor fetches by default; fetching that heavier page for every single video would multiply the cost well past this Actor's price, so chapters are only captured when the (rarer) fallback extraction path already happened to load that page. Most successful items will have
chapters: []even for videos that do have chapters on youtube.com. - No audio or video is downloaded, in this version — only publicly available caption tracks and metadata.
- This is HTTP-only — no headless browser. YouTube can occasionally block a request before a retry succeeds, so some videos take longer than others. If every available route fails, the item returns an honest
status: "error"with a readable reason. - You are responsible for complying with YouTube's Terms of Service and applicable law for however you use the data this Actor returns.
Integrations
API
Replace YOUR_TOKEN with an Apify API token. The examples use this Actor's Store identifier: suicidalsquirrel/youtube-transcript-actor.
curl (synchronous — waits for the run and returns dataset items directly, up to 5 minutes):
curl -X POST "https://api.apify.com/v2/actors/suicidalsquirrel/youtube-transcript-actor/run-sync-get-dataset-items" \-H "Authorization: Bearer YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const { defaultDatasetId } = await client.actor('suicidalsquirrel/youtube-transcript-actor').call({videos: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],});const { items } = await client.dataset(defaultDatasetId).listItems();
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('suicidalsquirrel/youtube-transcript-actor').call(run_input={'videos': ['https://www.youtube.com/watch?v=dQw4w9WgXcQ']},)for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['status'], item.get('title'))
MCP and AI agents
Any Apify Actor can be called as a tool through Apify's MCP server at mcp.apify.com — point an MCP-aware client at https://mcp.apify.com?tools=suicidalsquirrel/youtube-transcript-actor (or have the agent discover it with the server's add-actor tool) and it can request transcripts directly, paying only for the transcript-extracted events it actually triggers. This Actor requests only limited permissions and never runs in Standby mode, so it stays eligible for direct agent-to-agent payments.
Make and Zapier
Both platforms have an official Apify integration: in Make, use the Run an Actor module (and Get Dataset Items to read results); in Zapier, use the Run Actor action from the Apify app. Either way, select this Actor by its ID and supply the same input JSON shown above. For a playlist or channel large enough to take more than Zapier's ~30-second synchronous timeout, use the Finished Actor Run trigger (or a webhook) instead of waiting on the action step.
FAQ
Does it download audio or video? No — only publicly available caption tracks and metadata, in this version.
Will I be charged for a video that fails or has no captions? No. Only a successful transcript is billed, once, per video — see Pricing explained.
What if the same video appears in my videos, a playlist, and a channel? It's deduplicated and billed once, keeping the first source it was found under for the source field.
Can I point it at a channel with thousands of videos without worrying about cost? Yes — maxVideosPerSource and maxTranscripts are hard ceilings checked before any transcript is attempted, and your Apify spending limit is also respected mid-run.
Does it store my proxy credentials or any personal data beyond what's in the output? No. Output is limited to public video/channel metadata and transcripts; proxy credentials are never logged.
Why is chapters empty on a video I know has chapters on youtube.com? See Limits and honest notes — it's a deliberate cost trade-off, not a bug.
Changelog
- 2026-10-08 — Initial release: video, playlist, and channel inputs; multilingual manual and auto-generated captions; proxy escalation and retry handling; RAG-ready chunks; TXT/SRT/VTT exports; pay-per-event charging; API, MCP, Make, and Zapier integrations.