YouTube Downloader Pro - 8K/4K/1080p Video, Audio & Subtitles avatar

YouTube Downloader Pro - 8K/4K/1080p Video, Audio & Subtitles

Pricing

from $2.10 / 1,000 megabyte downloadeds

Go to Apify Store
YouTube Downloader Pro - 8K/4K/1080p Video, Audio & Subtitles

YouTube Downloader Pro - 8K/4K/1080p Video, Audio & Subtitles

Download a YouTube video as MP4, up to 8K. You can also get the audio as MP3 or the captions as .srt. The file lands in the run's key-value store. Above 1080p YouTube splits picture and sound, so this merges them for you. Long videos get the memory they need automatically. $0.005/MB on Free.

Pricing

from $2.10 / 1,000 megabyte downloadeds

Rating

5.0

(3)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

2

Bookmarked

535

Total users

273

Monthly active users

a day ago

Last modified

Share

YouTube Downloader: MP4 video, MP3 audio and SRT captions from a link

Paste one watch or Shorts link, or a hundred, and each file lands in the run's key-value store with a direct link in the dataset row. Above 1080p YouTube stops keeping picture and sound in the same file, so an MP4 only exists once something merges the two streams, which is most of the work here.

The thing to know before you wire it into anything: only successful downloads become dataset rows. A run where every link failed still finishes green with an empty dataset, and the reasons are written to a separate ERRORS record, not to your rows.

InputYouTube video links of any kind, or video ids
OutputA file per video in the run's key-value store, plus one row per file
CeilingmaxMegabytes per video, 1000 by default, and 20,000 MB at most
Account neededNone from you
Price$0.005 per megabyte delivered on the Free plan, lower on paid plans

šŸŽ¬ What YouTube Downloader does

It reads the video, picks the closest match to the quality you asked for, and merges the streams into one MP4. quality is the short side of the picture, so 720 means 1280x720 on a landscape video and 720x1280 on a vertical Short. If the source has nothing at that tier you get the next best one down.

resolution in the row is measured off the delivered file rather than copied off the page, so it tells you what you actually received. sourceResolution is what the video is at its best. When the run had to deliver below what you asked for, the row carries a qualityNotice saying so in plain words.

Before any bytes move it estimates the file size and compares it against maxMegabytes. Anything over is skipped with no per-megabyte charge. A file too large for the run it started in continues in a second run sized to fit, and that run's row is copied back into your results, so leave it running.

Set audioOnly (or quality: "audio") and you get an MP3 instead. Set subtitles and the captions arrive as .srt files alongside the media, one per language in subLangs.

šŸ“„ What you give it

{
"urls": ["https://www.youtube.com/watch?v=aqz-KE-bpKQ"],
"quality": "1080",
"subtitles": true,
"subLangs": "en,es",
"maxMegabytes": 1000
}
FieldDefaultWhat it is
urlsnoneVideo links in any form YouTube gives out (watch, Shorts, youtu.be, live, embed, mobile, Music) or bare video ids. As many as you like in one run.
videoUrlnoneA single link, when an array is awkward for your caller.
quality720audio, 360, 480, 720, 1080, 1440, 2160, 4320. The number is the short side of the picture.
audioOnlyfalseMP3 instead of video. Same as asking for quality: "audio".
subtitlesfalseAlso fetch captions, auto-generated ones included, as .srt.
subLangsenComma separated codes, such as en,es. Used when subtitles is on.
includeMetadatatrueAdds title, channel, view count and upload date to the row.
maxMegabytes1000Per video size cap. A video estimated above it is skipped before anything downloads and adds nothing to the bill. Raise it for 4K and 8K.
proxyConfigurationApify defaultLeave it alone unless you have your own servers you want the run to go out through.

šŸ“¤ What you get back

A real row from a real run, with the download link cut short:

{
"ok": true,
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"title": "Me at the zoo",
"channel": "jawed",
"durationSeconds": 19,
"viewCount": 434752282,
"uploadDate": "20050424",
"requestedQuality": "360",
"resolution": "320x240",
"sourceResolution": "320x240",
"format": "mp4",
"fileSizeBytes": 473976,
"sha256": "44534ec271816888239ea5a3a3ede4050380c1b96e8ee44162b0c06f71965c5e",
"billedMegabytes": 1,
"mediaKey": "jNQXAC9IVRw.mp4",
"mediaUrl": "https://api.apify.com/v2/key-value-stores/CjkO185dtX0GAeNiD/records/..."
}
FieldWhat it is
mediaKey, mediaUrlThe key in the run's store, and a direct link to the file.
sha256Checksum of the delivered file, so you can tell a truncated download from a good one.
fileSizeBytes, billedMegabytesBytes on disk, and that figure rounded up to whole megabytes.
resolution, sourceResolutionWhat you got, measured off the file, and what the source had.
qualityNoticeOnly present when the run had to deliver below the tier you asked for.
subtitlesWith subtitles: true, an array of { key, url } pairs, one per language.

uploadDate is a plain YYYYMMDD string, as YouTube gives it. Metadata fields go away entirely if you turn includeMetadata off.

🧾 Reading the output

Files live in the run's key-value store, not in the dataset. The dataset is the index: one row per file, with the link and the checksum.

Failures never reach the dataset. They collect in a record called ERRORS in the same store, as a list of { url, error }, written once at the end of the run. A dead or removed video reads This video is unavailable. there. Two things follow from that: a run that delivered nothing still reports as successful, and a run you abort or that times out loses the failure list, because it had not been written yet.

Anything in ERRORS cost you nothing per megabyte. You are billed on bytes that arrived.

ā–¶ļø How to run it

  1. Open YouTube Downloader and click Try for free.
  2. Paste links into YouTube URLs.
  3. Pick Max quality. Leave it at 720 for a first run, then raise it once you see the file sizes.
  4. Click Start.
  5. Open the Key-value store tab for the files, or follow mediaUrl from the dataset row.

šŸ’° How much does it cost?

$0.005 per megabyte delivered on the Free plan, rounded up to the next whole megabyte. It falls on the paid plans:

Apify planPer MB nowFrom 8 October 2026
Free$0.0050$0.0050
Bronze$0.0042$0.0042
Silver$0.0033$0.0033
Gold$0.0021$0.0021
Platinum$0.0012$0.0021
Diamond$0.00068$0.0021

So a 3 MB Short is about $0.015 on Free and about $0.006 on Gold.

Quality drives the bill more than anything else, because a 4K file is many times the size of the same video at 720p. A download that fails, one that is private or removed, and one your maxMegabytes skipped all cost nothing per megabyte.

šŸ’” What people use it for

  • Pulling the audio off talks and interviews as MP3, then running it through a transcriber.
  • Archiving a channel's own uploads at a fixed quality, with sha256 proving the file arrived whole.
  • Grabbing the .srt for a video to re-cut or translate the captions.
  • Feeding clips into an editing pipeline from links a team drops into a channel.

🚧 What it does not do

  • Public videos only. Private, members-only, purchase-required and age-gated videos need a signed-in account, and they fail.
  • Videos only. Playlist, channel and clip links are refused before anything is fetched and add nothing to the bill. A video link copied from a playlist still gives you that video. For whole lists, use the actors below.
  • It will not warn you before delivering a lower tier than you asked for. Check resolution and qualityNotice on the row rather than assuming the request was met.
  • A run where everything failed still reports success. Read the ERRORS record, or count rows.
  • An aborted or timed-out run loses its failure list, because ERRORS is written at the end.
  • File size follows bitrate, not just resolution. A still talking head at 1080p is a fraction of a fast-moving clip at the same size, so set maxMegabytes by video type rather than by tier.
  • Copyright is yours to sort out. Download what you own or are allowed to use.

🧭 Which YouTube actor do you need?

If you wantUse
The video, audio or captions as a fileThis one
Just the caption text, no media fileYouTube Transcript Scraper
Every video in a playlist, as rowsYouTube Playlist Scraper
A channel's uploads, as rowsYouTube Channel Scraper
Shorts from a channel or a keywordYouTube Shorts Scraper

ā“ Questions people ask

Do I need an account, cookies or an API key? No. A link is the whole input.

Am I charged for a download that failed? Not per megabyte. The charge counts bytes that arrived.

Can I download several videos in one run? Yes, put them all in urls. Each is billed on its own size.

Is there a length limit? No fixed duration. One file can be at most 20,000 MB, roughly three to four hours of 4K, and it has to fit your maxMegabytes and finish inside the run timeout (two hours by default). A large one continues in a second run.

Where do the files go? The run's key-value store. mediaUrl on each row is a direct link, and mediaKey is the store key if you would rather fetch it over the API.

Is this legal? It downloads public videos. What you then do with somebody else's copyrighted work is on you, and YouTube's terms still apply. Apify's write-up on the legality of web scraping is a reasonable starting point, and we are not lawyers.

šŸ†˜ If something breaks

Open the Issues tab on the actor page. Include the link you used, the run ID and what the ERRORS record said, and the log is enough for us to see what happened.