YouTube Scraper Pro — Videos, Channels & Download Links
Pricing
$7.99/month + usage
YouTube Scraper Pro — Videos, Channels & Download Links
Scrape any YouTube video, channel or playlist. Returns title, views, likes, duration, thumbnail and signed download URLs for every resolution (144p to 4K). Audio-only download also available. No login required.
Pricing
$7.99/month + usage
Rating
0.0
(0)
Developer
Scrape Pilot
Actor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
🎬 YouTube Scraper Pro — YouTube Scrape Videos, Channels, Playlists & Search Results
The most powerful YouTube scrape tool on Apify. Extract video metadata, download URLs, subtitles, channel stats, and full playlist data — no login, no browser, no bot detection. Powered by
yt.
📌 Table of Contents
- What Is This Actor?
- Why Use This YouTube Scrape Tool?
- Use Cases
- Supported Input Types
- Output Fields (Full Reference)
- Input Parameters
- Example Inputs & Outputs
- Download URLs Explained
- Proxy Configuration
- Video Quality Options
- Subtitles & Captions
- Chapters Support
- Channel Scraping
- Playlist Scraping
- YouTube Search Scraping
- Performance & Rate Limits
- FAQ
- Changelog
- Legal & Terms of Use
🔍 What Is This Actor?
YouTube Scraper Pro is a production-grade Apify actor that performs a complete YouTube scrape of any public YouTube content — including individual videos, full channels, playlists, and keyword search results — without requiring any Google login, API keys, or browser automation.
It is built on top of yt, the industry-standard open-source YouTube extraction engine trusted by millions of developers and researchers worldwide. Unlike browser-based scrapers that simulate a user clicking through YouTube, this actor communicates directly with YouTube's internal endpoints, bypassing bot detection entirely and delivering results in seconds.
Whether you need to YouTube scrape a single video for metadata and download URLs, extract every video from a creator's channel, or pull the top 50 results for a keyword search — this actor handles all of it through one clean, unified interface.
🚀 Why Use This YouTube Scrape Tool?
| Feature | YouTube Scraper Pro | Browser-Based Scrapers | YouTube Data API v3 |
|---|---|---|---|
| No login required | ✅ | ✅ | ❌ API key required |
| Bot detection triggered | ❌ Never | ⚠️ Frequently | ❌ N/A |
| Download URLs | ✅ All resolutions | ❌ No | ❌ No |
| Subtitle extraction | ✅ | ⚠️ Partial | ⚠️ Partial |
| Channel scrape | ✅ Unlimited | ⚠️ Limited | ⚠️ Quota limited |
| Playlist scrape | ✅ Full | ⚠️ Partial | ✅ |
| Residential proxy | ✅ Built-in | ⚠️ Extra setup | ❌ N/A |
| Speed | ⚡ Fast | 🐢 Slow | ⚡ Fast |
| Daily quota | ✅ Unlimited | ✅ Unlimited | ❌ 10,000 units/day |
| 4K download URL | ✅ | ❌ | ❌ |
Bottom line: If you need to YouTube scrape at scale, with download URLs, zero quotas, and no API key — this is the tool for you.
🎯 Use Cases
This actor is used by developers, marketers, researchers, and data scientists to:
📊 Market Research & Competitive Intelligence
- YouTube scrape a competitor's channel to analyze their top-performing videos, view counts, like ratios, and publishing frequency
- Track trending topics in a niche by scraping YouTube search results for target keywords weekly
- Monitor subscriber growth and engagement metrics across multiple channels
🎓 Content Research & SEO
- YouTube scrape search results to discover what content ranks for your target keywords
- Analyze video titles, descriptions, and tags to identify SEO patterns that drive views
- Extract chapter structures from long-form videos to understand content depth and user engagement hooks
📥 Content Archiving & Backup
- Scrape and archive download URLs for entire YouTube playlists or channels before content is deleted
- Extract video transcripts and subtitles at scale for research datasets or accessibility tools
- Download metadata for thousands of videos for academic research or journalism
🤖 AI & Machine Learning Datasets
- YouTube scrape thousands of videos to build training datasets for NLP, sentiment analysis, or video classification models
- Extract auto-generated captions across languages for multilingual AI training
- Collect structured video metadata (duration, views, likes, categories, tags) for recommendation system research
📱 App Development & Integration
- Build a YouTube client app that pulls metadata and streams content via direct download URLs
- Integrate YouTube search results into your own platform without hitting YouTube API quotas
- Create automated content pipelines that monitor channels and alert on new uploads
📰 Journalism & Fact-Checking
- YouTube scrape specific channels or accounts to preserve evidence of public statements
- Extract engagement statistics for viral videos during news events
- Archive entire playlists of public interest content with timestamped metadata
🔗 Supported Input Types
This actor supports four distinct YouTube scrape modes, all through the same interface:
📺 Single Video Scrape
Provide any YouTube video URL and receive the complete metadata record including all download URLs, subtitles, chapters, and format options.
Supported URL formats:
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/watch?v=VIDEO_ID&list=PLAYLIST_ID ← extracts the video, not the playlist
📢 Channel Scrape
Provide any YouTube channel URL and scrape all (or the top N) videos from that channel, complete with full metadata and download URLs for each.
Supported channel URL formats:
https://www.youtube.com/@ChannelHandlehttps://www.youtube.com/c/ChannelNamehttps://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxxhttps://www.youtube.com/user/LegacyUsername
📋 Playlist Scrape
Provide a YouTube playlist URL to scrape all videos in the playlist, in order, with position numbers.
Supported playlist URL formats:
https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
🔍 YouTube Search Scrape
Provide a keyword or phrase and scrape the top N YouTube search results, complete with view counts, ranks, and download URLs.
Example search queries:
Python programming tutorial 2024best lo-fi music for studyinghow to make sourdough bread
📋 Output Fields (Full Reference)
Every YouTube scrape result record contains the following fields:
🎥 Core Video Fields
| Field | Type | Description | Example |
|---|---|---|---|
video_id | string | YouTube video ID | "dQw4w9WgXcQ" |
title | string | Full video title (max 300 chars) | "Rick Astley - Never Gonna Give You Up" |
video_url | string | Canonical YouTube watch URL | "https://www.youtube.com/watch?v=..." |
duration_seconds | integer | Duration in seconds | 212 |
duration | string | Human-readable duration | "03:32" |
published_date | string | ISO date of upload | "2009-10-25" |
is_live | boolean | Whether video is a live stream | false |
age_restricted | boolean | Whether 18+ age gate applies | false |
category | string | YouTube content category | "Music" |
👤 Channel & Creator Fields
| Field | Type | Description | Example |
|---|---|---|---|
channel_name | string | Creator's channel name | "RickAstleyVEVO" |
channel_url | string | Full URL to channel | "https://www.youtube.com/@RickAstleyVEVO" |
channel_id | string | Internal YouTube channel ID | "UCuAXFkgsw1L7xaCfnd5JJOw" |
subscriber_count | integer | Raw subscriber count | 1300000 |
subscriber_count_text | string | Formatted subscriber count | "1.3M subscribers" |
📈 Engagement Metrics
| Field | Type | Description | Example |
|---|---|---|---|
views | integer | Total view count | 1400000000 |
views_text | string | Formatted view count | "1.4B views" |
likes | integer | Total like count | 15000000 |
🖼️ Media Fields
| Field | Type | Description | Example |
|---|---|---|---|
thumbnail | string | URL to max-resolution thumbnail | "https://i.ytimg.com/vi/.../maxresdefault.jpg" |
description | string | Video description (max 1000 chars) | "The official video..." |
tags | array | Video tags (max 20) | ["rick astley", "80s", "pop"] |
⬇️ Download URL Fields
| Field | Type | Description |
|---|---|---|
download_url_best | string | Best available combined video+audio stream URL |
download_url_best_quality | string | Resolution label of the best stream (e.g. "1080p") |
download_url_video_only | string | Best video-only stream URL (no audio, for merging) |
download_url_audio_only | string | Best audio-only stream URL (m4a/webm/opus) |
all_formats | array | All available formats (see below) |
🎞️ Format Object (inside all_formats)
{"format_id": "137","ext": "mp4","resolution": "1080p","height": 1080,"fps": 30,"has_video": true,"has_audio": false,"filesize_mb": 245.8,"bitrate_kbps": 3200.0,"url": "https://..."}
📝 Subtitles & Captions Fields
| Field | Type | Description | Example |
|---|---|---|---|
subtitles_languages | array | Languages with manual subtitles | ["en", "es", "fr"] |
auto_captions_languages | array | Languages with auto-generated captions | ["en", "de"] |
📑 Chapters Fields
| Field | Type | Description | Example |
|---|---|---|---|
chapters_count | integer | Number of chapters | 8 |
chapters | array | List of chapter objects | [{"title": "Intro", "start": 0}] |
🔧 Meta Fields
| Field | Type | Description | Example |
|---|---|---|---|
url_type | string | Source type of this result | "video", "channel_video", "playlist_video", "search_result" |
fetched_at | string | ISO timestamp of scrape | "2024-11-01T12:34:56Z" |
search_query | string | (Search mode only) Query used | "python tutorial" |
search_rank | integer | (Search mode only) Position in results | 1 |
playlist_title | string | (Playlist/Channel mode) Parent playlist name | "My Favorites" |
playlist_id | string | (Playlist/Channel mode) Playlist ID | "PLxxx..." |
position | integer | (Playlist/Channel mode) Position in list | 3 |
⚙️ Input Parameters
Configure your YouTube scrape job with the following input fields:
{"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","channel_url": "","playlist_url": "","search_query": "","max_results": 20,"quality": "best","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Parameter | Type | Default | Description |
|---|---|---|---|
video_url | string | "" | URL of a single YouTube video to scrape |
channel_url | string | "" | URL of a YouTube channel to scrape |
playlist_url | string | "" | URL of a YouTube playlist to scrape |
search_query | string | "" | Keyword or phrase to search YouTube and scrape results |
max_results | integer | 20 | Maximum number of videos to return (for channel/playlist/search modes) |
quality | string | "best" | Preferred quality level for download URLs: "best", "1080p", "720p", "480p", "360", "audio" |
proxyConfiguration | object | Residential | Apify proxy config. Recommended to keep RESIDENTIAL enabled. |
Note: Only one of
video_url,channel_url,playlist_url, orsearch_queryshould be provided per run. If multiple are provided, priority is:video_url→channel_url→playlist_url→search_query.
📦 Example Inputs & Outputs
Example 1: YouTube Scrape — Single Video
Input:
{"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","quality": "best"}
Output:
[{"video_id": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Music Video)","video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","channel_name": "Rick Astley","channel_url": "https://www.youtube.com/@RickAstleyVEVO","subscriber_count": 4200000,"subscriber_count_text": "4.2M subscribers","views": 1450000000,"views_text": "1.5B views","likes": 16000000,"duration_seconds": 212,"duration": "03:32","published_date": "2009-10-25","description": "The official video for "Never Gonna Give You Up" by Rick Astley...","tags": ["Rick Astley", "Never Gonna Give You Up", "OfficialVideoMusic"],"category": "Music","thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","is_live": false,"age_restricted": false,"download_url_best": "https://rr3---sn-xxxx.googlevideo.com/...","download_url_best_quality": "1080p","download_url_video_only": "https://rr3---sn-xxxx.googlevideo.com/...","download_url_audio_only": "https://rr3---sn-xxxx.googlevideo.com/...","all_formats": [{"format_id": "137","ext": "mp4","resolution": "1080p","height": 1080,"fps": 30,"has_video": true,"has_audio": false,"filesize_mb": 89.3,"bitrate_kbps": 3120.0,"url": "https://..."},{"format_id": "22","ext": "mp4","resolution": "720p","height": 720,"fps": 30,"has_video": true,"has_audio": true,"filesize_mb": 45.1,"bitrate_kbps": 1800.0,"url": "https://..."}],"subtitles_languages": ["en", "es", "pt", "fr", "de"],"auto_captions_languages": ["en", "ja"],"chapters_count": 0,"chapters": [],"url_type": "video","fetched_at": "2024-11-01T10:30:00Z"}]
Example 2: YouTube Scrape — Channel Videos
Input:
{"channel_url": "https://www.youtube.com/@mkbhd","max_results": 5,"quality": "best"}
Output (abbreviated):
[{"video_id": "abc123","title": "The Best Smartphones of 2024","channel_name": "Marques Brownlee","channel_url": "https://www.youtube.com/@mkbhd","subscriber_count": 18500000,"views": 4800000,"views_text": "4.8M views","duration": "18:42","published_date": "2024-12-01","download_url_best": "https://...","download_url_best_quality": "4K","url_type": "channel_video","position": 1,"fetched_at": "2024-12-10T08:00:00Z"}]
Example 3: YouTube Scrape — Search Results
Input:
{"search_query": "YouTube scrape tutorial python","max_results": 10}
Output (abbreviated):
[{"video_id": "xyz789","title": "How to YouTube Scrape with Python in 2024","views": 120000,"views_text": "120K views","search_query": "YouTube scrape tutorial python","search_rank": 1,"url_type": "search_result","download_url_best": "https://...","fetched_at": "2024-12-10T09:00:00Z"}]
Example 4: YouTube Scrape — Playlist
Input:
{"playlist_url": "https://www.youtube.com/playlist?list=PLbpi6ZahtOH6Ar_3GPy3workS_ij8","max_results": 50}
Output: Returns up to 50 video objects, each with url_type: "playlist_video" and position number.
⬇️ Download URLs Explained
One of the most powerful features of this YouTube scrape actor is the ability to extract direct, signed, time-limited download URLs for every video. Here's what each field means:
download_url_best
The highest-quality combined stream containing both video and audio in a single file. This is ideal for direct playback or download via tools like curl or wget. For older/shorter videos this is often a 720p MP4 with both streams. For longer or newer videos, YouTube separates video and audio tracks.
download_url_video_only
The highest-quality video stream without audio. This is typically 1080p, 1440p (2K), or 2160p (4K) in VP9 or AVC format. To use this with audio, merge it with download_url_audio_only using FFmpeg:
$ffmpeg -i video_only.mp4 -i audio_only.m4a -c:v copy -c:a aac merged_output.mp4
download_url_audio_only
Audio-only stream in M4A, WebM, or Opus format. Ideal for podcasts, music extraction, or transcription pipelines.
all_formats
A complete list of every format available for that video (up to 20), sorted by resolution descending. Use this to select a specific quality level programmatically.
⚠️ Important: Download URLs are signed and time-limited by Google (typically valid for 6–12 hours). They are meant for immediate use and should not be stored long-term. Re-run the actor to refresh URLs.
🌐 Proxy Configuration
For maximum reliability when performing a YouTube scrape, especially at high volume, a residential proxy is strongly recommended.
Recommended Setup (Apify Residential Proxy)
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Why Residential Proxy?
- YouTube detects and rate-limits datacenter IPs at high volume
- Residential IPs appear as normal user traffic
- Essential for scraping region-restricted content
- Reduces
HTTP 429 Too Many Requestserrors significantly
No Proxy (Default)
For low-volume scraping (under ~50 videos/run), typically works without any proxy. YouTube has not blocked yt-'s request pattern as aggressively as browser-based scrapers.
{"proxyConfiguration": {"useApifyProxy": false}}
Custom Proxy
You can also provide your own proxy URL by passing it through Apify's proxy configuration system.
🎬 Video Quality Options
Control the quality of download_url_best using the quality parameter:
| Value | Description | Typical Use Case |
|---|---|---|
"best" | Highest available combined stream | General purpose, recommended |
"1080p" | Full HD (1920×1080) | HD video archiving |
"720p" | HD (1280×720) | Balanced quality/size |
"480p" | SD (854×480) | Mobile-friendly size |
"360p" | Low resolution (640×360) | Bandwidth-limited environments |
"audio" | Audio only (best audio stream) | Podcast/music extraction |
Note: The
all_formatsarray always contains all available resolutions regardless of thequalitysetting. Thequalityparameter only affects which URL is returned indownload_url_best.
Available resolutions per video depend on the original upload. Most modern YouTube videos support up to 4K (2160p), while older content may max out at 720p.
📝 Subtitles & Captions
Every YouTube scrape result includes subtitle availability data:
subtitles_languages
Languages for which the creator has manually uploaded subtitles (closed captions). These are the highest accuracy captions. Example: ["en", "es", "pt-BR", "fr", "de", "ja", "ko"]
auto_captions_languages
Languages for which YouTube has auto-generated captions using speech recognition. Available for most videos in major languages. Example: ["en", "hi", "ar"]
Fetching Subtitle Content
This actor returns the availability of subtitles. To download the actual subtitle text (SRT/VTT format), use yt-dlp locally with the video URL:
$yt-dlp --write-subs --sub-lang en --skip-download "https://www.youtube.com/watch?v=VIDEO_ID"
📑 Chapters Support
If a video has chapters (timestamps in the description), the actor returns structured chapter data:
{"chapters_count": 5,"chapters": [{"title": "Introduction", "start": 0},{"title": "Setting Up Your Environment", "start": 120},{"title": "Writing the Code", "start": 480},{"title": "Testing & Debugging", "start": 900},{"title": "Conclusion", "start": 1320}]}
This is extremely useful for:
- Extracting specific segments from long-form videos
- Building educational content navigation interfaces
- Analyzing how creators structure their content
📢 Channel Scraping
When performing a YouTube channel scrape, the actor uses a two-phase approach for maximum speed and accuracy:
Phase 1: Fast Flat Extraction
The actor first fetches a flat list of all video IDs in the channel using yt-dlp's extract_flat mode. This is extremely fast and gives us the complete video inventory.
Phase 2: Detailed Metadata Fetch
For each video (up to max_results), the actor fetches full metadata including download URLs, views, likes, chapters, and subtitle info. A small random delay (0.5–1.5s) between requests prevents rate limiting.
Channel Output Extras
In addition to all standard video fields, channel scrape results include:
url_type: "channel_video"— identifies the sourceposition— video's position in the channel (1 = most recent)playlist_title— usually the channel's uploads playlist name
Tip: Large Channels
For channels with thousands of videos, set max_results to the number you need. The actor fetches in chronological order from newest to oldest.
📋 Playlist Scraping
Playlist scraping is ideal for structured content sets like course series, documentary collections, or music albums.
Playlist Output Extras
url_type: "playlist_video"— identifies the sourceposition— video's position in the playlist (1 = first)playlist_title— name of the playlistplaylist_id— YouTube playlist ID
Mixed Playlists
If a playlist mixes videos from multiple channels, each video's channel_name and channel_url will correctly reflect the original uploader.
🔍 YouTube Search Scraping
The search scraping mode uses yt-dlp's built-in ytsearch protocol to query YouTube and return the top N results. This is equivalent to what a user would see on YouTube's search results page.
Search Output Extras
url_type: "search_result"— identifies results from search modesearch_query— the exact query usedsearch_rank— 1-based position in search results (1 = top result)
Search Tips
- Use specific, long-tail keywords for niche research
- Search results reflect YouTube's own algorithm (views, recency, relevance)
- For trending content, run searches daily and compare rank changes
- Use
max_resultsup to 50 for comprehensive keyword analysis
⚡ Performance & Rate Limits
Speed Benchmarks (approximate, with residential proxy)
| Mode | Videos | Estimated Time |
|---|---|---|
| Single video | 1 | ~5–10 seconds |
| Search results | 10 | ~30–60 seconds |
| Search results | 50 | ~3–5 minutes |
| Channel (small, <100 videos) | 20 | ~1–2 minutes |
| Channel (large, 500+ videos) | 50 | ~4–7 minutes |
| Playlist | 50 | ~4–7 minutes |
Rate Limiting Strategy
The actor implements smart rate limiting with:
- 0.5–1.5 second random delay between consecutive video fetches in channel/playlist mode
- 3 automatic retries with exponential backoff on failed requests
- 30-second socket timeout to prevent hanging on slow connections
- Graceful error handling — failed videos return partial records instead of crashing the run
Concurrent Runs
You can run multiple instances of this actor simultaneously (e.g., one per channel) for parallel scraping without conflicts.
❓ FAQ
Q: Do I need a YouTube API key or Google account? A: No. This actor requires zero authentication. No API keys, no cookies, no login.
Q: Are the download URLs direct links I can use in a browser?
A: Yes. download_url_best is a direct signed URL to the video file hosted on Google's CDN. You can paste it in a browser, curl it, or stream it directly. They expire in ~6–12 hours.
Q: Why does download_url_best sometimes return a video-only stream?
A: For high-resolution videos (1080p+), YouTube serves video and audio as separate streams. In that case, download_url_best returns the highest-quality video-only stream. Use download_url_audio_only alongside it with FFmpeg to merge.
Q: How many videos can I scrape from a channel?
A: There is no hard limit. Set max_results to however many you need. Very large channels (10,000+ videos) may require long run times; consider splitting into multiple runs.
Q: Can I scrape private or unlisted videos? A: No. This actor can only access publicly accessible YouTube content. Private videos require authenticated cookies.
Q: Why are some videos missing views or likes?
A: Some YouTube videos have these metrics hidden by the creator. In those cases the fields will be null.
Q: Can I use this for shorts? A: Yes. YouTube Shorts are treated as regular short-duration videos and can be scraped with all standard fields including download URLs.
Q: What happens if a video is age-restricted?
A: Age-restricted videos will have age_restricted: true. Metadata extraction typically still works, but download URLs may not be available without authentication.
Q: How fresh is the data? A: Completely fresh. Every run performs a live YouTube scrape in real time. There is no caching.
Q: Does this work for YouTube Music content? A: YouTube Music videos are hosted on YouTube and can be scraped like regular videos.
📜 Changelog
v2.0.0 (Current)
- ✅ Full yt-dlp engine integration replacing legacy extraction
- ✅ Added
all_formatsarray with up to 20 quality levels - ✅ Residential proxy auto-configuration
- ✅ Chapter extraction support
- ✅ Subtitle language detection (manual + auto-captions)
- ✅ Formatted view/subscriber count fields
- ✅
search_rankandpositionfields for ordered results - ✅ Graceful error handling with partial records on failure
- ✅ Smart rate limiting with jitter delay
v1.5.0
- ✅ Added YouTube search scraping mode
- ✅ Added
download_url_video_onlyanddownload_url_audio_only - ✅ Channel subscriber count extraction
- ✅ Tags extraction (up to 20)
v1.0.0
- ✅ Initial release: single video + playlist scraping
- ✅ Basic metadata: title, views, description, thumbnail
⚖️ Legal & Terms of Use
This actor extracts publicly available data from YouTube in the same way a regular user browses the site. All data collected is publicly accessible without any login.
Please note:
- This actor is intended for research, education, journalism, and personal use
- Respect YouTube's Terms of Service and do not use scraped data for unauthorized commercial redistribution of video content
- Signed download URLs are for personal use only; redistributing copyrighted video content may violate copyright law
- Do not use this tool to scrape private, unlisted, or age-gated content without authorization
- The actor developer is not responsible for how users choose to use the scraped data
Fair Use: Metadata scraping (titles, views, descriptions, channel stats) is generally considered fair use for research and analytical purposes. Always consult a legal professional for your specific use case.
🤝 Support & Feedback
- Issues? Open a GitHub issue or contact us via the Apify actor page
- Feature request? Drop a message in the Apify Community forum
- Rating: If this actor helped you, please leave a ⭐ review on the Apify Store — it helps others discover it!
Built with ❤️ on Apify · Powered by yt-dlp · Zero Login Required
The most complete YouTube scrape solution on the Apify platform