YouTube Shorts Downloader (Fast & Lightweight)
Pricing
Pay per usage
YouTube Shorts Downloader (Fast & Lightweight)
Ultra-fast, credit-optimized YouTube Shorts downloader using yt-dlp. Runs on minimal 256MB memory, strictly validates shorts, and outputs direct MP4 downloads to Key-Value Store.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Fire Dev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
[!IMPORTANT] Shorts-Only Enforcement: This Actor is engineered specifically for YouTube Shorts ($\le 180$ seconds, vertical format). Non-Shorts and standard full-length videos ($> 180$s or horizontal 16:9 videos) are automatically rejected prior to downloading to safeguard your Apify compute credits.
🚀 Key Features
- ⚡ Ultra-Low Resource Usage: Runs on just 256 MB of RAM without headless browsers, consuming minimal compute credits per run.
- 🎯 Pure Shorts Focus: Pre-inspects video length and aspect ratio, skipping non-shorts before data transfer starts.
- 📦 Direct MP4 Downloads: Automatically saves videos to Apify's Key-Value Store (
SHORT_<id>.mp4) with permanent direct download URLs. - 📊 Comprehensive Metadata: Extracts channel data, view count, like count, comment count, duration, upload date, and thumbnail links into the default Dataset.
- 🔄 Lossless Stream Remuxing: Leverages fast
ffmpegstream remuxing (-c copy) without re-encoding, processing short-form videos in 2–5 seconds. - 🛡️ Apify Proxy Ready: Integrated proxy support for handling restricted or rate-limited regions.
🏗️ Architecture & Execution Flow
flowchart TDA["User Input (Shorts URLs)"] --> B["URL Normalization & Validation"]B --> C{"Pre-Download Check"}C -->|"Duration > 180s or Landscape"| D["Skip Video & Log Reason"]D --> E["Push Skipped Status to Dataset"]C -->|"Valid Short (<=180s)"| F["Fast Stream Download (yt-dlp)"]F --> G["Stream Copy Remuxing (ffmpeg)"]G --> H["Save .mp4 to Key-Value Store"]H --> I["Push Metadata & Direct URL to Dataset"]I --> J["Cleanup Temporary Media"]
💰 Credit & Resource Optimization
Compute units on Apify are billed by $\text{Memory (GB)} \times \text{Duration (hours)}$. Most scrapers spin up resource-heavy headless browsers (Chromium/Playwright) demanding 1 GB to 4 GB of RAM.
| Runner Setup | Memory Allocated | Relative Compute Units Cost | Average Speed / Short |
|---|---|---|---|
| YouTube Shorts Downloader (This Actor) | 256 MB | 1x (Lowest Possible) | ~3 seconds |
| Standard Puppeteer Scraper | 1024 MB | 4x | ~12 seconds |
| Playwright Full Browser Actor | 2048 MB | 8x | ~18 seconds |
| Heavy Multi-Tab Scraper | 4096 MB | 16x | ~30 seconds |
[!TIP] Because this Actor operates with direct HTTP stream retrieval and zero video re-encoding, you can download hundreds of Shorts for mere cents in platform credits.
⚙️ Input Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
shortsUrls | array | [] | List of YouTube Shorts URLs (https://www.youtube.com/shorts/...). |
quality | string | "best" | Target video resolution: best, 1080p, 720p, 480p, or audio_only. |
saveVideoToKeyValueStore | boolean | true | When true, uploads the MP4 directly into Apify's Key-Value Store. |
includeMetadata | boolean | true | Includes full metadata (views, likes, author, duration) in Dataset. |
proxyConfiguration | object | { "useApifyProxy": false } | Optional Apify Proxy configuration. |
Sample JSON Input
{"shortsUrls": ["https://www.youtube.com/shorts/dQw4w9WgXcQ","https://www.youtube.com/shorts/k9nKjQzHh6Q"],"quality": "best","saveVideoToKeyValueStore": true,"includeMetadata": true}
📤 Output Data
Every processed video produces a record in the default Dataset:
{"id": "dQw4w9WgXcQ","url": "https://www.youtube.com/shorts/dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up","duration": 58,"uploader": "Rick Astley","uploaderId": "@RickAstleyYT","uploaderUrl": "https://www.youtube.com/@RickAstleyYT","viewCount": 24500000,"likeCount": 1820000,"commentCount": 42000,"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","uploadDate": "20231015","downloadUrl": "https://api.apify.com/v2/key-value-stores/<STORE_ID>/records/SHORT_dQw4w9WgXcQ.mp4","fileSizeMb": 8.42,"status": "SUCCESS"}
🛠️ Local Development & CLI
# Clone or navigate to the directorycd /root/youtube-shorts-downloader# Validate Actor schemasapify validate-schema# Run Actor in cloudapify call fire_dev/youtube-shorts-downloader -i '{"shortsUrls":["https://www.youtube.com/shorts/VIDEO_ID"]}'