Youtube Shorts Scraper - Pay-per-Event
Pricing
from $0.01 / 1,000 results
Youtube Shorts Scraper - Pay-per-Event
Simply provide YouTube Shorts URLs, and it will gather comprehensive metadata about each video—including the title, description, view count, likes, uploader information, thumbnail, and a direct download link.
Pricing
from $0.01 / 1,000 results
Rating
5.0
(1)
Developer
Broto Tech
Maintained by CommunityActor stats
2
Bookmarked
10
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
YouTube Shorts Scraper 🎬
Extract video metadata from YouTube Shorts in seconds! Just paste your URLs and let the magic happen.
┌─────────────────────────────────────────────────────────────────┐│ ││ 📋 Your Shorts URLs ──► 🔄 Scraper ──► 📊 Rich Data ││ │└─────────────────────────────────────────────────────────────────┘
What Does It Do? 🤔
The YouTube Shorts Scraper is a tool that automatically extracts detailed information from YouTube Shorts videos. Simply provide YouTube Shorts URLs, youtu.be share links, or YouTube watch?v= links, and it will gather comprehensive metadata about each video—including the title, description, view count, likes, uploader information, thumbnail, and a direct download link.
Think of it as a data collector that saves you time by automatically pulling all the important details from Shorts videos instead of manually checking each one. It's perfect for researchers, content analysts, marketers, or anyone who needs to gather information about multiple Shorts videos quickly.
Here's what information it extracts:
| Data Point | Description |
|---|---|
| 🎥 Title | The video's title |
| 📝 Description | Full video description |
| ⏱️ Duration | Length in seconds |
| 🖼️ Thumbnail | High-quality thumbnail URL |
| 👤 Uploader | Channel name & ID |
| 👁️ Views | Current view count |
| ❤️ Likes | Current like count |
| 📅 Upload Date | When it was posted |
| 🔗 Download URL | Direct MP4 link (best quality) |
| 📦 Stored Video | Optional Apify key-value store link to a copied MP4 |
How It Works 🛠️
┌──────────────┐│ You paste ││ Shorts URLs │└──────┬───────┘│▼┌──────────────┐│ Scraper │──── Uses residential proxies│ extracts │ to avoid bot detection│ metadata │└──────┬───────┘│▼┌──────────────┐│ Get clean ││ JSON data │└──────────────┘
Quick Start 🚀
Step 1: Add Your URLs
Paste your YouTube Shorts URLs. Common YouTube share and watch links are accepted too:
https://www.youtube.com/shorts/dQw4w9WgXcQhttps://www.youtube.com/shorts/abc123xyzhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/watch?v=dQw4w9WgXcQ
Step 2: Configure Proxies (Required!)
⚠️ Important: YouTube blocks datacenter IPs. You MUST use residential proxies!
Select Apify Proxy with RESIDENTIAL group for best results. If Apify Proxy is enabled but no group is selected, the actor uses the RESIDENTIAL group automatically because direct YouTube download URLs are not reliable on generic proxy routing.
Step 3: Run & Get Your Data!
Hit that Run button and watch the data flow in.
Input Options ⚙️
| Option | Required | Default | Description |
|---|---|---|---|
urls | ✅ Yes | - | List of YouTube URLs to scrape; /shorts/, youtu.be, and watch?v= links are accepted |
proxyConfiguration | ✅ Yes | Residential | Proxy settings (residential required!) |
maxConcurrency | ❌ No | 3 | How many URLs to process at once (1-10) |
downloadVideos | ❌ No | false | Download each resolved MP4 into the run's default key-value store |
videoStorageTtlSeconds | ❌ No | 3600 | Requested stored-video lifetime metadata |
maxVideoDownloadBytes | ❌ No | 262144000 | Maximum MP4 size to buffer and store |
The urls array accepts request-list objects like { "url": "..." } and plain URL strings.
Example Input
{"urls": [{ "url": "https://www.youtube.com/shorts/dQw4w9WgXcQ" },{ "url": "https://www.youtube.com/shorts/another-video" }],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]},"maxConcurrency": 3,"downloadVideos": true,"videoStorageTtlSeconds": 3600}
Output Format 📤
Each successfully scraped video returns:
{"id": "dQw4w9WgXcQ","title": "Amazing Short Video","description": "Check out this cool video...","duration": 58,"thumbnail": "https://i.ytimg.com/vi/...","uploader": "Cool Creator","uploader_id": "@coolcreator","view_count": 1500000,"like_count": 125000,"upload_date": "20240115","download_url": "https://...","video_storage_key": "VIDEO-dQw4w9WgXcQ.mp4","video_storage_url": "https://api.apify.com/v2/key-value-stores/abc123/records/VIDEO-dQw4w9WgXcQ.mp4","video_storage_content_type": "video/mp4","video_storage_size_bytes": 3210000,"video_storage_ttl_seconds": 3600,"video_storage_expires_at": "2026-05-22T12:00:00Z","url": "https://www.youtube.com/shorts/dQw4w9WgXcQ","success": true}
Successful rows include a non-empty download_url. If metadata is available but no direct MP4 URL can be resolved after retries, the actor returns an error row with DOWNLOAD_URL_UNAVAILABLE.
Optional Apify Video Storage
Set downloadVideos to true to download the MP4 from the returned download_url and store it as a binary record in the run's default Apify key-value store. The dataset row then includes video_storage_url, video_storage_key, video_storage_size_bytes, and video_storage_expires_at.
The default requested lifetime is 1 hour (videoStorageTtlSeconds: 3600). Apify key-value store records do not currently support native per-record TTL, so the actor returns the 1-hour window as video_storage_expires_at metadata; the actual stored record follows Apify storage retention unless deleted separately.
If something goes wrong, you'll get a clear error:
{"url": "https://www.youtube.com/shorts/invalid","success": false,"error_code": "VIDEO_NOT_FOUND","error_message": "Video not found or unavailable"}
Results API (All Mapped Fields) 🔌
Use this endpoint to run the actor and immediately get JSON results with all mapped output fields:
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~youtube-shorts-scraper/run-sync-get-dataset-items\?token=YOUR_API_TOKEN\&format=json\&clean=true\&fields=id,title,description,duration,thumbnail,uploader,uploader_id,view_count,like_count,upload_date,download_url,video_storage_key,video_storage_url,video_storage_content_type,video_storage_size_bytes,video_storage_ttl_seconds,video_storage_expires_at,video_storage_error,url,success,error_code,error_message" \-H "Content-Type: application/json" \-d '{"urls": [{ "url": "https://www.youtube.com/shorts/dQw4w9WgXcQ" }],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]},"maxConcurrency": 3,"downloadVideos": true,"videoStorageTtlSeconds": 3600}'
This gives you one unified payload for both successful and failed URLs without extra dataset-fetch steps. Include the video_storage_* fields if you enable downloadVideos.
Error Codes 🚨
| Code | What It Means |
|---|---|
INVALID_URL | Not a supported YouTube URL or malformed URL |
VIDEO_NOT_FOUND | Video doesn't exist or was removed |
VIDEO_UNAVAILABLE | Video is private or restricted |
AGE_RESTRICTED | Video requires age verification |
BOT_DETECTED | YouTube flagged the request (try residential proxies!) |
RATE_LIMITED | Too many requests, slow down |
DOWNLOAD_URL_UNAVAILABLE | Metadata was extracted, but no direct MP4 download URL was available after retries |
EXTRACTION_ERROR | Something unexpected went wrong |
UNKNOWN_ERROR | An unexpected runtime error occurred |
Tips for Best Results 💡
| Tip | Why |
|---|---|
| 🏠 Use Residential Proxies | Datacenter IPs get blocked by YouTube |
| 🐢 Start with low concurrency (3) | Avoid rate limiting |
| 📊 Process in batches | Split large lists into smaller runs |
| 🔄 Retry failures | Some errors are temporary |
Pricing 💰
This actor uses pay-per-result pricing:
- You only pay for successfully scraped videos
- Failed extractions are free
- Budget limits are respected automatically
Use Cases 📱
- 📈 Analytics - Track performance of Shorts across channels
- 🔍 Research - Study trending content and patterns
- 📥 Archiving - Save metadata for content you care about
- 🤖 Automation - Feed data into your own tools and workflows
FAQ ❓
Q: Why do I need residential proxies? A: YouTube actively blocks requests from datacenter IPs (like AWS, Google Cloud, etc.). Residential proxies make requests look like they're from regular home users.
Q: How fast is it? A: With concurrency set to 3, expect roughly 1-2 seconds per video. Increase concurrency for faster processing, but watch for rate limits.
Q: Can I use youtu.be or watch?v= links?
A: Yes. The actor accepts /shorts/, youtu.be, and watch?v= links. It is optimized and documented for Shorts workflows, but these common YouTube URL formats are accepted when they point to a public video.
Q: What happens if a video is private?
A: You'll get a VIDEO_UNAVAILABLE error with success: false.
Made with ❤️ for the Apify community