YouTube Video Downloader avatar

YouTube Video Downloader

Pricing

from $2.49 / 1,000 results

Go to Apify Store
YouTube Video Downloader

YouTube Video Downloader

YouTube Video Downloader SD - YouTube Video Downloader is a powerful tool that downloads YouTube videos or audio in the quality you pick, with title, file size, format and a download link per video, from YouTube video and Shorts URLs - YouTube MP4 downloader.

Pricing

from $2.49 / 1,000 results

Rating

0.0

(0)

Developer

Neuro Scraper

Neuro Scraper

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

0

Monthly active users

3 days ago

Last modified

Share

YouTube Video Downloader - save YouTube videos and audio as MP4, WebM, MKV or M4A

The YouTube Video Downloader saves YouTube videos, Shorts or just their audio in the quality you choose. Paste links, pick a maximum resolution and a container, and every file lands in the run's key-value store with a download link.

Each video also gets a dataset row with its title, channel, duration, views, upload date, file size, resolution, codecs and the link to the stored file.

No login and no Google account. The YouTube Video Downloader works with public videos, the way a logged-out visitor watches them.

What the YouTube Video Downloader does

For every URL, the YouTube Video Downloader picks the best video and audio streams at or below your chosen quality, checks the expected file size against your limit, downloads both streams and merges them into one file.

MP4 output prefers H.264 video with AAC audio, which plays on practically every device and editor. WebM prefers VP9 with Opus, and MKV keeps the best streams as they are.

With audioOnly on, the YouTube Video Downloader saves just the audio track as an M4A file.

Who uses the YouTube Video Downloader

Video editors and content teams who need source footage they have the rights to use, in a fixed quality.

Researchers and archivists who keep copies of public videos for analysis, with the metadata next to each file.

AI and media teams who build audio or video datasets and want files plus a clean index in one run.

Marketers who repurpose their own channel's videos and Shorts into other formats.

Input fields for the YouTube Video Downloader

Only video_urls is required. The field names video_urls, video_resolution and output_format are kept from earlier versions of the YouTube Video Downloader, so saved tasks keep working.

FieldTypeDefaultMeaning
video_urlsarrayone example videoVideo or Shorts URLs, youtu.be links or video ids
video_resolutionselect720Highest quality: best, 2160, 1440, 1080, 720, 480, 360, 240 or 144
output_formatselectmp4Container: mp4, webm or mkv
audioOnlybooleanfalseSave the audio track only (M4A)
maxFileSizeMbinteger500Skip videos whose selected format is larger than this
maxItemsintegeremptyOptional cap on the number of videos
proxyConfigurationobjectApify RESIDENTIAL, USProxy used for the page and the file download

Fields of older versions that no longer exist (cookies, output types, download mode, concurrency, file name template) are ignored when an old task still sends them.

Output of the YouTube Video Downloader

The files go to the run's default key-value store. The dataset has one row per downloaded video.

FieldMeaning
downloadUrlLink to the stored file in the key-value store
kvStoreKeyRecord key of the file, e.g. aircAruvnKk-720p.mp4
fileSizeBytes, fileSizeMbFile size
ext, qualityContainer and resolution label (720p, audio)
width, height, fpsVideo frame size and frame rate
videoCodec, audioCodec, formatIdStreams that were used
videoId, url, titleThe video
channelName, channelId, channelUrlThe channel
durationSeconds, viewCount, uploadDateVideo metadata
thumbnailUrlThumbnail
downloadSecondsTime the download and merge took
inputUrl, scrapedAtRun context and ISO timestamp

Export the YouTube Video Downloader dataset as CSV, JSON, Excel, XML or HTML, or read it through the Apify API.

Example row (shortened)

{"videoId": "aircAruvnKk", "title": "But what is a neural network? | Deep learning chapter 1", "channelName": "3Blue1Brown", "durationSeconds": 1120, "kvStoreKey": "aircAruvnKk-720p.mp4", "fileSizeMb": 40.64, "ext": "mp4", "quality": "720p", "width": 1280, "height": 720, "fps": 60, "videoCodec": "avc1.4d4020", "audioCodec": "mp4a.40.2", "downloadSeconds": 10.9}

How to run the YouTube Video Downloader

Open the YouTube Video Downloader, paste your video links, choose the maximum quality and the container, and press Start. When the run ends, open the dataset and click the downloadUrl of each row.

Choose a moderate quality for long videos. An 18-minute video at 720p was about 40 MB in our test, so maxFileSizeMb decides how long a video you allow before it is skipped.

Vertical Shorts are matched on their short side: a Short asked for at 480 comes as a 480x854 file, the same detail as a 480p landscape video.

Measured results of the YouTube Video Downloader

All numbers come from local test runs of the YouTube Video Downloader on a home connection, without a proxy:

  • A 19-second video: 0.71 MB MP4 in 3 to 5 seconds (240p was the best that video has).
  • An 18:40 video at 720p: 40.64 MB MP4, H.264 1280x720 at 60 fps with AAC stereo, in 11 to 13 seconds.
  • The same video at 480p as WebM: 37.01 MB with VP9 and Opus.
  • A Short at 480p as WebM: 480x854, 3.51 MB.
  • Audio only: a 3:33 song as a 3.29 MB M4A in 7 to 8 seconds.

How the YouTube Video Downloader works

YouTube protects its video files: a direct link from the player page answers 403 unless the player's JavaScript challenges are solved for that session. We measured this before choosing the method.

The YouTube Video Downloader therefore uses yt-dlp, the open-source downloader, with its JavaScript challenge solver running on Deno, and ffmpeg to merge the video and audio streams. All of it ships inside the Actor.

Every dynamic value YouTube uses, such as the player script and its signature data, is read fresh on each run, so nothing in the YouTube Video Downloader is a stale constant.

YouTube Video Downloader limits, stated plainly

Our tests ran from a residential home connection. On the Apify platform the YouTube Video Downloader uses Apify's residential proxy; that path was not part of our local tests.

YouTube sometimes answers "Sign in to confirm you're not a bot" to some IP addresses. When that happens, the YouTube Video Downloader logs YouTube's exact message for that video and continues with the rest.

The file is held in memory while it is stored, so large files need a larger memory setting for the run. The Actor starts with at least 1 GB; raise it for files near your maxFileSizeMb.

The video bytes travel through the same proxy session as the page request, because YouTube ties the file links to that session. Large files therefore use proxy traffic.

Private, members-only and age-restricted videos that need a login are not downloadable. Respect copyright: download only videos you have the right to use.

YouTube Video Downloader pricing

The YouTube Video Downloader uses pay-per-event pricing: you pay per dataset row (event "result"), plus the Apify platform usage of your run. A video that fails or is skipped for size produces no row, so it is not charged as a result.

Free-plan users get up to 30 videos per run, which is enough to test the YouTube Video Downloader on real data. The current price per 1,000 results is on the Pricing tab.

Using the YouTube Video Downloader in a workflow

Chain it with the other scrapers of this family. Find videos with the YouTube Scraper or a channel's uploads with the YouTube Channel Scraper, then pass the URLs to the YouTube Video Downloader.

A webhook can notify your system when the files are ready, and Make, Zapier or n8n can move each downloadUrl into cloud storage such as Google Drive or S3 as part of your automation.

Developers call the YouTube Video Downloader from Python with the Apify API client and fetch the files straight from the key-value store:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("neuro-scraper/youtube-video-downloader").call(run_input={"video_urls": [{"url": "https://youtu.be/dQw4w9WgXcQ"}], "audioOnly": True})
store = client.key_value_store(run["defaultKeyValueStoreId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
record = store.get_record(item["kvStoreKey"])
open(item["kvStoreKey"], "wb").write(record["value"])

Choosing quality and container

Pick mp4 with 720 or 1080 for editing and sharing; it gave H.264 and AAC in our tests. Pick webm when you need the open VP9 and Opus codecs, and mkv when you want the best streams without any codec preference.

WebM is not automatically smaller. For the 18-minute test video, YouTube's 720p60 VP9 stream was 51.02 MB against 22.70 MB for the H.264 stream, so the YouTube Video Downloader's MP4 choice was also the lighter file.

Set audioOnly for podcasts, music analysis and speech-to-text work: the file is a fraction of the video's size.

Keeping files after the run

The key-value store of a run follows Apify's data retention for your plan. Copy files you want to keep to your own storage, for example with an integration that runs when the YouTube Video Downloader finishes.

Every dataset row keeps the kvStoreKey, so a later script can still find each file by its record name for as long as the store exists.

The YouTube Video Downloader is part of a family of YouTube and social media tools by the same developer.

ActorWhat it extracts
YouTube ScraperSearch results and video data by keyword
YouTube Channel ScraperChannel profile and videos
YouTube Playlist ScraperEvery video of a playlist
YouTube Shorts ScraperShorts of a channel or a search
YouTube Transcript ScraperFull transcripts with timestamps
YouTube Video Details ScraperExact views, likes, dates and tags
YouTube Comments ScraperComments and replies of any video
Facebook Video DownloaderPublic Facebook videos as files
Instagram Video DownloaderPublic Instagram videos as files
Instagram Reels DownloaderPublic Instagram Reels as files
Facebook Reels DownloaderPublic Facebook Reels as files

Leave a review

If the YouTube Video Downloader saved you time, please leave a star rating and a short review on the Actor page. Reviews help other users decide and tell me what to improve.

If a video did not download, open an issue with the run link; the log line for that video says why.

Frequently asked questions

Does the YouTube Video Downloader need my YouTube login?

No. The YouTube Video Downloader downloads public videos without any login or cookies.

Which quality does the YouTube Video Downloader download?

The best quality at or below video_resolution. If a video has nothing that high, you get its best available: a 19-second video in our test topped out at 240p.

Can the YouTube Video Downloader save only the audio?

Yes. Turn on audioOnly and the YouTube Video Downloader saves the audio track as M4A. A 3:33 song was 3.29 MB in our test.

Does the YouTube Video Downloader work with Shorts?

Yes. Paste the Shorts URL. Shorts are saved in their vertical shape, for example 480x854 at the 480 setting.

Where do I find the downloaded files?

In the run's default key-value store. Each dataset row has a downloadUrl to the file and a kvStoreKey with its record name.

Why was a video skipped?

Either its selected format was larger than maxFileSizeMb, which the log states with the expected size, or YouTube refused it; the log then shows YouTube's message, such as "This video is unavailable".

Can I download 4K or 1080p videos?

Choose 2160 or 1080 in video_resolution. Our tests used 720p and below, so expect larger files and longer runs at those settings, and raise maxFileSizeMb and the run memory.

What file formats can I get?

MP4, WebM or MKV for video and M4A for audio only. The dataset with the file links exports as CSV, JSON, Excel and more.

How long does a download take?

It depends on file size and connection. On our home connection the YouTube Video Downloader saved a 40.64 MB 720p file in 11 to 13 seconds, including the merge of video and audio.

Do I need my own proxy for the YouTube Video Downloader?

No. The YouTube Video Downloader uses Apify's residential proxy by default, for the page and the file download.