YouTube Downloader Pro - 8K/4K/1080p Video, Audio & Subtitles
Pricing
from $2.10 / 1,000 megabyte downloadeds
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
Maintained by CommunityActor stats
2
Bookmarked
535
Total users
273
Monthly active users
a day ago
Last modified
Categories
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.
| Input | YouTube video links of any kind, or video ids |
| Output | A file per video in the run's key-value store, plus one row per file |
| Ceiling | maxMegabytes per video, 1000 by default, and 20,000 MB at most |
| Account needed | None 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}
| Field | Default | What it is |
|---|---|---|
urls | none | Video 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. |
videoUrl | none | A single link, when an array is awkward for your caller. |
quality | 720 | audio, 360, 480, 720, 1080, 1440, 2160, 4320. The number is the short side of the picture. |
audioOnly | false | MP3 instead of video. Same as asking for quality: "audio". |
subtitles | false | Also fetch captions, auto-generated ones included, as .srt. |
subLangs | en | Comma separated codes, such as en,es. Used when subtitles is on. |
includeMetadata | true | Adds title, channel, view count and upload date to the row. |
maxMegabytes | 1000 | Per 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. |
proxyConfiguration | Apify default | Leave 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/..."}
| Field | What it is |
|---|---|
mediaKey, mediaUrl | The key in the run's store, and a direct link to the file. |
sha256 | Checksum of the delivered file, so you can tell a truncated download from a good one. |
fileSizeBytes, billedMegabytes | Bytes on disk, and that figure rounded up to whole megabytes. |
resolution, sourceResolution | What you got, measured off the file, and what the source had. |
qualityNotice | Only present when the run had to deliver below the tier you asked for. |
subtitles | With 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
- Open YouTube Downloader and click Try for free.
- Paste links into YouTube URLs.
- Pick Max quality. Leave it at 720 for a first run, then raise it once you see the file sizes.
- Click Start.
- Open the Key-value store tab for the files, or follow
mediaUrlfrom 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 plan | Per MB now | From 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
sha256proving the file arrived whole. - Grabbing the
.srtfor 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
resolutionandqualityNoticeon the row rather than assuming the request was met. - A run where everything failed still reports success. Read the
ERRORSrecord, or count rows. - An aborted or timed-out run loses its failure list, because
ERRORSis 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
maxMegabytesby 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 want | Use |
|---|---|
| The video, audio or captions as a file | This one |
| Just the caption text, no media file | YouTube Transcript Scraper |
| Every video in a playlist, as rows | YouTube Playlist Scraper |
| A channel's uploads, as rows | YouTube Channel Scraper |
| Shorts from a channel or a keyword | YouTube 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.
