Ultra-Fast Social Media Downloader – 21+ Platforms! avatar

Ultra-Fast Social Media Downloader – 21+ Platforms!

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Ultra-Fast Social Media Downloader – 21+ Platforms!

Ultra-Fast Social Media Downloader – 21+ Platforms!

Download videos, audio, and photos from 21+ social media platforms including YouTube, TikTok, Instagram, Twitter/X, Reddit, Facebook, Snapchat, Pinterest & more. Supports 144p to 4K quality, MP4/MP3/WebM formats, and up to 50 concurrent downloads for blazing-fast bulk media scraping.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Rover Omniscraper

Rover Omniscraper

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

7

Monthly active users

14 days ago

Last modified

Share

Social Media Video Downloader - Apify Actor

Download videos from 21+ social media platforms with configurable quality, format, and concurrent processing.

πŸš€ Quick Start

Local Testing

# Install dependencies (already done if you see node_modules/)
npm install
# Test with Instagram URLs (creates ./downloads/)
node test-runner.js
# Or test with custom URLs
echo '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","quality":"720"}' > test.json
# Edit src/main.js to read test.json instead of Apify input
node src/main.js

Run with Apify CLI

# Install Apify CLI globally
npm install -g apify-cli
# Run locally with Apify storage
npx apify run
# Configure input in: apify_storage/key_value_stores/default/INPUT.json

πŸ“‹ Features

  • 21 Platforms: YouTube, TikTok, Instagram, Twitter/X, Reddit, Facebook, Bilibili, Vimeo, Twitch, Pinterest, SoundCloud, Snapchat, VK, OK.ru, Rutube, Tumblr, DailyMotion, Bluesky, Streamable, Loom, Newgrounds
  • Concurrent Downloads: 1-50 parallel downloads (default: 10)
  • Quality Options: 144p to 4K (2160p)
  • Format Support: MP4, WebM, MKV, MP3, OGG, WAV, Opus, GIF
  • FFmpeg Processing: Video+audio merging, remuxing, audio extraction, GIF conversion
  • Retry Logic: 3 attempts with exponential backoff
  • No External APIs: Embedded Cobalt server on localhost

🎯 Input Parameters

{
"url": "https://www.youtube.com/watch?v=...",
"urls": ["https://...", "https://..."],
"quality": "1080",
"downloadMode": "auto",
"audioFormat": "mp3",
"audioBitrate": "128",
"videoCodec": "h264",
"filenameStyle": "basic",
"concurrency": 10,
"tiktokFullAudio": true,
"tiktokH265": false,
"twitterGif": true,
"youtubeHLS": false,
"youtubeDubLang": "en",
"disableMetadata": false,
"cookies": {},
"proxyConfiguration": {}
}

Single or Multiple URLs: Use either url (string) or urls (array), not both.

Quality Options

  • 144, 240, 360, 480, 720, 1080, 1440, 2160

Download Modes

  • auto - Video + audio (default)
  • audio - Audio only
  • mute - Video without audio

Audio Formats

  • best, mp3, ogg, wav, opus

Video Codecs (mainly YouTube)

  • h264 - Best compatibility (default)
  • av1 - Best quality
  • vp9 - Good balance

Filename Styles

  • classic - service_id_res.ext
  • basic - Title (res, service).ext (default)
  • pretty - Title (res, service).ext
  • nerdy - Title (res, service, id).ext

πŸ“¦ Output

Apify Run

  • Files: Stored in Apify Key-Value Store
  • Metadata: Pushed to Apify Dataset with:
    • Direct download URLs to Apify storage (not social media links)
    • File metadata (title, author, album, copyright, date, etc.)
    • File size, content type, status
    • Download timestamp

Local Run (test-runner.js)

  • Files: Saved to ./downloads/
  • Metadata: Appended to ./downloads/metadata.jsonl

Metadata Format

{
"url": "https://www.youtube.com/watch?v=...",
"service": "youtube",
"filename": "Rick Astley - Never Gonna Give You Up.mp4",
"fileSize": 11839321,
"contentType": "video/mp4",
"kvStoreKey": "Rick_Astley_Never_Gonna_Give_You_Up.mp4",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/Rick_Astley_Never_Gonna_Give_You_Up.mp4",
"status": "success",
"error": null,
"downloadedAt": "2026-04-08T18:12:27.743Z",
"metadata": {
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"artist": "Rick Astley",
"album": "Whenever You Need Somebody",
"copyright": "Β© 1987 PWL",
"date": "2009-10-25",
"sublanguage": "en"
}
}

Note: The downloadUrl field provides a direct link to download the file from Apify storage, making it easy for users to access their downloaded content without navigating through the platform.

πŸ§ͺ Test Results

Instagram (2026-04-08)

βœ… 3/3 downloads succeeded in 5.0 seconds

URLTypeSizeStatus
reel/DWyB-FxAY1pVideo2.59 MBβœ… Success
p/DWmtt6SkVALPhoto0.06 MBβœ… Success
reel/DTdLffwjkN-Video0.43 MBβœ… Success

YouTube (2026-04-08)

βœ… Download verified - 5.25 MB MP4 at 144p

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Apify Actor β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ src/main.js (Actor Entry) β”‚ β”‚
β”‚ β”‚ β€’ Initialize Apify β”‚ β”‚
β”‚ β”‚ β€’ Parse & validate input β”‚ β”‚
β”‚ β”‚ β€’ Configure proxy β”‚ β”‚
β”‚ β”‚ β€’ Start Cobalt server (localhost) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Cobalt API Server (Embedded on 127.0.0.1) β”‚ β”‚
β”‚ β”‚ β€’ Express server on random port β”‚ β”‚
β”‚ β”‚ β€’ 21 service handlers β”‚ β”‚
β”‚ β”‚ β€’ FFmpeg processing β”‚ β”‚
β”‚ β”‚ β€’ Stream encryption & tunneling β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Orchestrator (p-limit concurrency) β”‚ β”‚
β”‚ β”‚ β€’ Queue URLs β”‚ β”‚
β”‚ β”‚ β€’ Parallel downloads β”‚ β”‚
β”‚ β”‚ β€’ Progress tracking β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Downloader (per URL) β”‚ β”‚
β”‚ β”‚ β€’ POST to Cobalt API β”‚ β”‚
β”‚ β”‚ β€’ Handle tunnel/redirect/picker β”‚ β”‚
β”‚ β”‚ β€’ Retry with backoff (3 attempts) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Storage β”‚ β”‚
β”‚ β”‚ β€’ Save file to KV Store (Buffer) β”‚ β”‚
β”‚ β”‚ β€’ Push metadata to Dataset β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”§ Development

Project Structure

/
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ main.js # Actor entry point
β”‚ β”œβ”€β”€ cobalt-server.js # Embedded Cobalt launcher
β”‚ β”œβ”€β”€ downloader.js # Single URL download
β”‚ β”œβ”€β”€ orchestrator.js # Parallel execution
β”‚ └── storage.js # Apify KV Store + Dataset
β”œβ”€β”€ cobalt-api/ # Embedded Cobalt source
β”‚ └── src/
β”‚ β”œβ”€β”€ processing/services/ # 21 platform handlers
β”‚ └── stream/ # FFmpeg, HLS, proxy
β”œβ”€β”€ packages/
β”‚ └── version-info/ # Version utilities (patched)
β”œβ”€β”€ .actor/
β”‚ β”œβ”€β”€ actor.json # Apify manifest
β”‚ └── INPUT_SCHEMA.json # Input schema
β”œβ”€β”€ Dockerfile # Node 20 + FFmpeg
β”œβ”€β”€ package.json
β”œβ”€β”€ test-runner.js # Local testing (no Apify)
β”œβ”€β”€ test-instagram.json # Sample input
β”œβ”€β”€ context.md # Full documentation
└── README.md # This file

Local Development Workflow

  1. Modify source files in src/
  2. Test locally: node test-runner.js
  3. Update context.md with changes
  4. Run with Apify: npx apify run
  5. Deploy: npx apify push

Adding New Features

  1. Read context.md to understand architecture
  2. Make changes in appropriate module
  3. Test with test-runner.js first
  4. Verify with full npx apify run
  5. Update context.md with what you changed

πŸ“ Configuration

Cookies for Authentication

Some platforms require cookies for private/restricted content:

{
"cookies": {
"youtube": [
{"name": "CONSENT", "value": "YES+..."},
{"name": "VISITOR_INFO1_LIVE", "value": "..."}
],
"instagram": [
{"name": "sessionid", "value": "..."}
],
"tiktok": [
{"name": "sessionid", "value": "..."}
]
}
}

Proxy Configuration

Use Apify's built-in proxy:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}