YouTube Full Channel Transcripts Scraper
Pricing
from $10.50 / 1,000 results
YouTube Full Channel Transcripts Scraper
Bulk YouTube channel transcript scraper. Extract subtitles/captions and video + channel metadata from all videos of a channel. Export or push to Notion, Slack & more.
Pricing
from $10.50 / 1,000 results
Rating
0.0
(0)
Developer
Techforce Global
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
YouTube Full Channel Transcripts Scraper & MCP Connector
Pull the transcripts of every video on any YouTube channel — all of them, or up to a limit you set — together with rich video and channel metadata. No YouTube API key, no manual copy-pasting captions, no per-video clicking.
Built for researchers, content teams, analysts, and builders who need a channel's entire spoken content as clean, structured data — in minutes, not days of scrubbing through videos.
Paste a channel URL → get every video's transcript + metadata → deliver it straight into Notion, Slack, Jira, or your CRM.
⭐ Why This Actor?
- ✅ Just paste a channel URL — accepts
@handle,/channel/UC…,/c/name,/user/name, or even a single video URL (the channel is resolved automatically). No login, API key, or session tokens required. - ✅ Whole channel or a capped batch — set
maxVideosto0for every video on the channel, or any number for a quick sample. - ✅ Fast by default — videos are processed in parallel (tunable), so a 50-video channel finishes in about a minute instead of several.
- ✅ Language-aware transcripts — choose preferred languages in priority order, with automatic fallback to any available track (including auto-generated captions).
- ✅ Never silently drops videos — clips with no captions are still emitted with an empty transcript and a
transcriptErrornote, so your dataset stays complete. - ✅ Pick exactly the fields you want — toggle video- and channel-level metadata (views, likes, subscribers, country, total views, join date, and more) to keep runs fast and datasets clean.
- ✅ Anti-bot resilient — runs through Apify Proxy (residential by default) and supports optional YouTube cookies to slip past "confirm you're not a bot" walls.
- ✅ Deliver anywhere via MCP connectors — push transcripts straight into Notion, Slack, Jira, GitHub, Linear, Airtable, and more.
- ✅ Export-ready — JSON, CSV, Excel, or direct API integration for your own pipeline.
📝 Use Cases & ROI
| Use Case | Time Saved | What You Get |
|---|---|---|
| Content research & repurposing | 4–8 hrs/channel | Every video's full transcript, ready to summarize, clip, or repost |
| Competitor & market analysis | 3–6 hrs/channel | Searchable text of a competitor's entire back catalog |
| Training data / RAG & AI | 5–10 hrs/dataset | Clean, structured transcripts to feed models, search, or Q&A |
| SEO & topic mining | 2–4 hrs/batch | Keywords, descriptions, and spoken content across a channel |
| Accessibility & archiving | 2–5 hrs/channel | Text records of talks, lectures, or podcasts with timestamps |
🚀 How to Use
- Open the Actor on Apify.
- Add one or more Channel URLs (e.g.
https://www.youtube.com/@rajshamani). - Set Maximum videos —
0for the entire channel, or a number to cap it (default:10). - (Optional) Set Transcript languages in priority order (default:
en), and turn on timestamped segments if you need per-line timings. - (Optional) Tune Parallel videos for speed, and paste YouTube cookies if you hit bot checks.
- (Optional) Toggle the video and extended channel metadata fields you want.
- (Optional) Pick an MCP connector to deliver each transcript into Notion, Slack, Jira, etc.
- Click Run — results stream into the dataset as each video is processed.
- Download as CSV, Excel, or JSON — or let the connector push them into your tools automatically.
🌐 Proxy: requests run through Apify Proxy (residential group by default) because YouTube frequently blocks datacenter IPs. You normally don't need to change this. 🍪 Cookies (optional but recommended for large channels): paste cookies exported from a logged-in YouTube session (e.g. via the Get cookies.txt LOCALLY extension) to reduce bot-check challenges. 💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names, so you know what to put in Connector tool name.
🧩 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
channelUrls | Array | ✔️ Yes | One or more YouTube channel URLs. @handle, /channel/ID, /c/name, /user/name, and full video URLs are all accepted. |
maxVideos | Integer | Optional | Max videos to scrape per channel. 0 = all videos. Default: 10. |
maxConcurrency | Integer | Optional | How many videos to process at once (1–50). Higher is faster but uses more proxy bandwidth. Default: 10. |
transcriptLanguages | Array | Optional | Preferred transcript language codes in priority order (e.g. en, hi, es). Falls back to any available track. Default: ["en"]. |
includeTranscriptText | Boolean | Optional | Include the transcript as one plain-text string. Default: true. |
includeTranscriptSegments | Boolean | Optional | Include the transcript as {text, start, duration} segments with timestamps. Default: false. |
proxyConfiguration | Object | Optional | Proxy used for requests. Defaults to Apify Proxy with the RESIDENTIAL group — recommended. |
cookies | String | Optional | YouTube cookies in Netscape cookies.txt format to bypass bot checks. Kept secret. |
| Video metadata | Boolean toggles | Optional | includeChannelName, includeChannelId, includeDatePublished, includeViewCount (on by default); includeDateText, includeRelativeDateText, includeLikes, includeComments, includeKeywords, includeThumbnail, includeDescription (off by default). |
| Extended channel metadata | Boolean toggles | Optional | includeSubscriberCount (on by default); includeChannelHandle, includeChannelCreationDate, includeChannelCountry, includeChannelTotalViewCount, includeChannelTotalVideoCount (off by default). Each adds an extra request. |
mcpConnector | Connector | Optional | Deliver each transcript into a connector you've authorized (Notion, Slack, Jira, GitHub, Linear, Airtable, …). |
deliveryMode | Enum | Optional | summary (one call with the full transcript), chunked (split long transcripts across a few calls/pages), perSegment (one call per timestamped segment), or none. Default: summary. |
mcpTool | String | Optional | Tool to call on the connector (e.g. create_page, send_message, create_issue). |
mcpArguments | Object | Optional | Arguments for the tool; string values support {placeholders}. |
mcpMessageTemplate | String | Optional | Template rendered per video/segment, exposed as the {message} placeholder. |
Example — Scrape a whole channel
{"channelUrls": [{ "url": "https://www.youtube.com/@rajshamani" }],"maxVideos": 0,"transcriptLanguages": ["en", "hi"]}
Example — Quick sample with timestamps and full channel metadata
{"channelUrls": [{ "url": "https://www.youtube.com/@rajshamani" }],"maxVideos": 10,"includeTranscriptSegments": true,"includeSubscriberCount": true,"includeChannelCountry": true,"includeChannelTotalViewCount": true,"includeChannelTotalVideoCount": true}
Example — Scrape and post each transcript to Slack
{"channelUrls": [{ "url": "https://www.youtube.com/@rajshamani" }],"maxVideos": 25,"mcpConnector": "<your-slack-connector>","deliveryMode": "summary","mcpTool": "send_message","mcpArguments": { "channel": "#transcripts", "text": "{message}" },"mcpMessageTemplate": "*{title}*\n{videoUrl} — {language}, {segmentCount} segments\n\n{transcript}"}
Example — Scrape and create a Notion page per video (chunked for long videos)
{"channelUrls": [{ "url": "https://www.youtube.com/@rajshamani" }],"maxVideos": 0,"mcpConnector": "<your-notion-connector>","deliveryMode": "chunked","mcpTool": "create_page","mcpArguments": {"parent": { "page_id": "<your-page-id>" },"pages": [{"properties": { "title": "{title} (part {part}/{partCount})" },"content": "{transcript}"}]}}
Placeholders available in arguments / template
All modes: {videoUrl} · {videoId} · {title} · {channelName} · {channelId} · {datePublished} · {viewCount} · {subscriberCount} · {language} · {segmentCount} · {transcript} · {message}
Chunked mode adds: {part} · {partCount}
Per-segment mode adds: {start} · {duration} ({dur}) · {text}
📦 Output Fields
Each field below is included only if its toggle is on. Every record always carries videoId, videoUrl, and title.
| Field | Description |
|---|---|
videoId | YouTube video ID |
videoUrl | Canonical watch URL |
title | Video title |
transcript | Full transcript as a single plain-text string |
transcriptSegments | Timestamped segments: {text, start, duration} |
transcriptLanguage | Language code of the returned transcript |
transcriptIsGenerated | Whether the captions were auto-generated |
transcriptError | Present only when no transcript could be fetched |
channelName / channelId | Channel name and ID |
datePublished / dateText / relativeDateText | Upload date (ISO, human, and relative) |
viewCount / likes / comments | Video engagement counts |
keywords / thumbnail / description | Video tags, thumbnail URL, and description |
channelHandle | Channel @handle |
subscriberCount | Channel subscriber count |
channelCreationDate | Channel join/creation date |
channelCountry | Channel country |
channelTotalViewCount / channelTotalVideoCount | Channel lifetime views and total video count |
Example Output
[{"videoId": "dQw4w9WgXcQ","videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Bill Gates on India, AI & the Future | FO335 Raj Shamani","transcript": "Welcome back to the Figuring Out podcast. Today we have a very special guest...","transcriptLanguage": "en","transcriptIsGenerated": false,"channelName": "Raj Shamani","channelId": "UCF9hUft_7Rb0gVpZFXVDPUg","datePublished": "2024-11-12","viewCount": 1284530,"subscriberCount": 5600000}]
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Note: some extended channel fields (creation date, country, totals) are only available when the channel publishes them, and may come back
nullotherwise.
🔌 Integrations & Delivery
Deliver transcripts into any MCP connector you've authorized in Apify — no glue code, no webhooks:
- Notion — create a page per video (use
chunkedmode for long transcripts so Notion never times out) - Slack / Discord — post transcripts or summaries to a channel
- Jira / GitHub / Linear — open issues or tasks from video content
- Airtable / Google Sheets — append a structured row per video
- …or any other MCP-compatible connector
Credentials stay private — delivery runs through the Apify MCP Proxy, so the Actor never sees your connector tokens. You can also consume the dataset directly via the Apify API, or wire it into n8n, Zapier, and Make.
⚙️ Delivery modes:
summarysends the full transcript in one call,chunkedsplits a long transcript across a few calls/pages, andperSegmentsends one call per timestamped line (requires timestamped segments enabled). MCP delivery only runs on the Apify platform and never affects what's saved to the dataset.
🛠️ How It Works
my_actor/main.py reads the input, then for each channel:
- Optionally fetches channel-level metadata (subscribers, country, totals, join date) via
yt-dlpplus a light About-page read. - Lists the channel's videos with
yt-dlp(flat extraction, honoringmaxVideos). - Processes videos in parallel (bounded by
maxConcurrency); for each video it fetches full metadata only if a toggled field needs it, then pulls the transcript withyoutube-transcript-api. - Builds a record with just the enabled fields, pushes it to the dataset, and — if a connector is configured — delivers it via MCP.
Built with: Apify SDK for Python · yt-dlp · youtube-transcript-api · MCP
🆘 Support
For issues, custom scraping requests, or feature suggestions:
Email: bhavin.shah@techforceglobal.com
Need a Custom Pipeline?
Want multi-channel batch runs, scheduled refreshes, deeper enrichment, or a full data-warehouse integration?
📅 Book a Free 15-min Consultation
Made with ❤️ by Techforce Specialists in High-Performance Web Scrapers and AI Automation.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by YouTube or Google. YouTube® is a trademark of Google LLC; all trademarks are property of their respective owners. The Actor collects only publicly available information (video metadata and publicly published captions) and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.