Youtube Video Downloader avatar

Youtube Video Downloader

Pricing

Pay per usage

Go to Apify Store
Youtube Video Downloader

Youtube Video Downloader

Download YouTube videos in multiple resolutions (up to 4K) and formats. Built with smart fallback strategies and proxy rotation for reliable extraction as YouTube's detection evolves. Batch processing, custom quality selection, fast turnaround. Actively maintained.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Oliver Queen

Oliver Queen

Maintained by Community

Actor stats

0

Bookmarked

40

Total users

10

Monthly active users

8 hours ago

Last modified

Share

Turn any list of YouTube links into ready-to-download MP4 video files with sound included β€” a 30-second clip, a music video, a 2-hour documentary β€” fully automatic, no login, no cookies, no API key. A YouTube video downloader built for both people and pipelines.

Per-minute pricing by qualityFrom $0.010 to $0.065 per started minute, depending on the delivered quality tier. See the pricing table below.
Real MP4 filesVideo and audio are merged into a single .mp4 that plays anywhere β€” no separate audio track to combine.
Quality you chooseCap the download at any height: up to best (any height), 1080p, 720p or 480p.
FastA small batch typically finishes in a few minutes β€” not hours.
Zero setupNo API keys, no cookies, no third-party services. Just paste links and run.
Parallel everythingUp to 5 videos per run, downloaded in parallel.
Self-healingAutomatic retries on fresh connections plus a strict last-resort rescue path.
Geo-awareCountry-blocked videos are retried from another region β€” and re-downloaded from an allowed country when possible.
Never-fail runsThe run always finishes with one dataset row per video β€” successes and failures alike.
Per-video controlEach link can have its own timeframe cut and quality ceiling.
Bring your own S3 (optional)Deliver files straight to your own S3-compatible bucket (AWS S3, Cloudflare R2, MinIO, B2) β€” the key-value store stays the main store and is always the fallback.

How to download video from YouTube

  1. Open the actor and click Add item under YouTube videos.
  2. Paste a YouTube URL (full watch URL or the 11-char video id). Optionally set Timeframe (1:30-2:45) and Video Quality per video.
  3. Add up to 5 videos per run (Shorts and YouTube Music links work the same way).
  4. Hit Run. When it finishes, grab the files from the Output β–Έ Download column β€” or take them straight from the API.

Timeframe cuts are done by stream copy (no re-encode), so cutting a long video down to a short clip is instant and lossless.

Quality is a ceiling, not a promise of an exact height: pick Best (any height) to take whatever the source offers, or 1080p / 720p / 480p to cap the download. The delivered file is never higher than the ceiling and may be lower when the source has nothing higher.

How much does it cost to download YouTube video?

Pricing is per started minute, and the per-minute price depends on the quality tier of the delivered file. Each tier is a separate event, charged at most once per run:

EventQuality tierPrice / started minute
VIDEO_DOWNLOADED_SD480p and below$0.010
VIDEO_DOWNLOADED_720720p$0.015
VIDEO_DOWNLOADED_10801080p$0.025
VIDEO_DOWNLOADED_14401440p$0.040
VIDEO_DOWNLOADED_21602160p and above$0.065
  • Started minutes = max(1, ceil(duration / 60)). A 3.5-minute video bills 4 started minutes; a 30-second clip bills 1.
  • The tier is read from the delivered file. If the height cannot be determined, the 720p tier (the middle) is used.

Examples:

  • A 3.5-minute 1080p video β†’ 4 started minutes Γ— $0.025 = $0.10
  • A 3-minute 1080p video β†’ 3 Γ— $0.025 = $0.075
  • A 10-minute 720p video β†’ 10 Γ— $0.015 = $0.15
  • A 30-second 480p clip β†’ 1 Γ— $0.010 = $0.01

When am I charged?

  • Each requested video is charged at most once per run β€” retries and rescue rounds are free, and a video can never be billed twice in one run.
  • Invalid / non-YouTube URLs are rejected before any attempt β†’ $0.
  • Live or upcoming streams are rejected before any download β†’ $0.
  • No start fee; platform usage is billed as normal Apify compute units on top of the per-minute price.
  • Cap spending with the standard maxTotalChargeUsd run option.

YouTube video API for automation and AI agents

Everything the UI does is available through the JSON input API, so the actor drops straight into scripts, CI jobs, schedulers, and AI agents (Apify MCP server, webhooks, Zapier/Make):

{
"videos": [
{ "url": "https://www.youtube.com/watch?v=VIDEO_ID" },
{ "url": "https://www.youtube.com/watch?v=OTHER_ID",
"timeframe": "1:30-2:45",
"videoQuality": "medium" }
],
"videoQuality": "high"
}

Only url is required β€” empty fields fall back to the global defaults (Video Quality, Timeframe). Start a run with POST https://api.apify.com/v2/acts/<username>~youtube-video-downloader/runs and poll it, or use run webhooks and the scheduler for recurring jobs.

Each run produces:

  • Dataset β€” one item per video: url, title, duration, qualityTier, billedMinutes, ok, method, filename, downloadUrl, seconds, bytes, attempt, chargedUsd, error
  • Key-value store β€” the video files themselves (.mp4); the main store, always used unless you opt into S3 below
  • downloadUrl points at the stored file; the Output tab shows a ready-made table

Optional: deliver to your own S3 bucket

The key-value store is the main store and works with zero setup. If your pipeline reads from your own object storage instead, fill the optional S3 delivery section (any S3-compatible service: AWS S3, Cloudflare R2, MinIO, Backblaze B2, ...) and switch the S3 delivery toggle on for the videos you want there:

FieldValuesDefault
s3.endpointS3 API endpoint URLβ€” (disabled)
s3.bucketExisting bucket nameβ€”
s3.regione.g. us-east-1 Β· R2 needs autous-east-1
s3.accessKey / s3.secretKeyCredentials with PutObject on the bucketβ€”
s3.publicBaseUrlPublic URL prefix for downloadUrl (optional)path-style endpoint URL
videos[].s3true = deliver this video to the bucketfalse (key-value store)
  • Optional by design β€” leave the section empty and nothing changes; toggles default to OFF.
  • Never fails the run β€” missing/invalid credentials or a failed upload automatically fall back to the key-value store.
  • Free tiers work fine (e.g. Cloudflare R2: 10GB + zero egress fees; MinIO self-hosted: unlimited).

Input reference

FieldValuesDefault
videos[].urlYouTube URL or 11-char video id (required)β€”
videos[].timeframeMM:SS-MM:SS Β· HH:MM:SS-HH:MM:SSglobal
videos[].videoQualitybest Β· high Β· medium Β· lowglobal
videos[].s3true Β· false β€” see Optional: deliver to your own S3 bucketfalse
videoQualitybest (any height) Β· high (≀1080p) Β· medium (≀720p) Β· low (≀480p)best

Global settings act as defaults for every video that leaves a field empty.

Output row reference

FieldMeaning
title / durationVideo title and duration (the cut window when a timeframe was used).
qualityTierQuality bucket the file priced at: 480, 720, 1080, 1440, 2160+ or unknown.
billedMinutesStarted minutes charged for this video.
chargedUsdThe pay-per-event amount charged for this video.
oktrue when the file was delivered.
methodprimary (direct path), fallback (rescue path) or fail.
filename / downloadUrl / storedViaStored file name, direct link, and where it went (kv or s3).
bytes / seconds / attemptFile size, wall seconds, and the attempt that settled the row.
errorFailure reason (failed rows only).

FAQ

What if a video fails? The engine already retried it through multiple connections, then tried a last-resort rescue path. Anything still failing at the end is reported in the dataset with the exact error; just re-run it (invalid URLs are rejected before any attempt and cost nothing, and a failed video is never charged twice).

Is there a video limit? Up to 5 links per run (each may be a timeframe cut). Need more? Chain runs via API β€” each run is independent and resumable.

Do I get audio too? Yes β€” the delivered .mp4 contains both video and audio, merged. If you only need the audio track, use the companion YouTube audio downloader instead.

Can I download just a part of a video? Yes. Set a Timeframe (1:30-2:45 or 00:01:30-00:02:45) globally or per video; the cut is a lossless stream copy, and billing follows the delivered window.

Do I need login, cookies, or an API key? No. The actor runs without a YouTube account, browser cookies, or any third-party API key.

Can files go to my own S3/R2 bucket? Yes β€” optionally. Fill the S3 delivery section with your bucket's endpoint + credentials and turn the per-video toggle on; the file lands in your bucket and downloadUrl points there. The key-value store remains the main store, and any S3 problem (missing config, bad credentials, network) silently falls back to it β€” the run never fails because of S3.

What about country-restricted videos? The engine detects the country block, retries other regions, then re-downloads the video from an allowed country when that country is supported. Videos blocked in every supported region are reported in the dataset as a geo failure.

What about live streams? Ongoing live/premiere streams are rejected instantly (fast-fail, no endless download, no charge); ended live streams download as regular videos.

Is downloading YouTube video legal? Only download content you have the right to use. Respect YouTube's Terms of Service and copyright law; the actor is a technical tool and you are responsible for how you use it.

Why does a run sometimes take a couple of minutes for one video? Container start plus YouTube's anti-bot checks dominate single-video runs; batching several links into one run amortizes the startup and is cheaper per video.