YouTube Transcript Scraper - Bulk, Timestamps, SRT, Chapters
Pricing
from $3.00 / 1,000 video transcript scrapeds
YouTube Transcript Scraper - Bulk, Timestamps, SRT, Chapters
YouTube transcript scraper and API: extract captions for many videos in bulk as timestamped segments, full text or SRT, with chapters, metadata and any caption language. Charged only when a transcript is returned. For LLM/RAG, SEO and subtitles. No API key.
Pricing
from $3.00 / 1,000 video transcript scrapeds
Rating
0.0
(0)
Developer
Ha Phan Thanh Hai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
YouTube Transcript Scraper: bulk transcripts, timestamps, SRT, chapters
Get YouTube transcripts for many videos in one run: timestamped segments, full text or SRT, chapters and metadata, in the caption language you choose. No login, no API key.
What does YouTube Transcript Scraper do?
- Accepts watch, youtu.be, shorts and embed URLs or bare video IDs.
- Prefers manual captions, then auto-generated, in your language priority list.
- Output as JSON (segments + full text), plain text or SRT.
- Video metadata: title, channel, publish date, duration, available caption languages.
- Chapters parsed from the description.
- Optional
translateTousing YouTube's own translation (best effort).
Why use it
- Pay only for transcripts returned: videos with errors are free.
- Bulk-ready, with clear per-video error codes.
- Reliable via residential proxy by default, with retries on bot checks.
- No API key, no video download.
Use cases
- Feeding video content to LLMs, RAG and summarisers.
- Content research and keyword analysis of competitor channels.
- Subtitles (SRT) for repurposing, translation or accessibility.
- Searchable archives with timestamped quotes.
- Podcast and course transcripts for study notes.
How to use
- Open the Actor on Apify and click Try for free (or call it through the API).
- Paste video URLs or IDs and set preferred languages and format.
- Click Start, then download the dataset as JSON, CSV, Excel or HTML, or read it through the API.
Input example
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ", "https://youtu.be/9bZkp7q19f0", "https://www.youtube.com/shorts/xxxxxxxxxxx", "aircAruvnKk"],"languages": ["en"],"format": "json","includeChapters": true,"translateTo": "es","proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}}
videoUrls: watch / youtu.be / shorts / embed URLs or bare 11-char IDs.languages: priority list. For each language: manual captions first, then auto-generated. Nothing matches: the first available track is returned (seelanguage).format:json(segments + fullText),text(fullText only),srt(addssrt).translateTo: optional machine translation of the track (see limitations).
Output example
{"videoId": "aircAruvnKk","url": "https://www.youtube.com/watch?v=aircAruvnKk","title": "But what is a neural network? | Deep learning chapter 1","channel": "3Blue1Brown","channelId": "UCYO_jab_esuFRV4b17AJtAw","publishedAt": "2017-10-05T08:15:00-07:00","durationSec": 1112,"language": "en","isAutoGenerated": false,"availableLanguages": [{"code": "en", "autoGenerated": false, "translatable": true}],"segments": [{"start": 4.22, "dur": 1.18, "text": "This is a three."}],"fullText": "This is a three. ...","srt": null,"chapters": [{"start": 0, "title": "Introduction example"}],"error": null}
Videos that cannot be transcribed are still returned (not charged) with error set to one of: no_captions, age_restricted, bot_check, private_video, login_required, unavailable, invalid_url, transcript_fetch_failed.
Pricing
Pay per event, no subscription. You pay only for what is returned:
| Event | Price per 1,000 | 1,000 | 10,000 | 100,000 |
|---|---|---|---|---|
| video | $3.00 | $3.00 | $30.00 | $300.00 |
Example: 1,000 videos cost $3.00; 10,000 cost $30.00.
Videos without a returned transcript are not charged. Residential proxy traffic is not included: it is billed to you as Apify platform usage, about 0.2 MB per video. Check the run cost in the Apify console for your own mix.
Integrations & API
Run it from code with the Apify API. Replace <APIFY_TOKEN> with your API token.
Python (pip install apify-client)
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("bachiembmt/youtube-transcript-batch").call(run_input={"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk"], "languages": ["en"], "format": "json", "includeChapters": True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
cURL (run synchronously and get dataset items)
curl -X POST "https://api.apify.com/v2/acts/bachiembmt~youtube-transcript-batch/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk"], "languages": ["en"], "format": "json", "includeChapters": true}'
Works with:
- Make and Zapier: use the Apify app/module to run this Actor and pass the dataset on.
- n8n: use the Apify node or an HTTP Request node with the API call above.
- Google Sheets: export the dataset as CSV, or use the Apify integration to append rows automatically.
- Webhooks: trigger your own endpoint when a run finishes; combine with Apify schedules for recurring jobs.
- AI agents: expose the Actor as a tool through the Apify MCP server.
FAQ
Does it work for videos without captions?
No. It returns existing manual or auto-generated captions only; there is no speech-to-text. Those videos come back with error: no_captions and are free.
Why a residential proxy?
YouTube challenges most datacenter IPs. Residential is the default; on a bot check the Actor retries on new sessions, and if all fail the video is reported as bot_check (free, retry later).
Does it download the video? No, only caption text.
Do I need an account or API key for the source? No. The Actor needs no login or source API key. You only need an Apify account to run it.
Is it legal to scrape this data? Only public caption data is read. Respect YouTube's Terms of Service and the creators' copyright when reusing transcripts. This is general information, not legal advice.
Limitations
- Only videos that have captions (manual or auto-generated). No speech-to-text is performed.
- Age-restricted and private videos are not accessible without login and are reported as errors.
- Proxy: the actor uses Apify Proxy by default and, on a bot check, retries up to 3 times on a new proxy session and tries other YouTube client profiles. Default is the RESIDENTIAL group: YouTube challenges most datacenter IPs. Residential traffic is billed as platform usage (~0.2 MB per video).
- YouTube may show a "Sign in to confirm you're not a bot" check for some IPs; if all retries fail the video is reported as
bot_check(not charged, retry later). Requests are throttled to ~1/s with retries. translateTorelies on YouTube'stlangendpoint, which may be rate-limited or refused; then the original language is returned (checklanguage) and a warning is logged.publishedAtis read from the public watch page; it may benullif unavailable.- Chapters are parsed from timestamps in the description (needs at least 3, first at 0:00).
- YouTube's internal API can change and temporarily break extraction.