YouTube Scraper — Channels, Videos & Search
Pricing
$10.00 / 1,000 result scrapeds
YouTube Scraper — Channels, Videos & Search
Scrape YouTube channels, videos, and search results. Get title, channel, views, likes, comments, duration, publish date, and description. Ideal for content research and creator analytics. PPE pricing — pay only for results.
Pricing
$10.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Web Data Labs
Maintained by CommunityActor stats
0
Bookmarked
62
Total users
3
Monthly active users
13 hours ago
Last modified
Categories
Share
YouTube Scraper — Channels, Videos, Search & Comments (No API Key Required)
Extract YouTube channel data, video statistics, search results, and comment threads — no API key needed. No Google Cloud account, no OAuth, no quota limits. Export to JSON, CSV, Excel, or connect via Zapier / Make.com integration.
Why Use This YouTube Scraper?
YouTube is the world's largest video platform with over 2 billion monthly active users. The official YouTube Data API requires a Google Cloud account, API key setup, and has strict quota limits. This scraper bypasses all of that — giving you the same data without any API key or setup.
No API key needed. No Google Cloud account, no OAuth credentials, no quota limits. Just configure your input, run the actor, and download structured data.
Features
- Channel scraping — get subscriber counts, video lists, and channel metadata
- Video statistics — views, likes, comments, duration, tags, descriptions, and more
- YouTube search — search YouTube programmatically and get structured results
- Comment threads — pull a video's comments and replies as flat, structured rows
- No API key needed — zero setup, no Google Cloud account, no OAuth, no quotas
- Fast & reliable — handles rate limiting and anti-bot measures automatically
- JSON & CSV export — download results in JSON, CSV, Excel, XML, or RSS
- Zapier / Make.com integration — connect to 5,000+ apps via webhooks
- Multiple URL formats — supports @username, /c/channel, /channel/UC..., watch?v=, and youtu.be links
- Scheduled runs — set up recurring scrapes to track channel growth and video performance
Input Schema
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | search | One of: channel, video, search, comments |
url | string | For channel/video/comments | — | YouTube URL (channel or video) |
query | string | For search | — | Search query string |
maxItems | integer | No | 5 | Max rows to return (default: 5, max: 200) |
includeReplies | boolean | No | true | Comments action only — include reply rows |
sortBy | string | No | top | Comments action only — top or new |
minLikes | integer | No | 0 | Comments action only — skip comments below this like count |
proxyConfiguration | object | No | off | Comments action only — opt-in Apify Proxy |
Defaults and limits above are read from the actor's own input schema; the Input tab on this page is always the authoritative copy.
Action Types
channel— Scrape a YouTube channel's metadata and recent videos. Requiresurl.video— Get complete metadata for a single YouTube video. Requiresurl.search— Search YouTube and get structured results. Requiresquery.comments— Get the comment threads of a single video. Requiresurl.
Example Inputs
Scrape a channel:
{"action": "channel","url": "https://www.youtube.com/@mkbhd","maxItems": 5}
Get video details:
{"action": "video","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}
Search YouTube:
{"action": "search","query": "python programming tutorial","maxItems": 50}
Get a video's comments:
{"action": "comments","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","maxItems": 50,"includeReplies": true,"sortBy": "top"}
Output Schema
Video Details Output
{"type": "video","id": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","channel": "Rick Astley","channelUrl": "https://www.youtube.com/@RickAstleyYT","views": 1752745940,"likes": 18859741,"comments": 2400000,"duration": 213,"durationString": "3:33","uploadDate": "20091025","description": "The official video for...","tags": ["rick astley", "never gonna give you up"],"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","categories": ["Music"],"language": "en"}
Channel Video Output
{"type": "channelVideo","channel": "MKBHD","channelUrl": "https://www.youtube.com/@mkbhd","id": "D4QyStJWgCc","title": "Nothing Phone 4A/Pro Review","url": "https://www.youtube.com/watch?v=D4QyStJWgCc","views": 1204240,"duration": 724.0,"thumbnail": "https://i.ytimg.com/vi/D4QyStJWgCc/hqdefault.jpg"}
Search Result Output
{"type": "searchResult","query": "python tutorial","id": "K5KVEU3aaeQ","title": "Python Full Course for Beginners","url": "https://www.youtube.com/watch?v=K5KVEU3aaeQ","channel": "Programming with Mosh","views": 5756711,"duration": 7341.0,"thumbnail": "https://i.ytimg.com/vi/K5KVEU3aaeQ/hqdefault.jpg"}
Comment Output
One row per comment. Replies are flat rows, not nested — rebuild a thread by
grouping on parentCommentId.
{"type": "comment","id": "Ugzge340dBgB75hWBm54AaABAg","videoId": "dQw4w9WgXcQ","commentId": "Ugzge340dBgB75hWBm54AaABAg","text": "can confirm: he never gave us up","author": "@YouTube","authorChannelUrl": "https://www.youtube.com/@YouTube","authorId": "UCBR8-60-B28hp2BmDPdntcQ","likeCount": 313000,"publishedAt": "1 year ago","publishedTs": 1757548800,"updatedAt": null,"isReply": false,"parentCommentId": null,"isPinned": true,"authorIsUploader": false,"authorIsVerified": true,"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg"}
Field notes, so nothing here is a surprise:
- The
commentsfield on avideorow is a COUNT, not an array. Comment text only comes fromaction: "comments". publishedAtis relative text as YouTube renders it ("1 year ago"), not an ISO timestamp.publishedTsis a unix approximation derived from that same relative text — treat it as accurate to the day, not the second.parentCommentIdis the DIRECT parent, in compounda.bform for a reply to a reply. The separate YouTube Comments Scraper sets it to the thread's top-level comment instead — if you are migrating, that is the one field whose meaning differs.- There is no
replyCount. The extractor behind this action does not report one, and a count of "replies we happened to fetch under yourmaxItems" would read as0next to a thread with hundreds of replies. If you need a true reply count, use the comments scraper linked above. - Replies are capped per thread so that one popular thread cannot consume your
whole
maxItemsbudget. - A video with comments turned off, a live stream with chat instead of comments, and a request YouTube refused all look identical to the extractor. This action therefore fails the run rather than finishing with zero rows — you are not charged either way.
Code Examples
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")# Search YouTuberun = client.actor("cryptosignals/youtube-scraper").call(run_input={"action": "search","query": "python programming tutorial","maxItems": 50})# Fetch resultsfor item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['title']} — {item.get('views', 0):,} views")print(f" Channel: {item.get('channel', 'N/A')}")print(f" URL: {item['url']}")print("---")
# Get detailed video statisticsrun = client.actor("cryptosignals/youtube-scraper").call(run_input={"action": "video","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"Title: {item['title']}")print(f"Views: {item['views']:,} | Likes: {item.get('likes', 0):,}")print(f"Duration: {item.get('durationString', 'N/A')}")print(f"Tags: {', '.join(item.get('tags', []))}")
# Scrape a channel's recent videosrun = client.actor("cryptosignals/youtube-scraper").call(run_input={"action": "channel","url": "https://www.youtube.com/@mkbhd","maxItems": 30})videos = list(client.dataset(run["defaultDatasetId"]).iterate_items())total_views = sum(v.get("views", 0) for v in videos)print(f"Channel: {videos[0].get('channel', 'Unknown')} | {len(videos)} videos | {total_views:,} total views")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });// Search YouTubeconst run = await client.actor('cryptosignals/youtube-scraper').call({action: 'search',query: 'machine learning explained',maxItems: 30});// Fetch resultsconst { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => {console.log(`${item.title} — ${item.views?.toLocaleString()} views`);console.log(` Channel: ${item.channel} | ${item.url}`);});
// Get video detailsconst videoRun = await client.actor('cryptosignals/youtube-scraper').call({action: 'video',url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'});const { items: videos } = await client.dataset(videoRun.defaultDatasetId).listItems();const video = videos[0];console.log(`${video.title}`);console.log(`Views: ${video.views?.toLocaleString()} | Likes: ${video.likes?.toLocaleString()}`);console.log(`Duration: ${video.durationString} | Upload: ${video.uploadDate}`);
Use Cases
Market Research & Competitor Analysis
Track competitor channels, analyze their most popular videos, and discover trending content in your niche. Monitor view counts and engagement metrics over time.
Content Creator Analytics
Analyze any YouTube channel's performance — find their top-performing videos, track upload frequency, and benchmark against competitors.
SEO & Keyword Research
Search YouTube for keywords to understand what content ranks well. Find gaps in content coverage and discover high-demand topics with low competition.
Influencer Marketing
Evaluate YouTube influencers for sponsorship opportunities. Analyze subscriber counts, view-to-subscriber ratios, and content quality before reaching out.
Academic Research & Data Science
Collect YouTube data for academic studies, sentiment analysis, trend research, and social media analytics projects.
Lead Generation
Find YouTube channels in specific niches for outreach, sponsorship opportunities, or partnership development. Export channel data for your CRM.
Social Media Monitoring
Track brand mentions, product reviews, and industry discussions on YouTube with automated search queries. Set up recurring scrapes for ongoing monitoring.
Podcast & Media Research
Discover popular YouTube shows and interviews in your industry. Track episode frequency, guest appearances, and audience engagement.
Supported URL Formats
| Format | Example |
|---|---|
| @username | https://www.youtube.com/@mkbhd |
| /c/channel | https://www.youtube.com/c/channelname |
| /channel/UC... | https://www.youtube.com/channel/UCBcRF18a7Qf58cCRy5xuWwQ |
| watch?v= | https://www.youtube.com/watch?v=dQw4w9WgXcQ |
| youtu.be | https://youtu.be/dQw4w9WgXcQ |
Integrations
Connect YouTube Scraper with your favorite tools:
- Zapier — Trigger workflows when new data is scraped. Send YouTube data to Google Sheets, Slack, email, or 5,000+ apps.
- Make.com (Integromat) — Build complex automation workflows with YouTube data as a trigger or data source.
- Google Sheets — Export results directly to spreadsheets for collaborative analysis.
- Webhooks — Send results to any HTTP endpoint in real-time.
- API — Access results programmatically via the Apify API in Python, JavaScript, or any language.
- Scheduled runs — Set up daily or weekly scraping schedules to track channel growth.
FAQ
Do I need a YouTube API key?
No! This scraper works without any API key, OAuth credentials, or Google Cloud setup. No API key needed — it extracts data from YouTube's public pages directly.
Is this scraper free to use?
No. This actor uses pay-per-event (PPE) pricing: you are charged for each result delivered, plus Apify platform compute. Current per-result rates are on the Pricing tab of this actor's Store page. Apify's free plan includes platform credit you can use to try a small run.
How many results can I scrape?
Up to maxItems rows per run — a maximum of 200 — for channel videos, search results and comments. For single video details, each run returns one complete result. The 200-row ceiling is this actor's own maxItems limit; it is not a comment-volume feature. For very large comment pulls, use the dedicated YouTube Comments Scraper, which is a separate, still-published actor with its own limits.
Can I get the text of a video's comments?
Yes — run action: "comments" with the video URL. Note that the comments field on a video row is the video's comment count; the comment text lives in the comments action's rows.
Can I export to CSV or JSON?
Yes. Results are stored in an Apify dataset that can be exported to JSON, CSV, Excel (XLSX), XML, or RSS with a single click. You can also download via the API.
Does this download videos?
No. This scraper only extracts metadata (titles, views, likes, etc.). It does not download any video or audio content.
How often is the data updated?
Every run fetches fresh, real-time data directly from YouTube. There is no caching — you always get the latest statistics.
Can I scrape private or unlisted videos?
No. This scraper only works with publicly available YouTube content.
Can I use this with Zapier or Make.com?
Yes! Apify has native integrations with both Zapier and Make.com. Trigger workflows automatically whenever a scraping run completes.
What output formats are available?
You can download results in JSON, CSV, Excel (XLSX), XML, HTML, or RSS format.
How does this compare to the YouTube Data API?
The YouTube Data API requires a Google Cloud account, API key setup, and has a quota of 10,000 units/day. This scraper has no such limitations — no setup, no quotas, no API key needed.
Avoiding YouTube Blocks & Rate Limits
YouTube is one of the more aggressive platforms when it comes to blocking datacenter IP addresses. High-volume scraping from cloud infrastructure often results in CAPTCHAs, empty responses, or outright IP bans — even with reasonable request delays.
Residential proxies solve this by routing requests through real ISP addresses that YouTube treats as normal browser traffic. I run my own YouTube scraping pipelines through ThorData's residential proxy network — their rotating IPs across 195+ countries mean each request appears to come from a different real user, which avoids the blocks you get with datacenter proxies.
For light usage (a few hundred videos per day), the actor handles YouTube's limits fine on its own. Proxies become important when you're scaling up.
Legal & Compliance
This actor scrapes only publicly available metadata from YouTube. It does not download video or audio content, bypass access controls, or access any private data.
Important considerations:
- Comply with YouTube's Terms of Service and your local data protection laws (GDPR, CCPA, etc.) when using scraped data.
- Do not use this tool for spam, harassment, or any illegal purpose.
- The data extracted (view counts, titles, descriptions) is the same information visible to any YouTube visitor.
- The actor does not download or store videos — it only extracts metadata and statistics.
- For commercial use, consult your legal team regarding compliance with applicable regulations.
- Respect content creators' intellectual property rights and privacy.
This tool is intended for legitimate purposes such as market research, content analysis, competitive intelligence, academic study, and SEO research.
Pricing
This actor uses pay-per-event (PPE) pricing. You pay for each result this actor returns, plus platform compute. See the Pricing tab on this Store page for the current per-result rate. The actor is not free and is not compute-only.
Limitations
- Public content only — cannot access private, unlisted, or age-restricted videos
- Maximum 200 rows per run for channel videos, search and comments
- Comments: one video per run, and a run that finds no comments fails rather than returning an empty dataset
- Metadata and comments only — does not download video or audio files
- YouTube may change their page structure — the actor uses yt-dlp for reliable extraction
- Some video fields (tags, categories) may not be available for all videos
Related Scrapers by CryptoSignals
- TikTok Scraper — Short-form video profiles & hashtags
- Pinterest Scraper — Visual content, pins & boards
- Reddit Scraper — Community posts & discussions
Found this actor useful? Leave a review - it helps a lot. Something broken? Report it on the Issues tab.