YouTube Scraper (Free, No API Key)
Under maintenancePricing
Pay per usage
YouTube Scraper (Free, No API Key)
Under maintenanceFree YouTube scraper. Two modes: 'channel' lists every video on a channel handle/URL. 'video' fetches full metadata (views, likes, tags, thumbnails) for specific videos + optional comments. No API key. No quotas. No login.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
casper smartwater
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
YouTube Channel + Video Scraper — Free, No API Key
Turn any YouTube channel or video URL into clean structured data. Channel video lists, full video metadata (views, likes, tags, duration, thumbnails), and optional comments — all free, no Google API key, no quotas, no login.
Powered by yt-dlp, the gold-standard YouTube extraction library used by millions. This Actor wraps it in a tidy input/output interface and runs it on Apify's infrastructure.
✨ Why this Actor
- Free — most YouTube scrapers on the Apify Store charge $20-50/mo. This one is $0.
- No Google API key — the official YouTube Data API has a 10,000-unit/day quota and requires OAuth. This Actor bypasses both.
- No login — works on public videos and channels.
- Battle-tested — yt-dlp handles every YouTube edge case (signature decryption, age gates, region restrictions, livestreams, shorts).
🚀 Quick start
Get every video on MKBHD's channel:
{"source": "channel","channel": "@mkbhd","maxVideos": 100}
Get full metadata + comments for a specific video:
{"source": "video","videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments": 200}
Get videos from a channel ID:
{"source": "channel","channel": "UCsXVk37bltHxD1rDPwtNM8Q","maxVideos": 50,"enrichDetails": true}
📦 Output schema
Channel mode (lightweight)
| Field | Type | Notes |
|---|---|---|
id | str | 11-char video ID |
title | str | Video title |
url | str | Full youtube.com/watch?v=… URL |
duration | int | Seconds |
view_count | int | Lifetime views (when available) |
channel_id | str | UC… ID |
channel | str | Channel display name |
Video mode (full metadata)
Everything above plus:
| Field | Type | Notes |
|---|---|---|
description | str | Full video description |
like_count, comment_count | int | Engagement counts |
upload_date | str | YYYY-MM-DD |
categories, tags | array | YouTube category + tags |
thumbnail | str | Highest-res thumbnail URL |
language | str | Auto-detected language code |
live_status | str | not_live / was_live / is_live / is_upcoming |
channel_follower_count | int | Subscriber count at scrape time |
comments | array | When maxComments > 0. Each: id, text, author, like_count, timestamp, parent |
🎯 Use cases
- Channel auditing — pull every video from a competitor, sort by views, see what works
- Content trend tracking — sweep N channels daily, find rising topics
- Comment sentiment analysis — feed comments into an LLM, score sentiment, detect themes
- Build a video search engine — index titles + descriptions across niche channels
- Auto-tweet new uploads — schedule daily, post the latest video
- YouTube SEO research — see which tags + categories successful videos use
- Sponsorship outreach — find channels in a niche, get subscriber counts + recent engagement
⚙️ Input parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
source | str | channel | channel or video |
channel | str | — | Required for source=channel. @handle, full URL, or channel ID |
videos | array | [] | Required for source=video. URLs or 11-char IDs |
maxVideos | int | 50 | Channel mode cap |
enrichDetails | bool | false | Channel mode: fetch full per-video metadata (slower but richer) |
maxComments | int | 0 | Video mode: comments per video (0 = none) |
🛠️ How it works
This Actor wraps yt-dlp, the most actively maintained YouTube extraction library. It hits YouTube's public web endpoints (the same ones the website uses), parses the JSON player config, and returns structured data.
No API key required because yt-dlp uses unauthenticated public endpoints. No login required because all returned data is from public videos.
⚠️ Tips & caveats
- Channel mode is fast (~1 sec per 50 videos) because it uses YouTube's flat playlist endpoint. Set
enrichDetails: trueonly when you need per-video stats — it adds ~1 sec per video. - Comments scraping is slow (~5-10 sec per 100 comments) and YouTube paginates aggressively. Stick to
maxComments: 100-500per video for reasonable runtimes. - Some channels block extraction — if you see
Video unavailable, the channel owner has restricted scraping. Rare but happens. - Live streams return partial data while live; full metadata becomes available after the stream ends.
🔗 Related Actors
Building a media intelligence stack? Combine with:
- Reddit Subreddit + Search Scraper — find what's being discussed on r/videos, r/youtubehelp
- Product Hunt Daily Launches — catch trending tools that go viral on YouTube
- GitHub Trending Repositories — for dev-YouTube — see what code is exploding
💬 Support & feedback
Issues, feature requests, or want a custom YouTube-related scraper? Email caspersmartwater@gmail.com.
⭐ Star this Actor if it saves you time — Apify's algorithm uses run counts + stars to surface Actors.