Universal Media Extractor avatar

Universal Media Extractor

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Universal Media Extractor

Universal Media Extractor

Extract videos, audio, and metadata from 1000+ websites including YouTube, TikTok, Twitter/X, Instagram, Vimeo, Facebook, Twitch, and many more. Stream directly to your cloud storage or get direct download URLs for your pipelines.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

41

Total users

2

Monthly active users

7 days ago

Last modified

Share

Universal Media Extractor: Video, Audio and Metadata from Any Link

This actor turns a video or audio link from YouTube, TikTok, Twitter/X, Instagram, Vimeo and 1000+ other sites into structured metadata, direct format URLs, or a downloaded file in your own storage. Extract mode reads the page and returns titles, descriptions, stats and direct links without downloading anything. Download mode saves the file to Apify storage or your own bucket. Stream mode sends the file straight to your S3 or Google Cloud Storage bucket without saving it in Apify storage. Export what you get to JSON, CSV or Excel, or read it through the API.

Why This Scraper?

  • One input field, 1000+ sites. Paste almost any video or audio page link, no separate setup for each platform.
  • Three modes for three jobs. Pull metadata and direct URLs only, save the file to Apify storage, or send it straight to your own S3 or Google Cloud Storage bucket.
  • Format control. Pick the best available quality, audio only, or a resolution cap, with a plain format string.
  • Playlist and channel aware for listings. Flatten a playlist or channel link into its video URLs in one call, without opening every video.
  • Metadata before you commit to storage. Extract mode returns titles, descriptions, view counts and direct format URLs without downloading the file, so you can decide what is worth saving.
  • Optional proxy routing. Route requests through Apify Proxy for sites that block direct connections, or run without a proxy by default.
  • Built for automation. Call it from your own code, a schedule, or a no-code tool through the Apify API.

Use Cases

  • Content archiving: save a copy of a video or audio file to your own S3 or Google Cloud Storage bucket for backup or compliance records.
  • Media processing pipelines: get direct format URLs and metadata to feed into transcription, captioning or machine learning workflows without storing the file yourself.
  • Catalog and research: collect titles, descriptions, view counts and other metadata across many links for analysis or reporting, without downloading anything.
  • App and bot integrations: pull thumbnails, durations and direct URLs to reference media inside your own product.
  • Playlist triage: flatten a playlist or channel link into its video URLs first, then process only the ones you need.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
id"sample123abc"
title"Sample Video Title"
description"A short sample description of the video."
duration212
view_count1500000
like_count42000
upload_date"20240115"
uploader"Sample Channel"
channel"Sample Channel"
thumbnail"https://example.com/thumbnail.jpg"
thumbnailslist of thumbnail URLs at different sizes
webpage_url"https://www.youtube.com/watch?v=sample123abc"
ext"mp4"
extractor"youtube" (name of the site handler that read the link)
tags["music", "sample"]
is_livefalse
formatslist of available formats, each with a format id, extension, resolution and direct URL
storage_urllink to the saved file (download and stream modes only)
storage_type"apify", "s3", or "gcs" (download and stream modes only)
filename"sample123abc.mp4" (download and stream modes only)

Extract mode returns the fields above at the top level of the record, with no storage_url, storage_type or filename since nothing is downloaded. Download and stream mode records carry storage_url, filename and storage_type at the top level, with the rest of the metadata nested under an info object.

How to Use

  1. Paste the video, audio, or playlist link into url.
  2. Pick a mode: extract for metadata and direct links only, download to save the file to Apify storage or your bucket, or stream to send the file straight to your S3 or GCS bucket.
  3. Set format to control quality, and fill storage_type plus storage_config when you choose download or stream to your own bucket.
  4. Click Start, then read the result from the dataset, or open the link it contains to get the stored file.

Extract metadata only:

{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"mode": "extract"
}

Download up to 1080p to Apify storage:

{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"mode": "download",
"format": "best[height<=1080]"
}

Stream audio only to Google Cloud Storage:

{
"url": "https://soundcloud.com/artist/track",
"mode": "stream",
"format": "bestaudio",
"storage_type": "gcs",
"storage_config": {
"bucket": "my-audio-bucket",
"credentials_json": "{...service account JSON...}"
}
}

Flatten a playlist into its video URLs, routed through Apify Proxy:

{
"url": "https://www.youtube.com/playlist?list=PLsample0000000000",
"mode": "extract",
"extract_flat": true,
"proxy": { "useApifyProxy": true }
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/universal-media-extractor").call(run_input={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "mode": "extract"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["duration"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/universal-media-extractor').call({ url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', mode: 'extract' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

About playlists and channels

This actor reads one link per run. extract mode with extract_flat turned on is the reliable way to turn a playlist or channel link into a list of video URLs. To save more than one video, run the actor again per URL with mode set to download or stream; a playlist link passed directly to download or stream mode is not looped over item by item.

Input Parameters

ParameterTypeDefaultDescription
urlstring(none, required)Video, audio or playlist URL to process. The Console prefills a sample YouTube link.
modestringextractextract (metadata only), download (save to storage), or stream (send straight to cloud storage).
formatstringbestFormat selection string, for example best, bestaudio, bestvideo+bestaudio, or best[height<=720].
storage_typestringapifyWhere to save the file for download and stream modes: apify, s3, or gcs.
storage_configobject(none)Cloud storage settings. For S3: bucket, region, aws_access_key, aws_secret_key, prefix, acl. For GCS: bucket, credentials_json, prefix, make_public. acl and make_public apply in stream mode only; download mode returns a signed link valid for 7 days.
proxyobject(none, direct connection)Apify Proxy configuration. Leave empty to connect directly; the Console suggests turning on Apify Proxy as a starting point.
extract_flatbooleanfalseFor playlists, list video URLs without reading each video's full metadata.
playlist_itemsstring(none)Reserved for picking playlist items (for example 1,3,5-7). Not applied in the current version; use extract_flat and choose from the result.
write_subtitlesbooleanfalseReserved; not applied in the current version. Subtitle track links, where the site offers them, appear in the extract mode record.
subtitle_langsarray(none)Reserved; not applied in the current version.
geo_bypassbooleantrueTry to read videos that are restricted to certain countries.
ignore_errorsbooleanfalseReserved; not applied in the current version. A run that hits an error stops and fails.
usernamestring(none)Reserved; not applied in the current version, so login-only content cannot be read.
passwordstring(none)Reserved; not applied in the current version.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"id": "sample123abc",
"title": "Sample Video Title",
"description": "A short sample description of the video.",
"duration": 212,
"view_count": 1500000,
"like_count": 42000,
"upload_date": "20240115",
"uploader": "Sample Channel",
"channel": "Sample Channel",
"thumbnail": "https://example.com/thumbnail.jpg",
"thumbnails": [
{ "url": "https://example.com/thumbnail_small.jpg", "width": 120, "height": 90 }
],
"webpage_url": "https://www.youtube.com/watch?v=sample123abc",
"ext": "mp4",
"extractor": "youtube",
"tags": ["music", "sample"],
"is_live": false,
"formats": [
{ "format_id": "22", "ext": "mp4", "resolution": "1280x720", "url": "https://example.com/stream/720p.mp4" }
]
}

Plan Requirement

This actor needs an Apify plan with compute credits available. Extract mode costs less because no file is downloaded or uploaded. Download and stream mode use more compute time, roughly in proportion to file size, and stream mode's own transfer counts toward that time. The proxy field is empty by default, so requests go out directly; switching to a paid proxy group under Connection can help on sites that block direct connections from cloud IP ranges.

FAQ

How much does it cost?

You pay for the compute time the run uses. Extract mode is the cheapest since nothing is downloaded or uploaded. Download and stream mode cost more, roughly with file size. The Pricing tab shows current rates.

This actor reads and downloads media the same way a browser or media player would, from the link you give it, and it does not remove copy protection or DRM. Whether you may keep, use or redistribute a downloaded file depends on the content owner's rights, the source platform's terms of service, and the copyright law that applies to you. Many places allow a personal, private copy but restrict redistribution or commercial use of someone else's work. Get your own legal advice before redistributing anything, and stick to content you own, have permission for, or that carries a license allowing reuse.

Can I schedule this to catch new uploads automatically?

You can schedule the actor from the Schedules tab to re-run on a link, but it does not track state between runs: there is no built-in new-only or changed-only detection, and no resume feature. Each run reads or downloads the link fresh, every time.

Download and stream mode save the file to storage and give you a link (storage_url) plus metadata, not the raw file bytes inside the dataset record. Open the link to get the actual video or audio file. Also, stream mode only sends data straight to S3 or GCS; with storage_type set to apify, a stream mode run automatically uses download mode instead, since direct streaming isn't offered for that storage. A format that combines separate video and audio streams, such as bestvideo+bestaudio, also makes a stream run use download mode.

Why did my run fail instead of returning an empty result?

This actor reads one link per run, so there is no partial or empty dataset outcome. If the link cannot be read at all, for example it is invalid, the content was removed or made private, or the site refuses the connection, the run stops and fails. A dataset record describing the problem is still pushed before the run fails, so you can see what went wrong without reading the logs. Try again after checking the link, or add a proxy under Connection if the site is blocking the default connection.

Can I use this with AI agents or MCP?

Yes. Call it like any other Apify actor from an AI agent, an MCP client that exposes Apify actors as tools, or your own automation, through the Apify API. This actor does not push results into a third-party app on its own; the dataset records and the direct URLs they contain are what you feed into your agent or workflow.

🔗 Want more social media data?

Pair this actor with these related scrapers from the same team:

🎬 Twitch ALL IN ONE URL
From $1/1K. Scrape Twitch data at scale, including channels, live streams, clips, VODs...
📱 Tiktok Live Recorder
Record TikTok live streams to MP4 with full metadata, all stream quality URLs, and...
📱 TikTok Profile, Hashtag, Search, Video & Trending Scraper
Scrape TikTok without login. Extract profiles, bios, follower stats and videos; search by...
📱 Lemon8 Profile Scraper
Scrape Lemon8 user profiles with automated multi-profile discovery. Extract profile data...
👗 Lemon8 Feed Scraper
Scrape Lemon8 feeds across 22 categories and 10+ regions. Extract posts, images, videos...
📱 Lemon8 Search Scraper
Scrape Lemon8 posts by keyword across multiple regions. Extract posts, images, videos...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.