YouTube All-in-One Downloader & Scraper
Pricing
Pay per usage
YouTube All-in-One Downloader & Scraper
Download YouTube videos, Shorts, playlists, and channels as MP4. Up to 10 concurrent downloads with no browser needed. Extract comments, captions, and rich metadata. Metadata-only mode for fast, cheap research. Quality selection with automatic fallback. $10/mo — 3x cheaper than alternatives.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Juyeop Park
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Pay per video — no monthly fee | Up to 10 concurrent downloads | MP4 & audio | Comments & captions | Playlist & channel support | Metadata-only mode
Batch download YouTube videos, Shorts, playlists, and entire channels as MP4. Extract comments, captions, transcripts, and rich metadata -- all through a fast, concurrent API with no browser required.
Quick Start
- Click "Try for free" on this page
- Paste one or more YouTube URLs into startUrls
- Click Start -- your MP4 download links and full video metadata appear in the output within seconds
{"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"quality": "720p"}
That's it. The output contains a direct downloadUrl for each video.
What is YouTube Video Downloader?
YouTube Video Downloader is an Apify Actor that lets you batch download YouTube videos at scale. Paste in one URL or hundreds -- single videos, Shorts, full playlists, or entire channel libraries -- and get direct download links in seconds. It uses the YouTube InnerTube API directly (no headless browser), so it is significantly faster and cheaper than browser-based or yt-dlp alternatives.
Every run produces structured JSON output with download URLs (stored in Apify Key-Value Store) and optional rich metadata including comments, captions/transcripts, view counts, and tags -- making it easy to plug into any data pipeline, automation workflow, YouTube archiving system, or content research tool.
Don't need the video file? Set downloadVideo: false to run in metadata-only mode -- extract titles, view counts, comments, captions, and more without downloading any video. This is ideal for research and analytics at a fraction of the cost.
Key Features
- Concurrent downloads -- Process up to 10 videos in parallel instead of one at a time
- No browser needed -- Uses the YouTube InnerTube API directly for faster, cheaper runs
- Quality selection -- Choose from highest, 1080p, 720p, 480p, 360p, or audio-only (MP4)
- Automatic quality fallback -- If your chosen resolution is unavailable, the actor selects the nearest lower quality
- Playlist and channel support -- Automatically expands playlists and channels into individual video downloads
- Caption/subtitle extraction -- Pull full transcript text in your preferred language
- Comment extraction -- Extract top comments with author, likes, and timestamps
- Rich metadata by default -- Every result includes title, description, channel, views, likes, duration, tags, thumbnail, and more
- Retry with exponential backoff -- Automatic retries with proxy rotation for reliable large-batch downloads
- Metadata-only mode -- Set
downloadVideo: falseto extract metadata, captions, and comments without downloading the video file -- much faster and cheaper - Configurable output -- Set
extractMetadata: falsefor lightweight output with onlysourceUrl+downloadUrl - Proxy enabled by default -- Apify Proxy is on by default; RESIDENTIAL group recommended for best reliability
Use Cases
Content Creators and Editors
Download your own videos or reference clips for editing, reaction videos, compilations, or repurposing across platforms.
Researchers and Analysts
Build video datasets for academic research, sentiment analysis, or media studies. Use metadata-only mode (downloadVideo: false) to extract titles, view counts, comments, and captions for NLP projects -- without downloading video files.
Digital Marketers
Audit competitor YouTube channels, archive campaign videos, and track video performance metrics at scale. Use metadata-only mode to collect view counts, comments, and engagement data without downloading videos.
Archivists and Librarians
Preserve educational content, conference talks, or cultural videos before they are removed or made private.
Developers and Automation Engineers
Integrate YouTube video downloading into automated workflows using the Apify API, webhooks, and scheduled runs.
Why Choose This Over Alternatives?
| Feature | This Actor | yt-dlp / Browser-based Tools | Competing Actors ($30/mo) |
|---|---|---|---|
| Pricing | $0.10/video (pay per use) | Free (self-hosted) | $30/month + usage |
| Speed | Up to 10 concurrent downloads | Sequential | Varies |
| Playlists/Channels | Automatic expansion | Manual scripting | Limited |
| Comment Extraction | Built-in | Not available | Available |
| Caption Extraction | Built-in with language selection | Manual | Available |
| Metadata Extraction | Included by default | Manual parsing | Available |
| Quality Fallback | Automatic downgrade | Manual | Automatic |
| Metadata-only Mode | Built-in (no download, lower cost) | N/A | Not available |
| Retry Logic | Exponential backoff + proxy rotation | Manual | Not available |
| API Access | Full REST API + SDK | None (CLI) | Full REST API + SDK |
| Scheduling | Apify scheduler | Cron (self-managed) | Apify scheduler |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | (required) | YouTube URLs to download. Supports videos, Shorts, playlists, and channels. |
quality | string | "highest" | Video quality: highest, 1080p, 720p, 480p, 360p, or audio_only |
downloadVideo | boolean | true | Download the video file. Set to false for metadata-only mode (no video download -- much faster and cheaper). |
maxConcurrency | integer | 4 | Number of parallel downloads (1--10). Higher values are faster but use more memory. |
maxRequestRetries | integer | 3 | Retry attempts per video before marking it as failed (0--10) |
includeFailedVideos | boolean | false | Include failed videos in output with error details for debugging |
extractMetadata | boolean | true | Include full video metadata: title, description, channel, views, likes, duration, tags, thumbnail, and more. Set to false for lightweight output (sourceUrl + downloadUrl only). Auto-enabled when extractCaptions, extractComments, or downloadVideo: false is set. |
extractCaptions | boolean | false | Extract captions/subtitles as full transcript text |
captionLanguage | string | "en" | Preferred caption language code (e.g., en, ko, ja, es). Falls back to first available if not found. |
extractComments | boolean | false | Extract top comments from each video (author, text, likes, timestamp) |
maxComments | integer | 100 | Maximum number of comments to extract per video (1--500) |
maxVideos | integer | 100 | Maximum videos to process from playlists or channels (1--500) |
proxyConfiguration | object | Apify Proxy ON | Proxy settings. Enabled by default. RESIDENTIAL group recommended for best reliability. Proxy usage incurs additional data transfer costs. Disable to reduce costs (may cause blocks). |
Example Input
Download a Single Video
{"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"quality": "720p"}
Download an Entire Playlist with Metadata
{"startUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],"quality": "highest","maxConcurrency": 6,"extractMetadata": true,"extractCaptions": true,"captionLanguage": "en","maxVideos": 50,"proxyConfiguration": {"useApifyProxy": true}}
Download Channel Videos (Audio Only)
{"startUrls": ["https://www.youtube.com/@RickAstleyYT"],"quality": "audio_only","maxVideos": 20,"proxyConfiguration": {"useApifyProxy": true}}
Metadata Only (No Download)
{"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"downloadVideo": false,"extractComments": true,"extractCaptions": true,"maxComments": 50,"proxyConfiguration": {"useApifyProxy": true}}
When downloadVideo is false, the actor skips video downloading entirely and only extracts metadata, captions, and comments. This is significantly faster and cheaper -- ideal for data collection and research.
Output Examples
Lightweight Output (extractMetadata: false)
When extractMetadata is set to false, each video produces a minimal entry:
{"sourceUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/dQw4w9WgXcQ_video"}
The downloadUrl is a direct link to the MP4 file stored in the Apify Key-Value Store. You can download it directly, share it, or integrate it into your pipeline.
Default Output (Rich Metadata)
By default (extractMetadata: true), you get full video details including: video ID, title, description, channel name & URL, view count, like count, duration, upload date, thumbnail URL, quality, file size, captions, comments, tags, and live stream status.
{"sourceUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/dQw4w9WgXcQ_video","videoId": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up","description": "The official video for 'Never Gonna Give You Up' by Rick Astley...","channelName": "Rick Astley","channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw","viewCount": 1500000000,"likeCount": 16000000,"duration": "3:33","durationSeconds": 213,"uploadDate": "Oct 25, 2009","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","quality": "best","fileSize": "11.28 MB","captions": [{"language": "English","languageCode": "en","text": "We're no strangers to love You know the rules and so do I..."}],"comments": [{"author": "YouTube User","authorChannelUrl": "https://www.youtube.com/channel/UC...","text": "This song is timeless!","likes": 42000,"publishedTime": "2 years ago","replyCount": 150}],"tags": ["rick astley", "never gonna give you up", "official video"],"isLive": false}
Metadata-only Output (No Download)
When downloadVideo is false, you get full metadata without downloading the video file. Note that downloadUrl is null, and quality / fileSize are empty:
{"sourceUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","downloadUrl": null,"videoId": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up","description": "The official video for 'Never Gonna Give You Up' by Rick Astley...","channelName": "Rick Astley","channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw","viewCount": 1743960084,"likeCount": 18807636,"duration": "3:33","durationSeconds": 213,"uploadDate": "Oct 25, 2009","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","quality": "none","fileSize": "","captions": [],"comments": [{"author": "@YouTube","authorChannelUrl": "https://www.youtube.com/@YouTube","text": "can confirm: he never gave us up","likes": 186,"publishedTime": "9 months ago","replyCount": 959}],"tags": [],"isLive": false}
Failed Video Output
When includeFailedVideos is set to true, failed videos are included in the output with diagnostic details (by default, failed videos are silently skipped):
{"sourceUrl": "https://www.youtube.com/watch?v=INVALID_ID","downloadUrl": null,"error": "This video is unavailable","status": "failed"}
Supported URL Formats
The actor recognizes all common YouTube URL patterns:
| URL Type | Example |
|---|---|
| Standard video | https://www.youtube.com/watch?v=VIDEO_ID |
| Short URL | https://youtu.be/VIDEO_ID |
| Shorts | https://www.youtube.com/shorts/VIDEO_ID |
| Embed | https://www.youtube.com/embed/VIDEO_ID |
| Playlist | https://www.youtube.com/playlist?list=PLAYLIST_ID |
| Channel (handle) | https://www.youtube.com/@ChannelHandle |
| Channel (ID) | https://www.youtube.com/channel/CHANNEL_ID |
| Channel (custom URL) | https://www.youtube.com/c/ChannelName |
You can mix and match URL types in a single run. For example, pass a playlist URL and three individual video URLs together.
How to Use the YouTube Video Downloader API
You can call this actor programmatically from any language using the Apify API or official client libraries.
JavaScript / TypeScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('jy-labs/youtube-all-in-one-downloader-scraper').call({startUrls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ','https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf',],quality: '720p',maxConcurrency: 4,extractMetadata: true,proxyConfiguration: { useApifyProxy: true },});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(`${item.title || item.sourceUrl} → ${item.downloadUrl}`);}
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('jy-labs/youtube-all-in-one-downloader-scraper').call(run_input={'startUrls': ['https://www.youtube.com/watch?v=dQw4w9WgXcQ','https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf',],'quality': '720p','maxConcurrency': 4,'extractMetadata': True,'proxyConfiguration': {'useApifyProxy': True},})dataset_items = client.dataset(run['defaultDatasetId']).list_items().itemsfor item in dataset_items:print(f"{item.get('title', item['sourceUrl'])} → {item['downloadUrl']}")
cURL (REST API)
curl -X POST "https://api.apify.com/v2/acts/jy-labs~youtube-all-in-one-downloader-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"quality": "highest","proxyConfiguration": { "useApifyProxy": true }}'
Pricing -- Pay Per Video, No Monthly Fee
This actor uses pay-per-event pricing -- you only pay for what you use, with no monthly subscription. Because it uses the InnerTube API directly (no browser), it runs significantly faster and cheaper than browser-based alternatives.
| Event | Price |
|---|---|
| Video download (with metadata) | $0.10 per video |
Metadata only (downloadVideo: false) | $0.02 per video |
Prices above are the actor usage fee. Apify platform costs (compute units, proxy data transfer) are billed separately. Proxy (enabled by default) incurs additional data transfer costs per GB. RESIDENTIAL proxies provide better reliability with YouTube. Apify Free plan includes $5/month of platform credits.
Estimated monthly cost by usage:
| Usage | Monthly Cost |
|---|---|
| 50 video downloads | ~$5 |
| 200 video downloads | ~$20 |
| 500 video downloads | ~$50 |
| 500 metadata extractions | ~$10 |
| 1,000 metadata extractions | ~$20 |
Tip: Use audio_only quality if you only need audio tracks -- it is significantly faster and cheaper. Use downloadVideo: false for metadata-only extraction at a fraction of the cost.
| This Actor | Competing Actors | |
|---|---|---|
| Pricing Model | Pay per video (no monthly fee) | $30/month + usage |
| Video download | $0.10/video | $30/mo subscription required |
| Metadata only | $0.02/video | Not available |
| Comments extraction | Included | Included |
| Captions extraction | Included | Included |
| Playlist expansion | Included | Limited or extra |
| Retry + proxy rotation | Included | Not available |
FAQ
Do I need a proxy to run this actor?
Apify Proxy is enabled by default. For best results, select the RESIDENTIAL proxy group in the proxy settings. YouTube aggressively rate-limits and blocks automated requests, so keeping the proxy enabled is highly recommended. Disabling it may cause errors or blocks after a few videos. Note: Proxy usage incurs additional data transfer costs (billed per GB). You can disable it in the proxy settings to reduce costs if needed.
What video quality options are available?
You can choose from: highest (best available), 1080p, 720p, 480p, 360p, and audio_only. If your chosen quality is not available for a specific video, the actor automatically falls back to the nearest lower resolution.
Can I download age-restricted or private videos?
Currently, age-restricted videos and private videos cannot be downloaded because they require YouTube authentication. Only publicly available videos are supported.
What is the maximum number of videos I can download per run?
You can process up to 500 videos per run (configurable via the maxVideos parameter). For larger batches, schedule multiple runs or use the Apify API to chain runs.
How long are the downloaded files stored?
Downloaded files are stored in the Apify Key-Value Store. On the Free plan, data is retained for 7 days. On paid plans, retention is longer. You can export or move files before they expire.
Can I download only the audio track?
Yes. Set quality to "audio_only" and the actor will extract just the audio track in an MP4 container. This format is compatible with all major players and is ideal for podcast archiving, music extraction, or NLP audio processing.
Does this actor extract subtitles/captions?
Yes. Set extractCaptions to true and specify your preferred captionLanguage (default is "en"). The actor extracts the full transcript text. If the preferred language is unavailable, it falls back to the first available language.
Can I extract video comments?
Yes. Set extractComments to true and optionally set maxComments (default 100, max 500). Each comment includes the author name, channel URL, comment text, like count, published time, and reply count. Comments are sorted by top comments.
Can I get metadata without downloading the video?
Yes. Set downloadVideo to false. The actor will extract all metadata (title, channel, views, likes, duration, upload date, tags, thumbnail), captions, and comments without downloading the video file. This is significantly faster and cheaper -- ideal for research, analytics, and data collection at scale.
How do I batch download YouTube videos?
Simply add multiple URLs to the startUrls array. The actor will download them all concurrently (up to 10 in parallel). You can mix single videos, Shorts, playlists, and channel URLs in a single run.
How do I archive a YouTube channel?
Paste the channel URL (e.g., https://www.youtube.com/@ChannelHandle) into startUrls. The actor will automatically discover and download all videos from the channel. Use maxVideos to limit the number of videos and extractMetadata to preserve full video details for archival.
How do I extract a YouTube video transcript?
Set extractCaptions to true and captionLanguage to your preferred language (e.g., "en" for English). The actor extracts the full plaintext transcript from available captions. This is useful for NLP, content indexing, and accessibility.
Can I process playlists and channels?
Yes. Paste a YouTube playlist or channel URL into startUrls and the actor will automatically expand it into individual videos. Use maxVideos to limit how many videos are processed.
What format are the downloaded videos in?
All videos are downloaded in MP4 format, which is universally compatible with all major video players and editing software.
Is this actor suitable for production use?
Yes. It includes retry logic with exponential backoff, proxy rotation, concurrent processing, and structured error handling. It is designed for automated pipelines and scheduled runs.
Limitations
- Age-restricted videos require YouTube authentication and are not currently supported
- Private and unlisted videos accessible only to the uploader cannot be downloaded
- Live streams that are currently broadcasting cannot be downloaded (completed live streams work)
- DRM-protected content (YouTube Premium originals) cannot be downloaded
- File size limit -- Videos larger than 500 MB cannot be downloaded. Lower the quality or use
audio_onlyfor very long videos - Very long videos (> 2 hours) may require more memory; consider lowering
maxConcurrencyfor these - YouTube rate limiting may affect large batch downloads without a proxy -- always use proxy configuration for production runs
- Geographically restricted videos may fail depending on proxy location
Technology
- youtubei.js -- YouTube InnerTube API client (no browser required)
- Apify SDK -- Actor framework with dataset, key-value store, and proxy management
- p-limit -- Concurrent download management
- TypeScript -- Type-safe ESM implementation
Changelog
See the Changelog tab on the Apify Store page for version history and updates.
Support and Feedback
If you encounter any issues or have feature requests, please open an issue on the actor's Apify Store page. For custom integrations or enterprise use cases, feel free to reach out through the Apify platform.