Facebook Video Downloader - Reels & MP4 Links
Pricing
from $10.00 / 1,000 facebook video results
Facebook Video Downloader - Reels & MP4 Links
Download public Facebook videos, Reels, Watch pages and video posts by URL, with direct media links and normalized metadata. Optionally save capped MP4 files to run storage, with no Facebook login or cookies.
Pricing
from $10.00 / 1,000 facebook video results
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
26
Total users
14
Monthly active users
8 days ago
Last modified
Categories
Share
Facebook Video Downloader - Reels & MP4 Links
Use this Apify Actor when you have a public Facebook video, Reel, Watch page, or video post URL and need one normalized dataset record per resolved video. It accepts facebook.com, fb.watch, and m.facebook.com links, then returns sourceUrl, downloadUrl, mediaType, provider, scrapedAt, and optional fields such as title, caption, authorName, authorUrl, thumbnailUrl, durationSeconds, width, height, postedAt, hdDownloadUrl, hlsManifestUrl, and storedMp4Url. The output gives you a direct media link plus structured metadata for cataloging, review, extraction, and downstream agent workflows.
Best fit and connected workflows
This Actor fits workflows that start with a public Facebook link and end with a direct media URL or structured metadata record. It is a good match for:
- reviewing a public Reel or video post from a shared URL
- collecting public Watch pages and video posts into a dataset
- extracting caption, author, thumbnail, duration, and dimensions for indexing
- saving an optional bounded MP4 copy into run storage
- using Apify MCP with a single lookup-style tool for Facebook video resolution
Focused standalone workflow
Facebook Video Downloader - Reels & MP4 Links is designed as a focused standalone workflow.
Practical scenario
Maya manages a social content library. She receives a public Facebook Reel URL in a campaign brief and needs the direct media link, author name, thumbnail, and duration before adding the clip to her catalog.
She runs the Actor with videoUrls set to the Reel URL, keeps MP4 saving off, and leaves the default provider order in place. The returned dataset row includes sourceUrl, downloadUrl, mediaType, authorName, thumbnailUrl, durationSeconds, and provider. Maya uses the direct link for review, the author field for attribution, and the duration to tag the clip in her system.
Input
| Field | Type | Required | Description |
|---|---|---|---|
videoUrls | array of strings | Yes | Public Facebook video, Reel, Watch, or post URLs. Accepts facebook.com, fb.watch, and m.facebook.com links. |
maxVideos | integer | No | Hard run-wide cap on saved and billed video records. Default: 20. Range: 1-1000. A Facebook post can contain more than one public video. |
providerOrder | string | No | Managed public-data provider order. Default: the default provider order. Use this to select the provider sequence. |
downloadMp4 | boolean | No | Saves an available progressive MP4 into run storage. Default: false. Direct media links are always returned. |
maxFileSizeMB | integer | No | Per-file cap for optional MP4 storage. Default: 200. Range: 1-500. Applies when MP4 saving is enabled. |
Valid focused JSON example
{"videoUrls": ["https://www.facebook.com/reel/1535656380759655/"],"maxVideos": 1,"downloadMp4": false,"maxFileSizeMB": 1}
Output
Each dataset item contains one normalized public Facebook video record.
| Field | Type | Description |
|---|---|---|
videoId | string or null | Facebook video identifier when exposed by the source. |
sourceUrl | string | Canonical public Facebook URL requested by the user. |
mediaType | string | Detected Facebook page type: reel, watch, video, or post. |
downloadUrl | string | available direct progressive video URL returned by the public-data provider. URLs may expire. |
hdDownloadUrl | string or null | Higher-quality direct progressive video URL when separately exposed; otherwise null. |
hlsManifestUrl | string or null | HLS playlist URL when the provider exposes streaming media rather than a progressive MP4. |
storedMp4Url | string or null | Key-value store URL for an optional MP4 copy created by this run; null when download was disabled or unavailable. |
title | string or null | Public video or post title when available. |
caption | string or null | Public post text or video description when available. |
thumbnailUrl | string or null | Public preview image URL when available. |
authorName | string or null | Public Facebook page or profile display name when available. |
authorUrl | string or null | Public author page or profile URL when available. |
durationSeconds | number or null | Video duration in seconds when exposed by the provider. |
width | integer or null | Video pixel width when exposed by the provider. |
height | integer or null | Video pixel height when exposed by the provider. |
postedAt | string or null | Public post timestamp in ISO 8601 format when available. |
provider | string | Managed provider that resolved this record. |
scrapedAt | string | ISO 8601 time when the Actor saved this result. |
Illustrative output record
{"videoId": "1535656380759655","sourceUrl": "https://www.facebook.com/reel/1535656380759655/","mediaType": "reel","downloadUrl": "https://video.xx.fbcdn.net/v/t42.1790-2/....mp4","hdDownloadUrl": null,"hlsManifestUrl": null,"storedMp4Url": null,"title": "Summer recipe ideas","caption": "A quick recipe for the weekend.","thumbnailUrl": "https://scontent.xx.fbcdn.net/v/t15.5256-10/....jpg","authorName": "Example Page","authorUrl": "https://www.facebook.com/examplepage/","durationSeconds": 32.5,"width": 1080,"height": 1920,"postedAt": "2026-07-01T12:00:00.000Z","scrapedAt": "2026-07-15T12:00:00.000Z"}
How it works
The Actor uses managed public-data providers and resolves records in the configured provider order. The live contract sets the default provider order as the default order, with the fallback data provider available as a fallback path.
It returns direct media links and normalized metadata in the default dataset. When downloadMp4 is enabled and a progressive file is available within maxFileSizeMB, the Actor copies that file into the execution key-value store and exposes the resulting storedMp4Url.
The output contract also publishes stable terminal records in key-value storage:
OUTPUTfor the final summaryRUN_SUMMARYfor provider attempts, stop reason, and warnings
Pricing
Facebook Video Downloader - Reels & MP4 Links uses Pay per event with Apify platform usage included. Open the live Pricing tab for the current event details and any platform usage that applies to your run.
The event model includes:
- one Actor start event when a valid run begins
- one Facebook video result event for each validated public Facebook video record saved to the default dataset
For example, if a run saves three validated video records, the video-result event is counted three times, plus one Actor start event.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. The tool resolves public Facebook video URLs into structured media records, direct links, and stable execution summaries that an agent can read back after execution.
Exact Actor identity: khadinakbar/facebook-video-downloader
Tool description: resolve public Facebook video, Reel, Watch, and post URLs into direct media links and normalized metadata, with optional bounded MP4 storage and stable execution summaries for agent readback.
Download this public Facebook Reel URL and return the direct media link, author, caption, thumbnail, duration, and provider. If an MP4 copy is available within the configured size cap, include the stored file link too.
Output interpretation:
videosis the dataset item list with one record per resolved videooutputis the stable terminal summary for agentsrunSummaryincludes diagnostics, provider attempts, and warnings
Provenance and scope:
- each row records the source URL and the provider that resolved it
- the Actor works on public Facebook video URLs
- it resolves public
facebook.com,fb.watch, andm.facebook.comlinks
Pagination and cost guidance:
- The default dataset is the primary place to read per-video rows
- cost scales by validated video results saved to the dataset
- if you pass several URLs or a Facebook post containing more than one public video, each validated record contributes separately
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/facebook-video-downloader').call({videoUrls: ['https://www.facebook.com/reel/1535656380759655/'],maxVideos: 1,downloadMp4: false,maxFileSizeMB: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log('Run ID:', run.id);console.log('Dataset items:', items);
Best results and outcome guidance
Start with a direct public Facebook video, Reel, Watch, or post URL. If one Facebook post contains more than one public video, set maxVideos to the run-wide cap you want processed.
Keep downloadMp4 off when you only need links and metadata. Turn it on when you want a stored MP4 copy and have a progressive file that fits the size cap. If you want to inspect upstream availability, use the provider-order settings that isolate one provider or reverse the default order.
Design note
I found that downloadUrl, mediaType, provider, and scrapedAt are required fields in the live dataset contract, which makes the record shape clear for downstream parsing.
FAQ
What kinds of Facebook URLs work here?
Public video, Reel, Watch, and post URLs work when they point to accessible public media. The input schema also accepts facebook.com, fb.watch, and m.facebook.com links.
What does one dataset row represent?
One row represents one validated public Facebook video record. A Facebook post can contain more than one public video, so the run-wide maxVideos cap applies across the whole run.
When is an MP4 stored in run storage?
An MP4 is stored when downloadMp4 is enabled and the provider returns an available progressive MP4 that fits within maxFileSizeMB.
How should I use provider selection?
Use providerOrder when you want a specific managed public-data provider order or when you want to compare provider availability. It is a provider-choice setting.
Where do I read the final run status?
Read OUTPUT for the stable terminal summary and RUN_SUMMARY for diagnostics, provider attempts, stop reason, and warnings.
Responsible use
Only save media you are authorized to use. Public media can still be subject to rights, platform terms, and local law. Facebook is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Facebook.