Youtube Channel Scraper avatar

Youtube Channel Scraper

Pricing

$35.00/month + usage

Go to Apify Store
Youtube Channel Scraper

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

Newbs

Maintained by Community

Actor stats

79

Bookmarked

2.9K

Total users

38

Monthly active users

15 hours ago

Last modified

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-friendly channelLinksText
  • Video transcripts from available YouTube captions, plus transcriptStatus to 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: transcriptStatus distinguishes 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

FieldDescription
channelList 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.
keywordsSet to true when channel contains search keywords instead of channel names or URLs.
numberOfResultsNumber 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.
uniqueChannelsKeyword mode only. Set to true to keep at most one result from each YouTube channel per keyword. Useful for creator discovery and lead lists.
maxVideosPerChannelKeyword 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.
needVideoDetailsSet to true for full metadata, metrics, channel info, and transcripts. Set to false for faster basic video collection.
localeHlYouTube language hint, for example en, fr, or de.
localeGlYouTube country hint, for example US, FR, or DE.
acceptLanguageHTTP language header, for example en-US,en;q=0.9.
maxVideoDetailConcurrencyNumber of video detail pages scraped in parallel per channel.
proxyModeauto 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.
videoDetailProxyStrategyControls 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.
transcriptModestandard 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.
adaptiveTranscriptProxyFallbackEnabled 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.
adaptiveTranscriptMaxRetriesOptional 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.
adaptiveTranscriptRetryConcurrencyOptional 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.
residentialFallbackForMissingTranscriptsOlder compatibility switch for saved inputs. Prefer transcriptMode: "aggressive" for new runs.
proxyConfigurationOptional Apify Proxy configuration. Leave empty in auto mode unless you need custom proxy groups or country settings for fallback or always mode.
streamDatasetItemsEnabled 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"
}

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 readable label: URL lines 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 proxyMode set to auto for the best balance of speed and reliability.
  • Keep videoDetailProxyStrategy set to auto unless hosted tests show direct video details are being throttled or hiding caption tracks. Use proxyFirst only when the extra proxy traffic improves metadata quality enough to justify the cost.
  • Keep adaptiveTranscriptProxyFallback enabled if transcripts matter. Disable it for the cheapest metadata-only monitoring runs.
  • Leave adaptiveTranscriptMaxRetries empty 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: false when 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: true or maxVideosPerChannel: 1 to 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.

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.