YouTube Transcript Scraper: Captions, Subtitles & Text
Pricing
from $5.00 / 1,000 transcript from captions
YouTube Transcript Scraper: Captions, Subtitles & Text
Get YouTube transcripts from videos, Shorts, channels, playlists and searches: full text, timestamped segments, SRT/VTT, title, channel, duration and publish date. Videos without captions are transcribed by Whisper. Failed videos are free.
Pricing
from $5.00 / 1,000 transcript from captions
Rating
0.0
(0)
Developer
Northloop Labs
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
YouTube Transcript Scraper with Whisper Fallback
Get the transcript of any public YouTube video, Short, channel, playlist or search. Paste links or keywords and get back for every video:
- the full transcript text
- timestamped segments (start and end in seconds), plus optional SRT and WebVTT subtitles
- the source of each transcript: YouTube captions (human-made or auto-generated) or Whisper
- video metadata: title, channel name, ID and URL, duration, publish date, views, likes, thumbnail and description
No captions? No problem. Most transcript scrapers return nothing when a video has no captions. This one downloads the audio and transcribes it with OpenAI's open-source Whisper model (via faster-whisper), running inside the Actor. No API key and no other account needed.
What you can use it for
- AI and RAG pipelines: feed clean transcripts with metadata into ChatGPT, Claude, a vector database or your own LLM app.
- Content research: read what a whole channel or a search's top videos actually say, without watching hours of video.
- Summaries, notes and clips: jump to the exact second something was said using the segments or SRT.
- Repurposing: turn videos into blog posts, newsletters, show notes or social posts.
- SEO and accessibility: publish text versions and subtitles of your own videos.
- Market and competitor monitoring: schedule a daily run on competitor channels and get only the newest videos as text.
How to scrape YouTube transcripts
- Paste video, Shorts, channel or playlist links (or plain video IDs) into YouTube URLs, and/or keywords into Search terms.
- Set Max videos per source for channels, playlists and searches.
- Optionally pick a Transcript language (empty = the video's own language) and the Transcript source.
- Click Start. Each video becomes one row in the dataset; download it as JSON, CSV, Excel or HTML.
Input
| Field | What it does |
|---|---|
urls | Video, Shorts, youtu.be, channel (@handle, /channel/…) or playlist URLs, or 11-character video IDs. Channels give their newest uploads; add /shorts or /streams to a channel URL for those tabs. |
searchTerms | Keywords searched on YouTube. The top results are transcribed. |
maxVideos | Max videos per channel, playlist or search term (default 10). |
searchSort | relevance (default) or date (newest uploads first). |
language | Caption language code such as en, es, de, pt-BR. Empty = the video's original language. |
transcriptSource | captions-then-whisper (default), captions-only (cheapest, never uses Whisper) or whisper-only (always transcribe the audio). |
preferManualCaptions | Use uploader-made captions before auto-generated ones (default on). |
maxWhisperMinutesPerVideo | Longer videos are skipped for free instead of sent to Whisper (default 60). |
maxTotalWhisperMinutes | Cap on Whisper minutes per run (default no cap; the run's maximum cost always applies). |
whisperLanguage | Optional spoken-language hint for Whisper. Empty = auto-detect. |
includeSegments, includeSrt, includeVtt | Output formats (segments on by default). |
Input example
{"urls": ["https://www.youtube.com/watch?v=8jPQjjsBbIc","https://www.youtube.com/@TED","https://www.youtube.com/playlist?list=PLFDE868BCF58A3950"],"searchTerms": ["how to make sourdough bread"],"maxVideos": 5,"language": "en","transcriptSource": "captions-then-whisper","includeSrt": true}
Output example
{"status": "ok","source": "captions","captionType": "manual","language": "en","translated": false,"videoId": "8jPQjjsBbIc","url": "https://www.youtube.com/watch?v=8jPQjjsBbIc","title": "How to stay calm when you know you'll be stressed | Daniel Levitin | TED","channelName": "TED","channelId": "UCAuUUnT6oDeKwE6v1NGQxug","channelUrl": "https://www.youtube.com/channel/UCAuUUnT6oDeKwE6v1NGQxug","durationSeconds": 740,"publishedAt": "2015-11-23","publishedTimestamp": null,"viewCount": 20164750,"likeCount": 269629,"thumbnailUrl": "https://i.ytimg.com/vi/8jPQjjsBbIc/sddefault.jpg","description": "Visit http://TED.com to get our entire library of TED Talks, transcripts, transl...","text": "A few years ago, I broke into my own house. I had just driven home, it was around midnight...","wordCount": 2232,"segments": [{ "start": 13.24, "end": 15.8, "text": "A few years ago, I broke into my own house." },{ "start": 16.88, "end": 18.1, "text": "I had just driven home," }],"input": "https://www.youtube.com/watch?v=8jPQjjsBbIc","error": null,"billedEvent": "transcript","billedCount": 1,"scrapedAt": "2026-10-20T01:00:21Z"}
Rows transcribed by Whisper have "source": "whisper", captionType: null, plus whisperModel, whisperLanguageProbability and transcribedSeconds. Rows that were not transcribed keep the metadata and explain why in status and error (no-captions, skipped-too-long, skipped-budget, skipped-live, no-speech, error). A note field explains language fallbacks. A run summary is saved as RUN_SUMMARY in the key-value store.
How much does it cost?
Pay per event, no platform usage costs on top:
- $0.005 per transcript from captions ($5 per 1,000 videos)
- $0.015 per Whisper audio minute, only for videos without captions (or in Whisper-only mode), counted per started minute
- $0.0025 per run start (one event per GB of memory; the default 2 GB = $0.005)
Examples: 100 videos with captions cost $0.505. A 10-minute video without captions costs $0.15. Use captions-only to never pay for Whisper.
You only pay for transcripts you get. Videos that are private, removed, members-only, live or upcoming, have no captions (with Whisper off), fail, contain no speech or are skipped by your caps are never charged. Charging happens only after a transcript is ready, and the run stops cleanly at the "Maximum cost per run" you set in Apify.
Captions, translations and Whisper
- Captions first. Uploader-made captions are used when they exist, otherwise YouTube's auto-generated captions in the spoken language. On auto-dubbed videos the Actor picks the original-language track, not a dub.
- Language choice. If you ask for a language the video has no captions in, the Actor tries YouTube's auto-translation. YouTube often refuses translations to automated clients; then you get the original-language captions with a
notesaying so. - Whisper fallback. Used only when a video has no captions at all, which is most common for music, very new uploads and some Shorts. Whisper base runs on CPU: at the default 2 GB it transcribes about 3–4 minutes of audio per minute of run time. Accuracy is good for clear speech in major languages and weaker on music, heavy accents and noise. Whisper writes the spoken language and does not translate. It doesn't label speakers.
- Best effort. Whisper needs the video's audio, which YouTube sometimes blocks for automated downloads. The Actor retries on fresh connections; if the audio still can't be downloaded, the row is an
errorand is free.
Use with AI agents, MCP, Make, Zapier, n8n and the API
AI agents and the Apify MCP server
Your AI agent can run this Actor as a tool through the Apify MCP server. In Claude, Cursor, VS Code or any other MCP client, add this server URL to load only this Actor:
https://mcp.apify.com?tools=northloop-labs/youtube-transcript-scraper
You sign in to Apify on first connection. Agents that use the default server can also find the Actor with search-actors and run it with call-actor. Pass maxTotalChargeUsd in callOptions to cap what one run may cost. The Actor uses pay-per-event pricing, so it also works with Apify's agentic payments.
Example prompt: "Get the transcripts of the last 5 videos on @mkbhd and summarize what each one says." MCP calls wait at most 45 seconds; captions-only runs usually finish within that. For Whisper runs the agent gets the run ID first and reads the transcripts with get-dataset-items once the run finishes.
Make, Zapier and n8n
Apify has official integrations for Make, Zapier and n8n. Use "Run Actor", pick northloop-labs/youtube-transcript-scraper, paste your input as JSON, and send the dataset items on to Google Sheets, Notion, Slack, a CRM or your LLM step. Inside Apify you can also connect Google Sheets or Slack, or add a webhook that fires when a run finishes.
API
Captions-only runs are fast enough for the synchronous endpoint, which returns the dataset items directly:
curl -X POST "https://api.apify.com/v2/acts/northloop-labs~youtube-transcript-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://www.youtube.com/watch?v=8jPQjjsBbIc"], "transcriptSource": "captions-only"}'
Or with the Python client (pip install apify-client). The JavaScript client works the same way:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("northloop-labs/youtube-transcript-scraper").call(run_input={"urls": ["https://www.youtube.com/@TED"], "maxVideos": 5})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["source"], item["title"], item["wordCount"])
Data & privacy
- The Actor reads only public YouTube pages, captions and audio for the videos you ask for. It never logs in, uses no cookies of yours and can't access private, unlisted-without-link or members-only content.
- Whisper runs inside the Actor. Audio is not sent to any third-party service, and the downloaded file is deleted as soon as it's decoded.
- Results are written only to your run's default dataset and key-value store in your Apify account. We keep no copy.
- Transcripts contain whatever was said in the video, which can include personal details. Follow the privacy rules that apply to you (for example, GDPR) when you store or publish them.
Your rights to the content
Videos and their captions are usually protected by copyright. You are responsible for having the rights or a legal basis to use the transcripts (for example, your own videos, research, accessibility, quotation or fair use in your country), and for respecting YouTube's terms. Check before you republish a transcript. This is not legal advice.
FAQ
How much does a YouTube transcript cost?
$0.005 per video with captions, plus a $0.005 start fee per run at the default memory. Videos without captions cost $0.015 per audio minute through Whisper. Failed and skipped videos are free.
What happens when a video has no captions?
With the default captions-then-whisper, the Actor downloads the audio and transcribes it with Whisper, and the row says "source": "whisper". With captions-only the row is no-captions and free.
Can I get transcripts of a whole channel or playlist?
Yes. Paste the channel or playlist URL and set Max videos per source. Channels are read newest first.
Can I get transcripts in another language?
Set Transcript language. Existing captions in that language are used first. Otherwise the Actor tries YouTube's translation and falls back to the original language with a note.
Does it work with Shorts and live streams?
Shorts, yes. Live and upcoming streams have no transcript yet and are skipped for free; ended streams work once YouTube has processed them.
Is the transcript timestamped?
Yes. segments holds start and end times in seconds; turn on SRT or WebVTT for subtitle files.
Why did I get the original language instead of my translation?
YouTube often blocks automatic translation for automated clients. The row's note field tells you when that happened.
Can I monitor a channel for new videos?
Schedule the Actor in Apify (for example, daily) with the channel URL and a small maxVideos, and send new rows to Sheets, Slack or a webhook.
How this Actor was made
This Actor was made with AI. An AI agent wrote and tested the code, this README and the store listing, and a human owns and maintains the Actor.
More Actors from Northloop Labs
- Podcast Transcriber for RSS & Apple Podcasts: Whisper transcripts of podcast episodes from RSS feeds and Apple Podcasts.
- Google Trends Scraper: Keywords, Regions & Related Queries: bulk Google Trends with comparisons and rising-query alerts.
- Google Ads Transparency Center Scraper: a company's ads from the Google Ads Transparency Center.
- Luma, Eventbrite & Meetup Events Scraper: tech, AI and startup events from Luma, Eventbrite and Meetup.
- Greenhouse, Lever, Ashby & Workable Jobs Scraper: open jobs from company career pages.
- EU TED & UK Find a Tender Scraper: UK and EU public tenders with daily alerts.
Feedback
Need speaker labels, a larger Whisper model, comments or another feature? Open an issue in the Issues tab. We read every one.