Youtube Channel Scraper
Pricing
$35.00/month + usage
Youtube Channel Scraper
Scrape YouTube channels or keyword searches for video URLs, titles, metrics, transcripts, channel profiles, social links, descriptions and more. Fast, low-cost YouTube data extraction for monitoring, influencer research, SEO, and LLM workflows.
Pricing
$35.00/month + usage
Rating
4.1
(7)
Developer
Newbs
Maintained by CommunityActor stats
79
Bookmarked
2.9K
Total users
38
Monthly active users
15 hours ago
Last modified
Categories
Share
Scrape YouTube channels or YouTube search results and export clean video data from Apify. This actor collects video URLs, titles, thumbnails, descriptions, views, likes, comments, publish dates, duration, channel profile data, channel social links, and transcripts when YouTube exposes caption tracks.
It is built for teams that need reliable YouTube data without spending minutes clicking through channels manually.
What You Can Extract
- Latest videos from one or many YouTube channels
- Videos from keyword search results
- Video metadata: title, URL, ID, thumbnail, description, publish date, duration
- Engagement metrics: views, likes, comments
- Channel metadata: handle, subscriber count, profile image, banner image, total videos, total channel views, verification status
- Channel information and clean outbound links from the About section, surfaced as
channelDescription,channelLinks, and table-friendlychannelLinksText - Video transcripts from available YouTube captions, plus
transcriptStatusto explain missing transcripts - Clean JSON output ready for CSV, Excel, API, Make, Zapier, dashboards, or internal enrichment workflows
Common Use Cases
- Monitor competitor YouTube channels
- Build influencer and creator lead lists
- Track brand channels and campaign performance
- Collect video metadata for SEO or content research
- Extract transcripts for summarization, search, classification, or LLM pipelines
- Find creator websites, social profiles, storefronts, and lead/contact pages from channel About links
- Feed YouTube data into CRMs, spreadsheets, BI tools, and automation workflows
Why Use This Actor
- Optimized for speed: channel and video details can run in parallel.
- Balanced proxy use:
proxyMode: "auto"keeps search/list collection and video detail scraping direct first, then uses proxy-backed HTTP only for hard failures or incomplete core metadata. - Detail-only proxy control:
videoDetailProxyStrategy: "proxyFirst"is available for advanced tests when direct video-detail requests are unreliable, while keeping channel/search collection direct. - Better transcript coverage: direct caption extraction is combined with Innertube caption-track discovery, adaptive proxy recovery when batch coverage is poor, and optional aggressive residential fallback for maximum transcript attempts.
- Clear transcript diagnostics:
transcriptStatusdistinguishes recovered transcripts from no exposed caption tracks, caption fetch failures, and detail fetch failures. - More resilient runs: incomplete detail rows are retried directly before proxy fallback, and one bad channel URL no longer stops valid sources from returning results.
- Larger-run safety: completed rows stream to the dataset during the run instead of waiting for all videos to finish.
- Cleaner channel lead data: empty social placeholders are removed, and About links are visible in priority dataset views.
- Integration ready: structured input schema, dataset schema, and output schema make results easier to use through the Apify UI, API, MCP, Make, Zapier, and scheduled runs.
Latest Apify benchmark on build 0.0.302, using 102 normal videos from 6 YouTube channels with standard transcript mode:
- 102/102 rows succeeded.
- 62/102 transcripts were recovered.
- 102/102 rows included
publishedAt, channel About data, and channel links. - 0 Shorts, 0 duplicate URLs, and 0 inflated like-count issues were found.
- Runtime was about 135 seconds, about 45 results/minute.
- Apify platform usage was about $0.17 for the run, about $1.69 per 1,000 results.
Actual runtime and cost depend on number of channels, number of videos, selected proxy mode, transcript availability, and YouTube response speed.
Input
Minimal Channel Input
{"channel": ["https://www.youtube.com/@adidas/videos", "zara"],"keywords": false,"numberOfResults": 2,"needVideoDetails": true}
Keyword Search Input
{"channel": ["running shoes", "summer fashion campaign"],"keywords": true,"numberOfResults": 10,"uniqueChannels": true,"maxVideosPerChannel": 1,"needVideoDetails": true}
Fast List-Only Input
Use this when you only need fast data from YouTube list/search results. This mode does not open each video page, so it is much faster. It can still return title, URL, video ID, thumbnail, channel name, channel URL, channel avatar, description snippet, relative publish text, duration, live/upcoming status, and visible view count when YouTube exposes them in the listing.
{"channel": ["https://www.youtube.com/@adidas/videos"],"keywords": false,"numberOfResults": 25,"needVideoDetails": false}
Input Options
| Field | Description |
|---|---|
channel | List of YouTube channel handles, channel URLs, /videos URLs, direct video URLs, or search terms. Direct video URLs may use watch?v=, youtu.be, /embed/, or /live/ formats. |
keywords | Set to true when channel contains search keywords instead of channel names or URLs. |
numberOfResults | Number of videos to collect for each item in channel. With keywords: false, this is per channel. With keywords: true, this is per keyword before duplicate/channel limits are applied. |
uniqueChannels | Keyword mode only. Set to true to keep at most one result from each YouTube channel per keyword. Useful for creator discovery and lead lists. |
maxVideosPerChannel | Keyword mode only. Limits how many videos from the same channel are returned for each keyword. Set 1 for one video per creator, or leave empty for no limit. |
needVideoDetails | Set to true for full metadata, metrics, channel info, and transcripts. Set to false for faster basic video collection. |
localeHl | YouTube language hint, for example en, fr, or de. |
localeGl | YouTube country hint, for example US, FR, or DE. |
acceptLanguage | HTTP language header, for example en-US,en;q=0.9. |
maxVideoDetailConcurrency | Number of video detail pages scraped in parallel per channel. |
proxyMode | auto is recommended. Keyword/channel collection and video detail requests start direct, then hard failures or incomplete core metadata can retry with proxy-backed HTTP. Missing transcripts only use residential fallback when transcriptMode is aggressive. Use always to proxy collection too, or never for maximum speed and lowest cost. |
videoDetailProxyStrategy | Controls only per-video detail requests. Keep auto for normal use. Use proxyFirst only as an advanced troubleshooting mode when direct video-detail requests are unreliable or caption tracks are hidden. It can increase cost and may be slower. |
transcriptMode | standard is faster and cheaper, with adaptive proxy recovery only when batch transcript coverage is poor. aggressive retries missing transcripts more eagerly with residential proxy and can recover captions that are blocked from the direct path. |
adaptiveTranscriptProxyFallback | Enabled by default in standard transcript mode. It retries missing transcripts with proxy only when the batch would otherwise have weak transcript coverage. Disable it only when lowest proxy cost matters more than transcript coverage. |
adaptiveTranscriptMaxRetries | Optional cap for adaptive transcript retries. Leave empty for automatic behavior: all missing transcripts on small runs, and up to 80 round-robin rows across channels on larger runs. |
adaptiveTranscriptRetryConcurrency | Optional parallelism for adaptive transcript retries. Leave empty for the default. Increase only when transcript-heavy runs need more speed and your proxy setup can handle the extra parallel requests. |
residentialFallbackForMissingTranscripts | Older compatibility switch for saved inputs. Prefer transcriptMode: "aggressive" for new runs. |
proxyConfiguration | Optional Apify Proxy configuration. Leave empty in auto mode unless you need custom proxy groups or country settings for fallback or always mode. |
streamDatasetItems | Enabled by default. Writes rows as they finish so large runs preserve completed data if the run is interrupted. |
Output
The actor stores results in the default Apify dataset. You can download the data as JSON, CSV, Excel, XML, RSS, or HTML from the Apify Console, or consume it through the Dataset API.
Example output item:
{"title": "Chasing Sub 2: The Journey of Sabastian Sawe's Historic 1:59:30 Marathon","transcript": "Full transcript text when captions are available...","transcriptStatus": "available","transcriptSource": "watch_html","transcriptLanguage": "en","author": "@adidas","videoUrl": "https://www.youtube.com/watch?v=qRr0lmYvp5g","coverImage": "https://i.ytimg.com/vi/qRr0lmYvp5g/hqdefault.jpg","subscriberCount": 2330000,"likeCount": 5400,"description": "Video description text...","viewCount": 103403,"commentCount": 201,"publishedAt": "2026-04-30T00:00:00.000Z","duration": "00:12:30","id": "qRr0lmYvp5g","amountOfVideos": 972,"profilePicture": "https://yt3.googleusercontent.com/...","profileBanner": "https://yt3.googleusercontent.com/...","channelDescription": "Through sport, we have the power to change lives.","channelLinks": {"website": "https://www.adidas.com/","Instagram": "https://instagram.com/adidas"},"channelLinksText": "website: https://www.adidas.com/\nInstagram: https://instagram.com/adidas","channelInfo": {"channelDescription": "Through sport, we have the power to change lives.","link": {"website": "https://www.adidas.com/","Instagram": "https://instagram.com/adidas"},"additionalInfo": {"subscribers": "2.33M subscribers","videos": "972 videos","views": "481,647,084 views"}},"channelTotalViews": 481647084,"isChannelVerified": true,"commentsTurnedOff": false,"scrapingStatus": "success"}
Channel About Links
When YouTube exposes channel About data, the actor returns the description and outbound links in two easy-to-use top-level fields:
channelDescription: the channel About description.channelLinks: only real links found on the channel, such as websites, Instagram, Facebook, TikTok, X/Twitter, stores, courses, or custom links. Empty placeholders are omitted.channelLinksText: the same links flattened into readablelabel: URLlines so Apify Overview, CSV, and spreadsheet exports show the URLs directly.
The full nested About object is still available as channelInfo for backwards compatibility. The Overview view prioritizes channelDescription and channelLinksText so users can see the useful links immediately. The Channel Profile view keeps both the readable text and the structured channelLinks object.
Transcript Behavior
The actor first tries direct YouTube caption sources because they are faster and cheaper than UI automation. If YouTube blocks or hides captions, the actor uses Innertube caption-track requests. In standard mode, it can run an adaptive proxy retry only when the batch would otherwise have poor transcript coverage. In aggressive mode, it retries missing transcripts more eagerly with residential proxy. If a video has no caption tracks exposed by YouTube even after the selected recovery path, transcript will be null.
Use transcriptStatus to understand why:
available: a transcript was recovered.no_caption_tracks: YouTube did not expose caption tracks through the checked HTTP/Innertube sources.caption_fetch_failed: caption tracks were found, but YouTube did not return usable caption text.detail_fetch_failed: the video detail page itself could not be read.not_requested: full video details/transcripts were disabled.
For maximum transcript attempts, enable:
{"proxyMode": "auto","transcriptMode": "aggressive"}
This retries videos that still miss transcripts with Apify residential proxy. It can improve recovery in blocked-caption cases, but it is slower and costs more than standard mode. The older residentialFallbackForMissingTranscripts boolean still works for saved inputs.
Speed And Cost Tips
- Keep
proxyModeset toautofor the best balance of speed and reliability. - Keep
videoDetailProxyStrategyset toautounless hosted tests show direct video details are being throttled or hiding caption tracks. UseproxyFirstonly when the extra proxy traffic improves metadata quality enough to justify the cost. - Keep
adaptiveTranscriptProxyFallbackenabled if transcripts matter. Disable it for the cheapest metadata-only monitoring runs. - Leave
adaptiveTranscriptMaxRetriesempty for normal transcript-focused runs. Lower it only when you need cheaper metadata-first monitoring. - For several channels with transcripts enabled, the default video-detail concurrency is tuned for faster hosted runs. If YouTube starts throttling a large run, lower
maxVideoDetailConcurrency. - Use
needVideoDetails: falsewhen you only need fast listing data such as video URL, title, thumbnail, channel, duration, relative publish text, and visible views. - For broad keyword searches, use
uniqueChannels: trueormaxVideosPerChannel: 1to avoid many repeated videos from the same creator. - Start with the default detail concurrency for normal runs, then increase carefully if YouTube is not throttling.
- Increase concurrency carefully; YouTube can throttle or change responses when runs become too aggressive.
- Use schedules for recurring monitoring instead of running large backfills repeatedly.
Integrations
This actor works with standard Apify platform features:
- Dataset export in JSON, CSV, Excel, XML, RSS, and HTML
- Apify API and API clients
- Scheduled runs for channel monitoring
- Webhooks after every run
- Make, Zapier, and other no-code automation tools
- Actor chaining and MCP/AI-agent workflows through the output schema
FAQ
Can I scrape multiple channels in one run?
Yes. Add multiple handles or URLs to the channel array. The actor processes channels concurrently based on maxChannelConcurrency.
Can I search by keyword instead of channel?
Yes. Put search terms in channel and set keywords to true.
Why is a transcript missing?
YouTube does not expose captions for every video. Some videos have no captions, some captions are region or client restricted, and some can be hidden by YouTube. In those cases the actor returns transcript: null instead of fabricating data.
Why are comments sometimes null?
Some videos have comments disabled or hidden. The actor returns commentsTurnedOff when it can detect that state.
What proxy mode should I use?
Use auto for most runs. It keeps search, channel collection, and video details direct first, then uses proxy fallback for hard failures or incomplete core metadata. Use videoDetailProxyStrategy: "proxyFirst" only when Apify-hosted detail requests are slower or less reliable direct-first. Enable transcriptMode: "aggressive" only when transcript coverage is more important than speed and cost. Use never for the lowest cost, or always only if collection itself is consistently blocked.
Related Actors
Responsible Use
This actor extracts publicly available YouTube data. You are responsible for using the data in compliance with applicable laws, YouTube terms, privacy rules, and your own internal policies. Do not use scraped data for spam, harassment, or unlawful profiling.