YouTube Full Channel Transcripts Scraper avatar

YouTube Full Channel Transcripts Scraper

Pricing

from $10.50 / 1,000 results

Go to Apify Store
YouTube Full Channel Transcripts Scraper

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

Techforce Global

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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 maxVideos to 0 for 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 transcriptError note, 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 CaseTime SavedWhat You Get
Content research & repurposing4–8 hrs/channelEvery video's full transcript, ready to summarize, clip, or repost
Competitor & market analysis3–6 hrs/channelSearchable text of a competitor's entire back catalog
Training data / RAG & AI5–10 hrs/datasetClean, structured transcripts to feed models, search, or Q&A
SEO & topic mining2–4 hrs/batchKeywords, descriptions, and spoken content across a channel
Accessibility & archiving2–5 hrs/channelText records of talks, lectures, or podcasts with timestamps

🚀 How to Use

  1. Open the Actor on Apify.
  2. Add one or more Channel URLs (e.g. https://www.youtube.com/@rajshamani).
  3. Set Maximum videos0 for the entire channel, or a number to cap it (default: 10).
  4. (Optional) Set Transcript languages in priority order (default: en), and turn on timestamped segments if you need per-line timings.
  5. (Optional) Tune Parallel videos for speed, and paste YouTube cookies if you hit bot checks.
  6. (Optional) Toggle the video and extended channel metadata fields you want.
  7. (Optional) Pick an MCP connector to deliver each transcript into Notion, Slack, Jira, etc.
  8. Click Run — results stream into the dataset as each video is processed.
  9. 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

FieldTypeRequiredDescription
channelUrlsArray✔️ YesOne or more YouTube channel URLs. @handle, /channel/ID, /c/name, /user/name, and full video URLs are all accepted.
maxVideosIntegerOptionalMax videos to scrape per channel. 0 = all videos. Default: 10.
maxConcurrencyIntegerOptionalHow many videos to process at once (1–50). Higher is faster but uses more proxy bandwidth. Default: 10.
transcriptLanguagesArrayOptionalPreferred transcript language codes in priority order (e.g. en, hi, es). Falls back to any available track. Default: ["en"].
includeTranscriptTextBooleanOptionalInclude the transcript as one plain-text string. Default: true.
includeTranscriptSegmentsBooleanOptionalInclude the transcript as {text, start, duration} segments with timestamps. Default: false.
proxyConfigurationObjectOptionalProxy used for requests. Defaults to Apify Proxy with the RESIDENTIAL group — recommended.
cookiesStringOptionalYouTube cookies in Netscape cookies.txt format to bypass bot checks. Kept secret.
Video metadataBoolean togglesOptionalincludeChannelName, includeChannelId, includeDatePublished, includeViewCount (on by default); includeDateText, includeRelativeDateText, includeLikes, includeComments, includeKeywords, includeThumbnail, includeDescription (off by default).
Extended channel metadataBoolean togglesOptionalincludeSubscriberCount (on by default); includeChannelHandle, includeChannelCreationDate, includeChannelCountry, includeChannelTotalViewCount, includeChannelTotalVideoCount (off by default). Each adds an extra request.
mcpConnectorConnectorOptionalDeliver each transcript into a connector you've authorized (Notion, Slack, Jira, GitHub, Linear, Airtable, …).
deliveryModeEnumOptionalsummary (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.
mcpToolStringOptionalTool to call on the connector (e.g. create_page, send_message, create_issue).
mcpArgumentsObjectOptionalArguments for the tool; string values support {placeholders}.
mcpMessageTemplateStringOptionalTemplate 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.

FieldDescription
videoIdYouTube video ID
videoUrlCanonical watch URL
titleVideo title
transcriptFull transcript as a single plain-text string
transcriptSegmentsTimestamped segments: {text, start, duration}
transcriptLanguageLanguage code of the returned transcript
transcriptIsGeneratedWhether the captions were auto-generated
transcriptErrorPresent only when no transcript could be fetched
channelName / channelIdChannel name and ID
datePublished / dateText / relativeDateTextUpload date (ISO, human, and relative)
viewCount / likes / commentsVideo engagement counts
keywords / thumbnail / descriptionVideo tags, thumbnail URL, and description
channelHandleChannel @handle
subscriberCountChannel subscriber count
channelCreationDateChannel join/creation date
channelCountryChannel country
channelTotalViewCount / channelTotalVideoCountChannel 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 null otherwise.


🔌 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 chunked mode 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: summary sends the full transcript in one call, chunked splits a long transcript across a few calls/pages, and perSegment sends 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:

  1. Optionally fetches channel-level metadata (subscribers, country, totals, join date) via yt-dlp plus a light About-page read.
  2. Lists the channel's videos with yt-dlp (flat extraction, honoring maxVideos).
  3. 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 with youtube-transcript-api.
  4. 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.