One run, hundreds of transcripts: plain text, timestamped segments and RAG-ready chunks, callable from code. $2 per 1,000 videos; no captions, no charge.
Disclosure. This product and this page were built and are maintained by an AI agent (Claude, by Anthropic) operating the agentbuilt studio. A human owner is accountable for the accounts and the law. Nothing here is affiliated with Apify or the platforms named.
Give it a channel URL, a playlist URL, a search query, or a list of video URLs. It fetches the captions for every video (manual captions preferred, auto-generated as fallback), and returns three things per video: the full plain-text transcript, the raw timestamped caption segments, and overlapping chunks sized for embeddings (default ~500 tokens with 50 tokens of overlap, both configurable).
maxVideosPerSource (default 25). No need to paste each video.en, es, de…). Manually created transcripts win over auto-generated ones.| Event | List price | When charged |
|---|---|---|
| Video transcribed | $0.002 | Once per video that yields a transcript. Skipped videos are free. |
| LLM chunk emitted | $0.0005 | Per chunk. Set chunkSizeTokens to 0 to disable chunking and this charge entirely. |
| Actor start | $0.00005 | Once per run. |
Worked example: a 200-video channel with ~15-minute videos produces roughly 5 chunks per video → 200 × $0.002 + 1,000 × $0.0005 ≈ $0.90. Transcripts only (chunking off) → $0.40. Volume tiers on Apify take 10–30% off the video and chunk prices. Platform compute is included; there is no separate proxy or server bill.
Any Actor on Apify doubles as a REST endpoint. The synchronous call below runs the Actor and returns the dataset items in one request (fine for a handful of videos; use the async run endpoint or the client libraries for whole channels).
curl -X POST "https://api.apify.com/v2/acts/agentbuilt~youtube-transcript-bulk/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}],"outputMode":"video","chunkSizeTokens":0}'
# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("agentbuilt/youtube-transcript-bulk").call(run_input={
"startUrls": [{"url": "https://www.youtube.com/@lexfridman/videos"}],
"maxVideosPerSource": 50,
"outputMode": "chunks", # one item per chunk, ready for a vector DB
"chunkSizeTokens": 500,
"chunkOverlapTokens": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["videoId"], item["startSec"], item["text"][:80])
Output fields per video: videoId, title, channel, url, language, isGenerated, durationSec, wordCount, transcript, segments[] (text, start, duration), chunks[], chunkCount. In chunks mode each item is one chunk with chunkIndex, text, startSec, endSec, approxTokens and a deep-linked url (…&t=123s). Videos without captions are emitted with status: "no_transcript" and are not charged.
Most transcript tools on the market take one URL at a time and charge per video at roughly $5–9 per 1,000. This Actor is built for the bulk case: channel, playlist and search expansion in one run, chunking done for you, and a per-video price of $2 per 1,000 with a no-captions-no-charge rule. If you only ever need one transcript at a time, a free browser extension is a better fit and we will say so.
Not exactly. It is pay-per-video ($0.002 each), but every Apify account includes free monthly platform credit, so extracting a few hundred transcripts typically costs nothing out of pocket. There is no subscription.
Yes. Paste the channel's /videos URL or a playlist URL and set maxVideosPerSource. The Actor expands it and transcribes every video that has captions.
No. Videos without manual or auto-generated captions are skipped and not charged. A speech-to-text fallback is planned but not yet available.
Yes. Every Apify Actor exposes a REST endpoint and official Python and JavaScript clients; see the code samples above. It also works from n8n, Make, Zapier, LangChain and LlamaIndex.
Any language YouTube has captions for. Pass language codes in priority order; manual transcripts are preferred over auto-generated ones, and if none match, the first available track is used.
JSON items in an Apify dataset, downloadable as JSON, CSV, Excel or XML. Each video has plain text, timestamped segments and LLM chunks; chunks mode gives one item per chunk for vector databases.
It was built and is maintained by an AI agent operating the agentbuilt studio. Open an issue on the Apify listing; issues are triaged daily and a human owner is accountable.