Facebook Media Downloader
Pricing
from $4.50 / 1,000 media items
Facebook Media Downloader
Get direct source-hosted links for public Facebook videos, reels, and photos. Export media variants, captions, author details, engagement counts, and a clear outcome for each accepted URL.
Pricing
from $4.50 / 1,000 media items
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
29
Total users
14
Monthly active users
2 days ago
Last modified
Categories
Share
📥 Get public Facebook media links
Facebook Media Downloader helps researchers, creators, and teams get direct source-hosted links for known public Facebook videos, reels, and photos. It also returns available media variants, public details, and a clear outcome for every accepted URL, so failed targets do not vanish behind an empty run.
- Get HD links with Facebook Video Downloader HD when Facebook exposes them.
- Resolve a known public link with Download Facebook Video.
- Process public videos, reels, and photos with Facebook Media Downloader.
- Get direct links from a known public reel with Facebook Reel Downloader.
- Export public video links and details with Facebook Video Downloader.
📊 What data is returned?
Each saved dataset row is one public Facebook media item found from the first eligible occurrence of a target. Duplicate targets are ignored after that first occurrence.
| Field | Type | What it does |
|---|---|---|
facebookId | string | Gives the Facebook media ID. |
mediaType | string | Says whether the item is a video, reel, photo, or unknown kind. |
sourceUrl | string or null | Gives the canonical Facebook page when known. |
title | string or null | Gives the source title when exposed. |
caption | string or null | Gives the public caption or description when exposed. |
authorName | string or null | Gives the public author or Page name when exposed. |
authorUrl | string or null | Gives the public author or Page URL when exposed. |
publishedAt | string or null | Gives the source publish time when exposed. |
thumbnailUrl | string or null | Gives a direct thumbnail link when exposed. |
downloadUrl | string | Gives the main source-hosted media link for your quality choice. |
quality | string | Gives the quality label for downloadUrl. |
format | string or null | Gives the file format when known. |
durationSeconds | number or null | Gives video length in seconds when known. |
downloadAvailable | boolean | Says whether the main link worked when checked. |
expiresAt | string or null | Gives the time the link may expire when Facebook exposes it. |
downloadLinks | array | Lists all source-hosted variants found. |
downloadLinks[].url | string | Gives the direct link for a variant. |
downloadLinks[].quality | string | Gives its source quality label. |
downloadLinks[].format | string or null | Gives its file format when known. |
downloadLinks[].width | integer or null | Gives its width in pixels when known. |
downloadLinks[].height | integer or null | Gives its height in pixels when known. |
downloadLinks[].bitrate | integer or null | Gives its bitrate when exposed. |
downloadLinks[].durationSeconds | number or null | Gives its length in seconds when known. |
engagement | object | Holds public engagement counts when exposed. |
engagement.reactionCount | integer or null | Gives known public reactions. |
engagement.commentCount | integer or null | Gives known public comments. |
engagement.shareCount | integer or null | Gives known public shares. |
engagement.viewCount | integer or null | Gives known public views. |
engagement.playCount | integer or null | Gives known public plays. |
{"facebookId": "1027429115410647","mediaType": "photo","sourceUrl": "https://www.facebook.com/photo.php?fbid=1027429115410647&set=a.714359800050915&id=100044307047609","title": "31 juillet 1982 : l’accident de... - Histoire d'apprendre","caption": "31 juillet 1982 : l’accident de... - Histoire d'apprendre","authorName": null,"authorUrl": null,"publishedAt": null,"thumbnailUrl": null,"downloadUrl": "https://scontent.fsyd8-1.fna.fbcdn.net/v/t39.30808-6/481220128_1171403471013210_6752279108487433151_n.jpg?stp=cp0_dst-jpg_e15_fr_q65_tt6&_nc_cat=105&_nc_map=urlgen_bucketless&ccb=1-7&_nc_sid=e5c1b6&_nc_ohc=7zW-QGmi7u0Q7kNvwFZ0S4z&_nc_oc=AdpCIiNpenPAZeK98OPl7p3jyyGtsP9dvtIuHjKL550j269akbjT8Fi1XKur7enBkw93ocRnVa77IL6JBmJtsPwE&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_rml=0&_nc_ht=scontent.fsyd8-1.fna&_nc_gid=VFRnIaqqg3FAgLeRvCvOqw&_nc_ss=7b289&oh=00_AQAZA35IaUOZGEsUv8OPY41jQM8pGEzscO8QlA6ED8lHkA&oe=6A6EC55D","quality": "unknown","format": "jpg","durationSeconds": null,"downloadAvailable": true,"expiresAt": "2026-08-02T04:19:41.000Z","downloadLinks": [{"url": "https://scontent.fsyd8-1.fna.fbcdn.net/v/t39.30808-6/481220128_1171403471013210_6752279108487433151_n.jpg?stp=cp0_dst-jpg_e15_fr_q65_tt6&_nc_cat=105&_nc_map=urlgen_bucketless&ccb=1-7&_nc_sid=e5c1b6&_nc_ohc=7zW-QGmi7u0Q7kNvwFZ0S4z&_nc_oc=AdpCIiNpenPAZeK98OPl7p3jyyGtsP9dvtIuHjKL550j269akbjT8Fi1XKur7enBkw93ocRnVa77IL6JBmJtsPwE&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_rml=0&_nc_ht=scontent.fsyd8-1.fna&_nc_gid=VFRnIaqqg3FAgLeRvCvOqw&_nc_ss=7b289&oh=00_AQAZA35IaUOZGEsUv8OPY41jQM8pGEzscO8QlA6ED8lHkA&oe=6A6EC55D","quality": "unknown","format": "jpg","width": null,"height": null,"bitrate": null,"durationSeconds": null}],"engagement": {"reactionCount": null,"commentCount": null,"shareCount": null,"viewCount": null,"playCount": null}}
🚀 How do I run the Actor?
- Add one or more known public Facebook media URLs.
- Pick the preferred video quality.
- Start the Actor.
- Open Media results for saved media and Target outcomes for one outcome per accepted URL.
The Actor does not search Facebook or crawl Pages, profiles, groups, albums, or stories. It does not use Facebook cookies, a login, or a Meta API key to cross access limits.
⚙️ Input
| Field | Type | What it does |
|---|---|---|
urls | string array | Accepts 1 to 100 public Facebook video, reel, photo, mobile, or share URLs. |
preferredQuality | string | Picks best, hd, or sd for the main video link. If that choice is missing, the best available quality is used. |
This is the public input from a successful current beta run:
{"urls": ["https://www.facebook.com/watch?v=1358040539510776"],"preferredQuality": "best"}
📦 Output and failed targets
Media results opens successful rows in the default dataset. Target outcomes opens a JSON report with a success or failure outcome for each accepted URL.
For an unresolved target, the outcome points to the known stage: input validation, fetching, redirect handling, source access classification, or media parsing. The Actor says content is unavailable only when the observed Facebook response proves it. In other cases, it gives the narrower known failure and does not guess. This means a successful run with no media still has a report for each accepted target.
💸 Pricing
This Actor uses pay-per-event pricing. You pay for each public video, reel, or photo saved with a direct media link. A target that produces no saved media is not charged as a media item.
🔌 Integrations
Run it in Apify Console or connect the dataset and target report to the Apify API, schedules, webhooks, and Apify integrations.
❓ FAQ
Why did my accepted URL return no media?
Open Target outcomes. It tells you whether validation, fetching, redirects, source access classification, or media parsing failed. It does not call the target unavailable unless Facebook proved that response.
Can it download private Facebook videos?
No. It works with publicly reachable media and does not accept credentials or bypass private, friends-only, closed-group, deleted, or login-only access limits.
Does it store the media file?
No. It returns source-hosted Facebook links. Facebook may rotate or expire them, so use or refresh them soon.
Can I choose HD or SD?
Yes. The choice sets the main video link. If that quality is missing, the Actor uses the best available one and keeps the variants it found.
Does “without watermark” mean the Actor edits the file?
No. It returns the source-hosted file Facebook exposes. It does not remove marks, transform files, or transcode media.
📝 Changelog
- 1.1: Added public photo support and a target outcome report that distinguishes fetching, redirect, access, parsing, and limit failures without guessing that content is unavailable.
- 1.0: Simplified output rows to direct Facebook video and reel media links, removed Apify-hosted media copies, and lowered media item pricing.
- 0.1: Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Facebook Page Video Downloader — Export videos and public details from Facebook Page libraries.
- Facebook User Posts Scraper — Export public Facebook timeline posts and attached media.
- Instagram Downloader API — Get direct media links from public Instagram posts and reels.
- TikTok Video Downloader — Save public TikTok video or audio from known URLs.
- Tumblr Media Downloader — Export media links and details from public Tumblr pages.
Made with ❤️ by Maxime Dupré


