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
2.0
(1)
Developer

Marielise
Actor stats
1
Bookmarked
15
Total users
7
Monthly active users
2 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 quality or 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 4K, 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, 1080p Full HD, 1440p 2K, or 2160p 4K |
| 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).
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
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"}
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"}
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. |
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.
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 |
| 1440p 2K | minute-1440p | $0.040 |
| 2160p 4K | minute-2160p | $0.050 |
| 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 video (5 min) at 4K | 5 | $0.25 |
| 1 podcast (60 min) as MP3 | 60 | $0.30 |
Tip: Lower quality and MP3 format are significantly cheaper. A 30-minute video costs $1.50 at 4K, $0.90 at 1080p, $0.30 at 360p, or $0.15 as MP3. Minimum charge is 1 minute per video. Note: 1440p and 4K use VP9 codec (YouTube does not serve H.264 above 1080p) which plays in VLC, mpv, and most modern players but may require "Continue" in QuickTime on Mac.
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.
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.
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.
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.