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

2

Total users

1

Monthly active users

5 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"]
}
}