YouTube Video & Shorts Downloader
Pricing
from $2.00 / 1,000 video download (per mb)s
YouTube Video & Shorts Downloader
Download YouTube videos and Shorts in MP4, WebM, MKV and more. Choose quality up to 4K, secure hosted download links with retention, structured JSON metadata, optional tags, chapters and transcripts. Preview costs in Estimate mode.
Pricing
from $2.00 / 1,000 video download (per mb)s
Rating
0.0
(0)
Developer
Coder
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
YouTube Video and Shorts Downloader
Download public YouTube videos and Shorts in your chosen quality and format. Each successful result includes video details, a secure download link, and optional transcripts — saved to your Apify dataset as structured JSON.
Use it for media archiving, content workflows, research, republishing pipelines, and automation — without downloading files manually or building your own downloader.
What you get
Each saved row is one video link from your input, organized into clear sections:
| Section | What it contains |
|---|---|
| Identity | Original link, video ID, status, content type (video or short), and title |
video | Title, description, channel, dates, duration, views, likes, comments, thumbnails |
file | Download link, format, quality, file size, and link expiry time (when completed) |
transcriptFile | Reference to a transcript saved with your run (when enabled and available) |
message | User-friendly status text for failed or skipped items |
Results are added to the dataset as each video finishes, so you can preview progress before the run completes.
In Estimate mode, rows show projected costs instead of download links — no files are downloaded.
Quick start on Apify
- Open the Actor in the Apify Console.
- Set Run mode to Process (download videos).
- Add one or more YouTube links (videos or Shorts).
- Choose Video quality, Output format, and File storage duration.
- Optionally enable Detailed video information and/or Transcript.
- Click Start and open the Dataset tab when the run finishes.
Example input (process mode):
{"runMode": "process","videoUrls": ["https://www.youtube.com/watch?v=BfsNfFoA0J0","https://www.youtube.com/watch?v=q90zq1-heR4"],"videoQuality": "1080p","videoBitrate": "balanced","videoCountry": "US","outputFormat": "mp4","storageRetention": "1w","includeDetailedInfo": true,"includeTranscript": true,"transcriptLanguage": "auto","transcriptFormat": "json"}
Example input (estimate mode — cost preview only):
{"runMode": "estimate","videoUrls": ["https://www.youtube.com/watch?v=BfsNfFoA0J0"],"videoQuality": "1080p","storageRetention": "1w","includeDetailedInfo": true,"includeTranscript": true}
Run modes
| Mode | What it does |
|---|---|
| Process | Downloads videos and saves results to the dataset. You are billed only for successful deliveries and selected options. |
| Estimate | Analyzes your links and returns projected charges. No download and no download billing — useful for checking cost before a large run. |
Estimated costs are based on video metadata (size, retention, and options). The actual Process run may differ slightly from the estimate.
Input parameters
YouTube links
| Type | List of URLs |
| Format | Regular videos, Shorts, and short links |
| Supported | https://www.youtube.com/watch?v=..., https://www.youtube.com/shorts/..., https://youtu.be/... |
Add one link per row. You can mix videos and Shorts in the same run.
Unsupported or invalid links are skipped with a warning; other links in the same run can still succeed.
Video quality
| Type | Select |
| Options | Best available, 4K (2160p), 1440p, 1080p, 720p, 480p, 360p, 240p, 144p |
| Default | 480p |
This is the maximum resolution to download. If that resolution is unavailable, the next best lower resolution is used.
Video bitrate
| Type | Select |
| Options | Best quality, Balanced, Smallest file |
| Default | Balanced |
Within your chosen resolution, this controls file size and quality. Smallest file reduces download size and cost.
Video country
| Type | Select |
| Default | United States |
Country used to access the video. Choose the country where the video is available if it is blocked in some regions.
Output format
| Type | Select |
| Options | MP4, WebM, MKV, MOV, AVI, FLV |
| Default | MP4 |
Each downloaded file includes both video and audio.
File storage duration
| Type | Select |
| Options | 1 day, 3 days, 1 week, 2 weeks, 1 month, 3 months, 6 months |
| Default | 1 week |
How long each download link stays active. Files are removed automatically when the period ends. Longer retention increases storage cost.
Detailed video information
| Type | Boolean |
| Default | Off |
Standard details (title, thumbnail, channel, publish date, view count) are always included.
When enabled, adds extra watch-page details when available — such as tags, keywords, chapters, and metadata rows. Best suited for regular videos; Shorts may return fewer fields.
Transcript options
| Field | Description |
|---|---|
| Include transcript | Save spoken content as a separate file with your run results |
| Transcript language | Auto or a specific language (English, Spanish, Arabic, and more) |
| Transcript format | JSON, plain text (TXT), SRT, or VTT |
Transcript files are saved with your run. Open them from the run’s Key-value store using the transcriptFile.key value in each dataset row.
What you will see during a run
The run log is written for end users — progress messages describe download activity only.
At the start
Video country: United States(or your selected country)- Warnings if links were skipped or free-plan limits were applied
Starting download for N video link(s).(process mode)Estimating costs for N video link(s). No downloads will be performed.(estimate mode)
Per video (process mode)
{title or URL}: Queued/PreparingDownloading: {title or URL}- Progress updates with percentage, size, speed, and ETA — for example:
Spiderhead | Chris Hemsworth | Official Trailer | Netflix — 45% · 120.5 MB / 268.0 MB · 2.1 MB/s · ETA 1m 10s Saving file: {title or URL}Downloaded: {title or URL}
When a run finishes
Done. 3 downloaded.(with failed or skipped counts when applicable)Estimate complete. 2 video(s) analyzed.(estimate mode)
If you stop a run early, finished downloads are saved and you see:
Stopping the run and saving finished downloads.
The run status bar also shows live progress — for example:
Downloading videos: 1 of 3 finished.
Output overview
Dataset structure (process mode)
- Results are saved to a single Apify dataset
- Each row is one input link
statusiscompleted,failed, orcancelled- Successful rows include
file.downloadUrl— use this link beforefile.expiresAt - Optional
transcriptFilepoints to a transcript in the run key-value store
Field presence varies by video. Not every video includes tags, chapters, or transcripts. Empty arrays or null mean no data was available — not necessarily an error.
Dataset structure (estimate mode)
- Each row has
status:estimateorerror estimatecontains projected duration, quality, and file sizepricingcontains a cost breakdown in USD- No download link is provided
Output fields
Top-level identity
| Field | Description |
|---|---|
inputUrl | The YouTube link you provided |
videoId | YouTube video ID |
status | completed, failed, cancelled, or estimate (estimate mode) |
contentType | video or short |
title | Video title when available |
message | User-friendly status message for non-completed items |
error | Present on failed items with a plain-language explanation |
video — metadata
| Field | Description |
|---|---|
id | Video ID |
title | Video title |
description | Full description text |
channelId | Channel ID |
author | Channel name |
publishDate | Publish date (ISO 8601) |
uploadDate | Upload date (ISO 8601) |
category | Category label when available |
lengthSeconds | Duration in seconds |
viewCount | View count |
likeCount | Like count when available |
commentCount | Comment count when available |
thumbnailUrl | Main thumbnail URL |
thumbnails | List of thumbnail sizes (url, width, height) |
captionsAvailable | Whether captions appear to be available |
embedUrl | Embed URL |
isLiveContent | Whether the video is live content |
isUpcoming | Whether the video is upcoming |
isEmbeddable | Whether embedding is allowed |
tags | Tags when detailed info is enabled |
keywords | Keywords when detailed info is enabled |
chapters | Chapter list when available |
metadataRows | Extra metadata rows from the watch page |
file — download (completed items only)
| Field | Description |
|---|---|
downloadUrl | Secure link to download the video file |
format | File format (for example mp4) |
quality | Delivered quality (for example 1080p) |
fileSizeBytes | File size in bytes |
expiresAt | When the download link expires (ISO 8601) |
transcriptFile — transcript reference
| Field | Description |
|---|---|
key | Key in the run key-value store (for example transcript_BfsNfFoA0J0.json) |
format | Transcript format (json, txt, srt, or vtt) |
Estimate mode fields
| Field | Description |
|---|---|
estimate.durationSeconds | Video duration |
estimate.quality | Estimated delivery quality |
estimate.fileSizeBytes | Estimated file size |
estimate.transcriptLikely | Whether a transcript is likely available |
pricing.currency | Currency (USD) |
pricing.charges | Line items with event name, units, and amount |
pricing.totalUsd | Estimated total cost |
pricing.disclaimer | Note that estimates may differ from actual billing |
Example output
The excerpts below come from a real Process run with three videos at 1080p, detailed info, and transcripts enabled. Full output is available in the run dataset.
Excerpt — short trailer with transcript
{"inputUrl": "https://www.youtube.com/watch?v=BfsNfFoA0J0","videoId": "BfsNfFoA0J0","status": "completed","contentType": "video","title": "Spiderhead | Chris Hemsworth | Official Trailer | Netflix","message": null,"video": {"id": "BfsNfFoA0J0","title": "Spiderhead | Chris Hemsworth | Official Trailer | Netflix","author": "Netflix","lengthSeconds": 133,"viewCount": 10096083,"likeCount": 131491,"commentCount": 3901,"thumbnailUrl": "https://i.ytimg.com/vi/BfsNfFoA0J0/maxresdefault.jpg","captionsAvailable": true,"tags": ["Netflix", "Chris Hemsworth", "Joseph Kosinski"],"keywords": ["Netflix", "Chris Hemsworth", "Joseph Kosinski"]},"file": {"downloadUrl": "https://example.com/downloads/.../video.mp4","format": "mp4","quality": "1080p","fileSizeBytes": 21263275,"expiresAt": "2026-07-05T15:36:35.447856"},"transcriptFile": {"key": "transcript_BfsNfFoA0J0.json","format": "json"}}
Excerpt — longer music video (larger file)
{"inputUrl": "https://www.youtube.com/watch?v=q90zq1-heR4","videoId": "q90zq1-heR4","status": "completed","contentType": "video","title": "Coke Studio Season 10| Naina Moray| Javed Bashir & Akbar Ali feat. Aamir Zaki","video": {"id": "q90zq1-heR4","author": "Coke Studio Pakistan","lengthSeconds": 611,"viewCount": 7281276},"file": {"downloadUrl": "https://example.com/downloads/.../video.mp4","format": "mp4","quality": "1080p","fileSizeBytes": 187250898,"expiresAt": "2026-07-05T15:37:06.568510"},"transcriptFile": {"key": "transcript_q90zq1-heR4.json","format": "json"}}
Excerpt — failed item
{"inputUrl": "https://www.youtube.com/watch?v=invalid-example","videoId": null,"status": "failed","title": null,"message": "This video could not be downloaded.","error": "This video could not be downloaded.","video": null,"file": null}
Pricing (process mode)
This Actor uses pay-per-event pricing on Apify. You are charged only when a Process run delivers results — Estimate mode does not trigger download charges.
Typical charge types:
| Event | When it applies |
|---|---|
| Download (per MB) | Data transferred while downloading each successful video |
| Storage (per MB-day) | Hosted file storage for the retention period you selected |
| Detailed info | When detailed watch-page metadata is successfully collected |
| Transcript | When a transcript is successfully saved |
You are not charged for failed or skipped videos. If you stop a run early, you are billed for data already transferred during in-progress downloads.
See the Actor’s Pricing tab on Apify for current unit prices.
Free plan limits
On the Apify free plan, the Actor automatically applies:
| Setting | Free limit |
|---|---|
| Video links per run | 1 (only the first valid link) |
| Video quality | 720p maximum |
| Video bitrate | Smallest file |
| File storage duration | 1 day |
Paid Apify plans can use the full input without these caps. If limits apply, the run log includes a short notice.
Free-plan limits do not remove pay-per-event charges on successful downloads — they only restrict input options.
Data quality and limitations
Public videos only
The Actor works with publicly available YouTube videos and Shorts. Private, members-only, or age-restricted content may fail.
Availability varies
Some videos cannot be downloaded due to region restrictions, copyright, or YouTube policy. Failed items include a plain-language message in the dataset.
Quality and format
The delivered quality depends on what YouTube offers for that video. Your selected quality is a maximum — a lower resolution may be used when necessary.
Download links expire
Each file.downloadUrl is valid until file.expiresAt. Download or copy files before the retention period ends.
Transcripts
Transcripts depend on captions being available for the video and language. Enable Include transcript and check transcriptFile in the result.
Compliance
You are responsible for using downloaded content in line with applicable laws and YouTube's Terms of Service.
Tips for best results
- Run Estimate first — Check projected cost before downloading many or large videos.
- Use Smallest file bitrate — Reduces file size and cost when maximum quality within a resolution is not required.
- Match video country — If a video is geo-blocked, try the country where it is normally available.
- Start with one link — Confirm quality and format before a large batch.
- Download before expiry — Save files locally or to your own storage before
expiresAt. - Open transcripts from the key-value store — Use the
transcriptFile.keyfrom each row. - Filter the dataset by
status— Export completed rows for download URLs; reviewfailedrows separately. - Schedule recurring runs — Use Apify schedules to refresh downloads or metadata on a cadence.
Frequently asked questions
Why was my link skipped?
The URL may not be a supported YouTube video or Shorts link. Check the run log for warnings.
Why did my quality change on the free plan?
Free-plan runs are capped at 720p, smallest bitrate, 1-day storage, and one link. Upgrade or use a paid Apify plan for full options.
Why is there no download link?
The video may have failed, been skipped when you stopped the run, or you used Estimate mode (which never downloads files).
Why is tags or chapters null?
Enable Include detailed video information, and note that Shorts and some videos publish fewer watch-page fields.
Why is there no transcript?
Enable Include transcript, pick a language if needed, and confirm captions exist for that video.
Can I download a whole playlist?
Add individual video or Shorts links to YouTube links. Playlist URLs are not supported directly.
Does Estimate mode charge me?
No download billing events are triggered in Estimate mode. You only pay standard Apify platform compute for the run itself.
What happens if I abort a long download?
Finished videos are saved to the dataset. In-progress downloads are billed for the data transferred up to the point the run stopped.
Support
For Actor-specific issues, use the Issues tab on the Apify store listing or contact the publisher through Apify.
For platform questions (runs, billing, API, schedules), see Apify documentation and Apify support.