YouTube Video Downloader - MP4 & MP3
Pricing
from $0.01 / 1,000 results
YouTube Video Downloader - MP4 & MP3
Download YouTube videos and Shorts directly to your device in MP4 or MP3 format. Supports batch downloads, quality selection from 360p to 1080p, and audio-only extraction. Powered by yt-dlp for reliable downloads. Pay per minute — only charged on successful downloads.
Pricing
from $0.01 / 1,000 results
Rating
4.7
(5)
Developer
Marielise
Actor stats
2
Bookmarked
72
Total users
37
Monthly active users
5.8 hours
Issues response
9 days ago
Last modified
Categories
Share
YouTube Video Downloader
Download YouTube videos and Shorts directly to your device in seconds. No browser extensions, no sketchy websites, no limits on quantity — just paste a URL and get a direct download link that works on any phone, laptop, or tablet. Choose MP4 video or MP3 audio, pick your quality from 360p to 1080p, and batch download as many videos as you need in a single run.
Perfect for: Content creators, video researchers, educators, social media managers, podcast producers, journalists archiving source material, and anyone who needs reliable offline access to YouTube content.
Features
| Feature | Description |
|---|---|
| MP4 Video Download | Download full videos with audio in MP4 format, ready to play anywhere |
| MP3 Audio Extraction | Extract audio-only tracks as high-quality MP3 files |
| Quality Selection | Choose from 360p, 480p, 720p HD, or 1080p Full HD |
| YouTube Shorts | Full support for downloading Shorts alongside regular videos |
| Batch Downloads | Download multiple videos in a single run |
| Direct Download Links | Each file gets a public URL you can open on any device to save the file |
| Video Metadata | Get title, duration, uploader, view count, and file size for every video |
| Multiple URL Formats | Supports youtube.com/watch, youtube.com/shorts, and youtu.be short links |
| Reliable Engine | Powered by yt-dlp with ffmpeg for consistent, high-quality downloads |
How to Use
Step 1: Add YouTube URLs
Paste one or more YouTube video or Shorts URLs. You can use any format:
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtube.com/shorts/8wst-04IuWIhttps://youtu.be/dQw4w9WgXcQ
Step 2: Choose Quality and Format
Select your preferred video quality (360p to 1080p) and output format (MP4 video or MP3 audio).
1440p and above are temporarily unavailable while higher-quality download reliability is being improved. We are working on bringing them back.
For YouTube Shorts, 1080p is more likely to hit YouTube bot-detection than 720p. If you need 1080p for Shorts, enable residential proxy fallback. If cost predictability matters more, use 720p.
Step 3: Run and Download
The Actor downloads each video and provides:
- Direct download links in the dataset and key-value store
- Video metadata including title, duration, uploader, and file size
- OUTPUT summary with success/fail counts and all download links
Large files can be stored in Cloudflare R2 instead of Apify key-value store when configured, while still appearing as a direct downloadUrl in the dataset.
Click any download URL to save the file directly to your device.
Input Examples
Download a Single Video
Download a video in 1080p (default settings):
{"urls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }]}
Download Multiple Videos
Batch download several videos at once:
{"urls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },{ "url": "https://www.youtube.com/watch?v=9bZkp7q19f0" },{ "url": "https://www.youtube.com/watch?v=kJQP7kiw5Fk" }],"quality": "720"}
Download YouTube Shorts
Works with Shorts URLs directly:
{"urls": [{ "url": "https://youtube.com/shorts/8wst-04IuWI" },{ "url": "https://youtube.com/shorts/abc123XYZ" }],"quality": "1080"}
If a Short fails at 1080p, the most reliable next step is to enable residential proxy fallback or retry at 720p.
Extract Audio Only (MP3)
Get just the audio track as an MP3 file:
{"urls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],"format": "mp3"}
Lower Quality for Long Videos
Use 360p or 480p for long videos to stay under the file size limit:
{"urls": [{ "url": "https://www.youtube.com/watch?v=LONG_VIDEO_ID" }],"quality": "360","format": "default"}
Enable Residential Proxy Fallback
Enable the paid residential proxy fallback only when you want the extra bypass attempt:
{"urls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],"residentialProxyMode": "fallback","proxyCountry": "US"}
This is especially useful for 1080p Shorts, where YouTube bot-detection blocks the standard path more often than at 720p.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | Yes | - | List of YouTube URLs to download. Supports regular videos, Shorts, and youtu.be links. |
quality | string | No | 1080 | Maximum video resolution: "360", "480", "720", or "1080". The best available quality up to this limit is selected. |
format | string | No | default | Output format: "default" for MP4 video, "mp3" for audio-only extraction. |
residentialProxyMode | string | No | disabled | Residential proxy behavior: "disabled" for predictable cost, "fallback" to enable a paid last-resort proxy attempt when free/direct attempts fail. |
proxyCountry | string | No | auto | Preferred country for the residential proxy fallback. Only used when residentialProxyMode is set to fallback. |
Tip: Higher quality means larger file sizes. For videos longer than 20 minutes, consider using 720p or lower to stay within the 230 MB file size limit. For very long videos (1+ hour), use 360p or extract audio with MP3 format.
Tip: For YouTube Shorts,1080pis less reliable than720pon the standard path. If you want the best chance of a successful1080pShort download, enableresidentialProxyMode: "fallback".
Output
Dataset Output
Each downloaded video produces one record in the dataset with full metadata and a direct download link.
Success Record:
{"videoId": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Music Video)","originalUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","duration": "3:33","uploader": "Rick Astley","viewCount": 1500000000,"quality": "1080p","format": "MP4","fileSize": "45.2 MB","fileSizeBytes": 47395225,"downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/dQw4w9WgXcQ.mp4","kvStoreKey": "dQw4w9WgXcQ.mp4","contentType": "video/mp4","status": "success","downloadedAt": "2025-01-15T10:30:00.000Z"}
Failed Record:
{"videoId": "PRIVATE_ID","title": "Unknown","originalUrl": "https://www.youtube.com/watch?v=PRIVATE_ID","duration": "0:00","uploader": "Unknown","viewCount": 0,"quality": "1080p","format": "MP4","fileSize": "0 B","fileSizeBytes": 0,"downloadUrl": "","kvStoreKey": "","contentType": "","status": "failed","error": "This is a private video and cannot be downloaded.","downloadedAt": "2025-01-15T10:30:05.000Z"}
Key-Value Store Outputs
| File | Format | Description |
|---|---|---|
{videoId}.mp4 | MP4 | Downloaded video file (one per successful video download) |
{videoId}.mp3 | MP3 | Extracted audio file (when using MP3 format) |
OUTPUT | JSON | Run summary with success/fail counts and all download links |
OUTPUT summary example:
{"totalUrls": 3,"successCount": 2,"failedCount": 1,"totalFileSize": "78.5 MB","totalFileSizeBytes": 82313011,"quality": "1080","format": "default","processingTimeMs": 45200,"downloads": [{"title": "Rick Astley - Never Gonna Give You Up","videoId": "dQw4w9WgXcQ","status": "success","downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/dQw4w9WgXcQ.mp4","fileSize": "45.2 MB"},{"title": "PSY - GANGNAM STYLE","videoId": "9bZkp7q19f0","status": "success","downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/9bZkp7q19f0.mp4","fileSize": "33.3 MB"},{"title": "Unknown","videoId": "PRIVATE_ID","status": "failed","error": "This is a private video and cannot be downloaded."}]}
Dataset Table View
The Actor provides a clean table view in the Apify Console with these columns:
| Column | Description |
|---|---|
| Title | Video title |
| Video ID | YouTube video identifier |
| Duration | Video length (MM:SS or HH:MM:SS) |
| File Size | Downloaded file size (e.g., "45.2 MB") |
| Quality | Resolution used (e.g., "1080p") |
| Format | MP4 or MP3 |
| Download URL | Clickable link to download the file |
| YouTube URL | Link back to the original video |
| Status | success or failed |
Use Cases
Content Archiving
YouTube videos disappear. Channels get deleted, videos get taken down, and links go dead without warning. Download and preserve the content you depend on before it vanishes — in full 1080p quality, saved directly to your storage.
Offline Learning
Save educational lectures, tutorials, and course content to watch without an internet connection. Whether you're on a plane, in a remote location, or simply want to avoid buffering, your learning library travels with you.
Audio Extraction for Podcasters
Strip the audio from any YouTube video and get a clean MP3 file. Repurpose interviews, conference talks, or recorded conversations into podcast episodes, transcripts, or background research without editing software.
Research and Journalism
Collecting video evidence, archiving interviews, or documenting public statements? Download directly to your device and retain a local copy of exactly what was published, in the quality you need, when you need it.
Social Media Content Management
Managing multiple accounts or clients means staying ahead of content trends. Batch download reference videos, competitor content, or campaign material in one run rather than repeating the process one URL at a time.
API Integration
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('your-username/youtube-video-downloader').call({urls: [{ url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' },{ url: 'https://youtube.com/shorts/8wst-04IuWI' }],quality: '720',format: 'default'});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {if (item.status === 'success') {console.log(`${item.title}: ${item.downloadUrl} (${item.fileSize})`);} else {console.log(`Failed: ${item.originalUrl} - ${item.error}`);}}
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('your-username/youtube-video-downloader').call(run_input={'urls': [{'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'},{'url': 'https://youtube.com/shorts/8wst-04IuWI'}],'quality': '720','format': 'default'})items = client.dataset(run['defaultDatasetId']).list_items().itemsfor item in items:if item['status'] == 'success':print(f"{item['title']}: {item['downloadUrl']} ({item['fileSize']})")else:print(f"Failed: {item['originalUrl']} - {item['error']}")
cURL
# Start a runcurl -X POST "https://api.apify.com/v2/acts/your-username~youtube-video-downloader/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],"quality": "720","format": "default"}'
Pricing
This Actor uses Pay Per Event pricing. You are charged per minute of video downloaded, with the rate depending on quality. You only pay for successful downloads — failed downloads are free.
Price Per Minute
| Quality | Event Name | Price Per Minute |
|---|---|---|
| 360p | minute-360p | $0.010 |
| 480p | minute-480p | $0.015 |
| 720p | minute-720p | $0.020 |
| 1080p | minute-1080p | $0.030 |
| MP3 (audio only) | minute-mp3 | $0.005 |
Cost Examples
| Scenario | Minutes | Cost |
|---|---|---|
| 1 Short (1 min) at 1080p | 1 | $0.03 |
| 1 music video (4 min) at 720p | 4 | $0.08 |
| 1 lecture (30 min) at 480p | 30 | $0.45 |
| 5 videos (3 min each) at 1080p | 15 | $0.45 |
| 1 podcast (60 min) as MP3 | 60 | $0.30 |
Tip: Lower quality and MP3 format are significantly cheaper. A 30-minute video costs $0.90 at 1080p, $0.30 at 360p, or $0.15 as MP3. Minimum charge is 1 minute per video. 1440p and above are temporarily unavailable while we work on bringing back stable higher-quality downloads.
Performance
| Scenario | Typical Run Time |
|---|---|
| 1 short video (under 5 min), 720p | 20-40 seconds |
| 1 short video (under 5 min), 1080p | 30-60 seconds |
| 1 long video (20+ min), 720p | 1-3 minutes |
| 5 videos (mixed lengths), 720p | 2-5 minutes |
| 1 video, MP3 audio only | 15-30 seconds |
Videos are processed sequentially to avoid YouTube rate limits. Run time scales linearly with the number of videos.
Limitations
- 230 MB file size limit per video (Apify key-value store constraint). Long videos at 1080p may exceed this - use a lower quality setting for videos over 20 minutes.
- No playlist support - each URL must point to a single video, not a playlist.
- Private videos cannot be downloaded (no authentication support).
- Age-restricted videos cannot be downloaded without login, which is not supported.
- Live streams cannot be downloaded while in progress.
- Copyright-blocked videos in certain regions may fail.
- Videos are processed one at a time to respect YouTube rate limits.
Troubleshooting
Download failed with "file size exceeds maximum"
The downloaded file is larger than 230 MB. Solutions:
- Lower the quality - Switch from 1080p to 720p or 480p
- Use MP3 format - If you only need audio, MP3 files are much smaller
- Try 360p - For very long videos (1+ hour), 360p keeps files small
"Video unavailable" or "removed" error
The video no longer exists on YouTube or has been taken down by the uploader. Verify the URL works in your browser first.
"Age-restricted video" error
This Actor cannot download age-restricted content because it does not support YouTube authentication. There is no workaround for this limitation.
"Private video" error
Private videos require the owner's permission and a logged-in session. This Actor only downloads publicly available videos.
Download is slow
Video download speed depends on:
- Video length and quality - A 30-minute 1080p video is a large file
- YouTube's servers - Occasional slowdowns are normal
- Actor memory - The Actor uses at least 2 GB memory; increasing to 4 GB may help with large files
"Not a valid YouTube URL" error
The Actor only accepts YouTube URLs. Make sure your URL contains youtube.com or youtu.be. Supported formats:
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtube.com/shorts/VIDEO_IDhttps://youtu.be/VIDEO_ID
FAQ
How do I download the file to my device?
After the run completes, click the download URL in the dataset results. The file will download directly in your browser, just like any other file download. This works on phones, tablets, laptops, and desktops.
What quality will I actually get?
The quality setting is a maximum. If a video is only available in 720p, selecting 1080p will give you 720p. The Actor always selects the best available quality up to your chosen limit.
1440p and above are temporarily unavailable while we work on bringing back stable higher-quality downloads.
Can I download entire playlists?
No, this Actor downloads individual videos only. To download multiple videos from a playlist, copy each video URL separately and add them all to the urls input.
Why is the file size limit 230 MB?
Apify's key-value store has a 256 MB per-record limit. The 230 MB limit includes a safety margin. For long videos, reduce the quality or use MP3 format to stay under the limit.
How long can videos be?
There is no duration limit, but longer videos produce larger files and cost more (pricing is per minute). A 1-hour video at 1080p will likely exceed the 230 MB file size limit. For long content, use 480p or 360p, or extract audio only with MP3 format.
Am I charged for failed downloads?
No. You are only charged for successful downloads. If a video is private, removed, or fails for any reason, no charge is applied.
If you enable residentialProxyMode: "fallback" and that fallback is actually used on a successful download, the residential proxy surcharge is charged as documented in the pricing section.
Does this work with YouTube Shorts?
Yes. Paste the Shorts URL directly (e.g., https://youtube.com/shorts/VIDEO_ID). Shorts are short vertical videos, so they produce small files even at 1080p.
For reliability, 720p is the safer default for Shorts on the standard path. If you specifically need 1080p Shorts, enable residential proxy fallback.
What happens if a download fails?
Failed downloads are recorded in the dataset with a status: "failed" field and a human-readable error message explaining what went wrong. Successfully downloaded videos are unaffected by failures in the batch.
Can I use this with the Apify API?
Yes. See the API Integration section above for Node.js, Python, and cURL examples. The Actor works with all Apify integrations including webhooks, schedules, and the MCP server.
Is the download link permanent?
Download links point to the Apify key-value store, which retains unnamed store data for 7 days. After that, the files are deleted. Download your files promptly or use a named key-value store for longer retention.
Support
Questions or issues? We are here to help:
- Comments: Leave a comment on the Actor page
- Issues: Open an issue on GitHub
We respond to all feedback within 24 hours.