Facebook Media Downloader – Video, Reel & Photo Links avatar

Facebook Media Downloader – Video, Reel & Photo Links

Pricing

from $5.00 / 1,000 facebook media resolveds

Go to Apify Store
Facebook Media Downloader – Video, Reel & Photo Links

Facebook Media Downloader – Video, Reel & Photo Links

Download public Facebook videos, Reels, Watch pages, and photos by URL. Returns direct CDN links plus metadata; optionally saves bounded files to run storage. Cookieless, no login. MCP-ready. $0.005/media.

Pricing

from $5.00 / 1,000 facebook media resolveds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Turn a public Facebook video, Reel, Watch, or photo URL into one dataset row with a direct CDN download link, thumbnail, author, caption, and dimensions when Facebook exposes them. Optionally copy a bounded progressive file into this run's key-value store. Cookieless. MCP-ready.

This Actor is the URL-in → media-out tool for known public posts. Prefer Facebook Video Downloader when you only need Reels or Watch videos and want that video-only listing; use this Actor when the same job must also include public photos.

Best fit for this Actor

  • You already have a public Facebook Reel, Watch, video, or photo URL and need a direct downloadable link.
  • You want cookieless, MCP-ready resolution rather than a page crawl or engagement scrape.
  • You need photos and videos in one SKU with predictable Pay per event pricing.

Start with a single URL for agent calls. Continue with a small batch when you are archiving a known list. For page follower counts after you resolve media, continue with Facebook Followers Scraper.

Sibling routing

  • Video-only SKU → Facebook Video Downloader when you only need Reels/Watch/video and prefer that listing
  • Page follower counts → Facebook Followers Scraper when the next step is page metrics rather than media files
  • Supported scope here: public video, Reel, Watch, and photo URLs that resolve while logged out
  • Route Stories, private posts, Marketplace items, and album crawls to dedicated products instead of this downloader

Workflow story: from a pasted Reel to a durable link

A social archivist drops a public Reel URL into this Actor. The managed provider chain resolves the public post, and one row lands with an MP4 CDN link, caption, author, and duration. She exports JSON into her archive sheet. When she needs a durable copy later, she re-runs with Save media files to storage enabled so a bounded file stays in the run's key-value store.

Quick start input

{
"mediaUrls": [
"https://www.facebook.com/reel/1535656380759655/"
]
}

mediaUrls is the only required field. Accepts facebook.com, m.facebook.com, and fb.watch links for public video, Reel, Watch, and photo URLs.

Input reference

FieldTypeWhat it controls
mediaUrlsarray (required)Public Facebook media URLs
maxMediaintegerBudget cap on saved/billed media records (1–1000, default 20)
mediaTypesarrayOptional keep-filter: video, reel, watch, photo
providerOrderenumManaged provider priority (scrapecreators-first default)
downloadToStoragebooleanCopy progressive MP4/image into run storage
maxFileSizeMBintegerCap per stored file (1–500 MB, default 200)

What data you receive

One dataset item represents one public media asset.

FieldWhat it answers
downloadUrl, hdDownloadUrl, hlsManifestUrl, mimeTypeWhere to fetch the media
mediaType, mediaId, durationSeconds, width, heightWhat kind of asset it is
title, caption, thumbnailUrlContext around the post
authorName, authorUrlWho published it
storedFileUrlDurable copy when file save is enabled
sourceUrl, provider, scrapedAt, postedAtProvenance
{
"mediaId": "1535656380759655",
"sourceUrl": "https://www.facebook.com/reel/1535656380759655/",
"mediaType": "reel",
"mimeType": "video/mp4",
"downloadUrl": "https://video.xx.fbcdn.net/o1/v/t2/example.mp4",
"hdDownloadUrl": null,
"storedFileUrl": null,
"caption": "Public reel caption",
"authorName": "Example Creator",
"durationSeconds": 23.3,
"provider": "scrapecreators",
"scrapedAt": "2026-09-22T12:00:00.000Z"
}

Download the dataset as JSON, CSV, Excel, or HTML. Every terminal run also writes OUTPUT and RUN_SUMMARY with outcome (COMPLETE / PARTIAL / VALID_EMPTY / INVALID_INPUT / UPSTREAM_FAILED / CONFIG_ERROR). Inspect that outcome, then read the dataset.

API example

curl "https://api.apify.com/v2/acts/khadinakbar~facebook-media-downloader/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mediaUrls": ["https://www.facebook.com/reel/1535656380759655/"],
"maxMedia": 1,
"downloadToStorage": false
}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/facebook-media-downloader').call({
mediaUrls: ['https://www.facebook.com/photo.php?fbid=1635563591272344'],
maxMedia: 1,
mediaTypes: ['photo'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results guidance

  • Provide a public URL you can open while logged out.
  • Prefer Reel / Watch / photo.php / /videos/ URLs over ambiguous share wrappers.
  • CDN links expire. Use downloadToStorage promptly when you need a durable file.
  • Validate OUTPUT.outcome before treating an empty dataset as a product issue: missing public posts report VALID_EMPTY with zero media-resolved charges.

Why AI agents and MCP clients choose this Actor

  • One required input. mediaUrls is the only required field.
  • Predictable cost. Saved media uses the media-resolved Pay per event unit; see the live Pricing tab.
  • Structured output. Stable keys plus a published dataset schema.
  • Honest outcomes. Inspect OUTPUT for INVALID_INPUT, VALID_EMPTY, or UPSTREAM_FAILED, then read the dataset.

Resolve these public Facebook media URLs into direct download links with media type, caption, author, and provenance. Return the dataset rows and the run outcome.

MCP tool name: apify--facebook-media-downloader. Hosted setup lives at mcp.apify.com. After the call, read the dataset, keep sourceUrl / provider / scrapedAt, and respect the run cost cap.

Pricing — Pay per event + platform usage

EventPriceWhen charged
apify-actor-start$0.00005Once per valid run start
media-resolved$0.005Each validated public media row with a usable direct link
media-file-saved$0.005Each optional file successfully stored

Platform compute and proxy usage are passed through to the caller (Pay per event + usage). Invalid inputs and empty public results are not charged the primary media event. See the Actor Pricing tab for the live table.

Builder's note

First-hand implementation note from live provider probes: Facebook's logged-out HTML is a moving target for direct scrapers. During live probes, ScrapeCreators GET /v1/facebook/post returned progressive MP4 fields for Reels and image_url for photo.php IDs, with SociaVault as the same-shape fallback. The extractor therefore prefers structured video.sd_url / video.hd_url and top-level image_url before walking nested blobs, and it records provider not_found as VALID_EMPTY so agents can branch cleanly when a URL is gone.

Only download media you have the right to use. Respect Meta's terms, copyright, and applicable privacy laws. This Actor returns publicly reachable media links for authorized archival, research, and personal use cases. It does not bypass privacy settings.

Facebook and Meta are trademarks of their owners. This independent Actor is not affiliated with, associated with, or endorsed by Facebook or Meta Platforms, Inc.

FAQ

Do I need a Facebook login? No. Cookies and passwords are not accepted.

Does it include Stories? Stories belong on a dedicated Stories product; this Actor covers public video, Reel, Watch, and photo URLs.

Why is a row missing HD? Facebook often exposes only one progressive quality to public no-login views.

Related Actors