Automatically transcribe every new video from a YouTube channel (for RAG or notes)
To keep a knowledge base or RAG index up to date with a YouTube channel, run YouTube Transcript Scraper on Apify on a schedule with Only new videos turned on. Each run looks at the channel's or playlist's latest uploads and returns transcripts only for videos earlier runs didn't, with timestamped segments, title, duration and views. Videos without captions yet are tried again next run, since YouTube often adds auto-captions a few hours after upload. It costs $1.50 per 1,000 transcripts, so a channel posting a few videos a week costs a few cents a month.
Open YouTube Transcript Scraper on Apify $1.50 per 1,000 transcripts ($1.20 on Gold and above)
Step by step
- Create a free Apify account. Sign up at apify.com. The free plan's $5 monthly credit covers about 3,300 transcripts.
- Add the channels. Open YouTube Transcript Scraper and paste channel or playlist URLs into Videos (for example https://www.youtube.com/@hubermanlab). Set the caption language, or a language to translate into.
- Turn on Only new videos. Under Monitoring, switch on Only new videos. Keep timestamps on if you want to link back to the moment in the video.
- Save it as a task and schedule it. Click Save as a new task, then Schedule it daily. The first run transcribes the latest uploads; later runs only new ones.
- Feed your pipeline. On the task's Integrations tab, call a webhook on your ingestion endpoint, save to Google Drive, or let n8n, Make or Zapier pick up each run's transcripts and add them to your vector store.
Do it from code
One run, only new videos (cURL)
curl -X POST "https://api.apify.com/v2/acts/automationnation~youtube-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videos": ["https://www.youtube.com/@hubermanlab"], "language": "en", "onlyNewVideos": true}'
# Each row: videoId, title, channel, duration, transcript, segments (start, duration, text), change: "new"A daily job, set up through the API (cURL)
# 1. Save the channel as a task
curl -X POST "https://api.apify.com/v2/actor-tasks?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"actId": "4diCiQqj2Dm87rc45", "name": "channel-transcripts", "input": {"videos": ["https://www.youtube.com/@hubermanlab"], "language": "en", "onlyNewVideos": true}}'
# 2. Run it every morning at 8:00 (TASK_ID is the id returned by step 1)
curl -X POST "https://api.apify.com/v2/schedules?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "channel-transcripts-daily", "cronExpression": "0 8 * * *", "timezone": "Europe/London", "isEnabled": true, "isExclusive": true, "actions": [{"type": "RUN_ACTOR_TASK", "actorTaskId": "TASK_ID"}]}'
From an AI assistant (MCP)
Add this MCP server URL to Claude, ChatGPT or Cursor and ask in plain English:
https://mcp.apify.com?tools=automationnation/youtube-transcript-scraper
Alternatives
youtube-transcript-api (Python) is free and works for occasional use from a home connection; from cloud servers YouTube often blocks it with RequestBlocked. The YouTube Data API returns captions only for videos you own. Whisper or another speech-to-text model transcribes the audio itself, which costs more and needs the audio downloaded first. See the side-by-side comparison.
FAQ
How many videos does each run check?
A channel's or playlist's latest 15 uploads (YouTube's feed limit), so run it at least as often as the channel posts 15 videos.
What if a new video has no captions yet?
It's listed without a transcript, free, and tried again on the next run.
Can I get transcripts in another language?
Yes: set Translate to, and YouTube's machine translation is used when the video has captions.
Do Shorts count?
Yes. Shorts in the channel's uploads are transcribed like any other video.
Written by AutomationNation, the developer of YouTube Transcript Scraper. Prices checked October 2026.