Facebook Media Downloader
Pricing
from $3.79 / 1,000 media items
Facebook Media Downloader
Download Facebook videos, reels and photos from public links. Get HD and SD MP4 links, every DASH quality, audio track, thumbnail, caption, author, publish date, duration, views, plays, comments and reactions. Export JSON, CSV, Excel.
Pricing
from $3.79 / 1,000 media items
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Facebook Media Downloader
Facebook Media Downloader turns public Facebook video, reel, photo, and post links into direct download links: HD and SD MP4 files, every other video quality Facebook stores, the separate audio track, full-size photos, plus the caption, author, publish date, duration, and engagement counts.
| Paste up to 100 watch, reel, video, photo, post, m.facebook.com, fb.watch, or share links and get one row per media item with HD and SD MP4 links, 240p-1080p DASH streams, audio, views, plays, comments, and reaction counts, plus a per-URL outcome report, with no Facebook login. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Use Apify Actor parsebird/facebook-media-downloader to get download links for public Facebook videos, reels, and photos. Example with ApifyClient (Python): client.actor("parsebird/facebook-media-downloader").call(run_input={"urls":["https://www.facebook.com/watch?v=1358040539510776","https://www.facebook.com/reel/1195289147628387"],"preferredQuality":"best"}). Inputs: urls array of strings required (1 to 100 public links: facebook.com/watch?v=, /videos/, /reel/, video.php?v=, /photo/?fbid=, photo.php?fbid=, /photos/, /posts/ with a video or photo, permalink.php, story.php, m.facebook.com and web.facebook.com versions, fb.watch short links, and /share/ links; duplicates processed once); preferredQuality string best | hd | sd, default best (picks downloadUrl; falls back to the best available). Output: one dataset row per media item. Fields: inputUrl, facebookId, mediaType (video | reel | photo), sourceUrl, title, caption, authorName, authorUrl, publishedAt (ISO 8601), thumbnailUrl, downloadUrl, quality (HD | SD | original), format (mp4, jpg, png), durationSeconds, downloadAvailable (main link checked), expiresAt, downloadLinks[{url, quality (HD, SD, 240p..1080p, audio, DASH manifest, original), format (mp4, m4a, mpd, jpg), width, height, bitrate, durationSeconds, type (video+audio | video | audio | manifest | image), codec}], engagement {reactionCount, commentCount, shareCount, viewCount, playCount, reactionCounts {like, love, care, haha, wow, sad, angry}}. Every input URL also gets an entry in the key-value store record TARGET-OUTCOMES: {url, stage, success, reason}. Links are signed by Facebook and expire (see expiresAt). API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
What is Facebook Media Downloader?
Facebook Media Downloader is a Facebook video downloader API for public content. It works with videos, reels, and photos, and with posts that contain a video or photo. For each link it returns a direct MP4 download link in HD or SD, the full list of qualities Facebook stores (from 240p to 1080p and the audio track), the thumbnail, caption, author, publish date, duration, and views, plays, comments, shares, and reactions when Facebook shows them.
You don't need a Facebook account, cookies, or an API key. The easiest way to try it is to open the actor, keep the prefilled Meta reel, and click Start. One link takes a couple of seconds.
The actor returns download links. It does not store the media files; open downloadUrl in a browser or pass it to any download tool.
What can Facebook Media Downloader do?
- ๐ฌ Download Facebook videos and reels as MP4 with sound, in HD or SD. Choose the quality with Preferred quality.
- ๐ถ Get every quality: the DASH video streams Facebook keeps (for example 240p, 360p, 720p, 1080p, in AV1 or VP9) and the audio track, each with width, height, bitrate, and codec.
- ๐ผ๏ธ Save Facebook photos in the full size Facebook serves to visitors.
- ๐ Paste links as you find them: watch, video, reel, photo, post,
m.facebook.com,web.facebook.com,fb.watch, and/share/links. - ๐ Get engagement: views, plays, comments, shares, total reactions, and Like/Love/Care/Haha/Wow/Sad/Angry counts.
- ๐งพ See what happened to every link in the
TARGET-OUTCOMESreport: the stage reached and a short reason for each URL. - โฑ๏ธ Automate with Apify schedules, the Apify API, webhooks, and integrations such as Google Sheets, Make, Zapier, and Slack.
- ๐ Export results as JSON, CSV, Excel, HTML, or XML.
What data can you extract from Facebook videos and photos?
| Field | Description |
|---|---|
downloadUrl, quality, format | Main download link for your chosen quality (HD, SD, or original for photos) and its file format |
downloadLinks | Every link found: HD and SD MP4 with sound, video-only DASH streams (240p to 1080p), the audio track, a DASH manifest (.mpd), or the photo, with width, height, bitrate, codec, and type |
downloadAvailable | Whether downloadUrl responded to a download check during the run |
expiresAt | When Facebook's signed link stops working |
facebookId, mediaType, sourceUrl | Facebook media ID, video, reel, or photo, and the Facebook page for it |
title, caption | Title and the post's caption |
authorName, authorUrl | Page or profile that posted it |
publishedAt, durationSeconds, thumbnailUrl | Publish time (ISO 8601), length in seconds, and thumbnail |
engagement | viewCount, playCount, commentCount, shareCount, reactionCount, and reactionCounts by type |
How to download Facebook videos, reels, and photos
- Open Facebook Media Downloader and click Try for free or Start.
- In Facebook URLs, paste one link per line. On Facebook, use Share โ Copy link, or copy the address from your browser.
- Pick Preferred quality: Best available, HD, or SD.
- Click Start.
- Open the Output tab and click
downloadUrlto save the file, or export the results as JSON, CSV, or Excel. Open the Storage โ Key-value store tab and selectTARGET-OUTCOMESto see the result for every link.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array of strings | Yes | โ | 1 to 100 public Facebook video, reel, photo, post, mobile, fb.watch, or share links |
preferredQuality | string | No | best | best, hd, or sd. Picks downloadUrl; if that quality isn't available, the best available one is used |
proxyConfiguration | object | No | โ | Optional. The actor picks its own network route and doesn't need a proxy |
Input / Output
Example input
{"urls": ["https://www.facebook.com/watch?v=1358040539510776"],"preferredQuality": "best"}
Example output (a real row, with signed link parameters shortened to ?... and 7 of the 12 download links left out)
{"inputUrl": "https://www.facebook.com/watch?v=1358040539510776","facebookId": "1358040539510776","mediaType": "reel","sourceUrl": "https://www.facebook.com/reel/1358040539510776/","title": "@jackedjumper is bringing viewers directly into the game, capturing high-energy beach volleyball matches ... | Meta","caption": "@jackedjumper is bringing viewers directly into the game, capturing high-energy beach volleyball matches ...","authorName": "Meta","authorUrl": "https://www.facebook.com/Meta","publishedAt": "2026-06-15T16:00:27.000Z","thumbnailUrl": "https://scontent-iad3-2.xx.fbcdn.net/v/t15.5256-10/724194478_138536397?...","downloadUrl": "https://video-iad3-2.xx.fbcdn.net/o1/v/t2/f2/m412/AQOoSdp-4c110y3ApLpY?...","quality": "HD","format": "mp4","durationSeconds": 14.166,"downloadAvailable": true,"expiresAt": "2026-10-05T23:16:06.000Z","downloadLinks": [{ "url": "https://video-iad3-2.xx.fbcdn.net/o1/v/t2/f2/m412/AQOoSdp-4c110y3ApLpY?...", "quality": "HD", "format": "mp4", "width": 1080, "height": 1920, "bitrate": 4082158, "durationSeconds": 14.166, "type": "video+audio", "codec": null },{ "url": "https://video-iad6-1.xx.fbcdn.net/o1/v/t2/f2/m412/AQNgSUpuUYXNd64vdzR4?...", "quality": "SD", "format": "mp4", "width": 360, "height": 640, "bitrate": 606709, "durationSeconds": 14.166, "type": "video+audio", "codec": null },{ "url": "https://video-iad6-1.xx.fbcdn.net/o1/v/t2/f2/m412/AQMme5a8CKLEw7Uxc8Ls?...", "quality": "1080p", "format": "mp4", "width": 1080, "height": 1920, "bitrate": 1846741, "durationSeconds": 14.166, "type": "video", "codec": "av01.0.08M.08.0.111.01.01.01.0" },{ "url": "https://video-iad3-1.xx.fbcdn.net/o1/v/t2/f2/m412/AQMkVq4VFdzkhOEmwnMC?...", "quality": "audio", "format": "m4a", "width": null, "height": null, "bitrate": 76072, "durationSeconds": 14.166, "type": "audio", "codec": "mp4a.40.5" },{ "url": "https://api.apify.com/v2/key-value-stores/1KLz4k1PCZ1KS14oI/records/MPD-1358040539510776", "quality": "DASH manifest", "format": "mpd", "width": null, "height": null, "bitrate": null, "durationSeconds": 14.166, "type": "manifest", "codec": null }],"engagement": {"reactionCount": 4339,"commentCount": 843,"shareCount": null,"viewCount": 191499,"playCount": 558335,"reactionCounts": { "like": 3816, "love": 409, "care": 62, "haha": 10, "wow": 33, "sad": 1, "angry": 8 }}}
Example TARGET-OUTCOMES record
[{ "url": "https://www.facebook.com/watch?v=1358040539510776", "stage": "media parsing", "success": true, "reason": "Saved reel 1358040539510776 with 12 links" },{ "url": "https://www.facebook.com/groups/abc", "stage": "input validation", "success": false, "reason": "Not a Facebook video, reel, photo, post, fb.watch, or share URL" }]
Download results from the Output tab in JSON, CSV, Excel, HTML, or XML.
Python API example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("parsebird/facebook-media-downloader").call(run_input={"urls": ["https://www.facebook.com/watch?v=1358040539510776","https://www.facebook.com/photo.php?fbid=1144854114870464",],"preferredQuality": "hd",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["mediaType"], item["quality"], item["downloadUrl"])outcomes = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("TARGET-OUTCOMES")for o in outcomes["value"]:print(o["success"], o["stage"], o["reason"])
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('parsebird/facebook-media-downloader').call({urls: ['https://www.facebook.com/watch?v=1358040539510776','https://www.facebook.com/photo.php?fbid=1144854114870464',],preferredQuality: 'hd',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => console.log(item.mediaType, item.quality, item.downloadUrl));const outcomes = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('TARGET-OUTCOMES');console.log(outcomes.value);
See the Python client docs and JavaScript client docs for more options.
Use cases
- Social media and brand teams: save your own videos, reels, and photos in the best quality for reposting and archiving.
- Researchers and journalists: archive public videos with their caption, author, date, and engagement before they are removed.
- Video editors: grab the 1080p stream and the audio track separately, or use the DASH manifest with a player or ffmpeg.
- Content analysis: compare views, plays, comments, and reactions across a list of videos.
- AI and data pipelines: send MP4 links to transcription or moderation tools, such as our Video & Audio Transcriber.
How it works
- The actor checks each link and works out whether it points at a video, reel, photo, or post. Short and share links are followed to the page they point at.
- It opens the page the way a logged-out visitor sees it and reads the media and its details.
- It picks the main link for your quality, checks that it responds, saves one row per media item, and writes the result for every link to
TARGET-OUTCOMES.
How much does it cost to download Facebook videos and photos?
What is the price per Facebook video or photo?
The actor uses pay-per-event pricing: you pay per media item saved, and platform usage is included.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
media-extracted | $0.00439 ($4.39 / 1,000) | $0.00419 ($4.19 / 1,000) | $0.00399 ($3.99 / 1,000) | $0.00379 ($3.79 / 1,000) |
One media-extracted event is one row in the dataset: a video, reel, or photo. Links that fail are not charged, and the same media pasted twice is saved and charged once. The prefilled one-link run costs about $0.0044 on the Free plan, and 1,000 media items cost $4.39. Apify's free plan includes monthly platform credits you can use to try the actor.
Is it legal to download Facebook videos and photos?
Is downloading Facebook videos legal?
The actor only reads public videos, reels, photos, and posts that Facebook shows to anyone without logging in. Downloading public data is generally legal in many jurisdictions, but media belongs to its creators and is protected by copyright, and posts can contain personal data covered by laws such as GDPR and CCPA. Get permission before reusing someone else's media, respect Facebook's Terms, and consult your lawyer if unsure. Read more in Apify's guide: Is web scraping legal?
Other video downloaders and related Actors
| Actor | Best for |
|---|---|
| Facebook Page Video Downloader | Every video from whole Facebook Pages |
| Twitter (X) Video Downloader | MP4 links for videos and GIFs in tweets |
| Instagram Reels Audio Scraper | Reels that use a given Instagram sound |
| YouTube Shorts Downloader | YouTube Shorts download links |
| TikTok Slideshow Downloader | Every photo from TikTok photo-mode posts |
| Telegram Media Downloader | Media from public Telegram channels |
| Video & Audio Transcriber | Transcribing the videos you download |
FAQ
Which links work?
facebook.com/watch?v=, /watch/?v=, video.php?v=, /<page>/videos/..., /reel/..., /photo/?fbid=, photo.php?fbid=, /<page>/photos/..., /<page>/posts/..., permalink.php, and story.php links, the same links on m.facebook.com and web.facebook.com, fb.watch short links, and /share/ links. Group, Page, and profile links are rejected at the input validation stage.
What's the difference between HD/SD and the other qualities?
HD and SD are single MP4 files with sound. The 240p to 1080p entries (type: "video") are video-only streams, and the audio entry is the matching sound track. Use them with a tool that merges video and audio, such as ffmpeg.
What is the DASH manifest link?
Facebook's own manifest URL only works when you're logged in, so the actor saves the manifest from the page in the run's key-value store and links to it (format: "mpd"). DASH players and ffmpeg can read it. It points at the same signed links, so it expires with them.
How long do the download links work?
Facebook signs every link with an expiry time, shown in expiresAt. In our tests links stayed valid for about four days. Download what you need soon after the run, or run the actor again for fresh links.
Why did a link fail?
Open TARGET-OUTCOMES. Each failed link has the stage it reached (input validation, fetching, redirect handling, source access classification, or media parsing) and a short reason, for example that Facebook asked for login, said the content isn't available, or the page had no downloadable video. The actor only says content is unavailable when Facebook says so. Failed links aren't charged.
Why didn't a share link work? Share links are resolved by following Facebook's redirect. If Facebook shows a login page instead of redirecting, the link may be private, expired, or mistyped, and the outcome says so.
Why are some engagement numbers null? The actor only fills in counts that Facebook shows on the public page. Photos have no views or plays, and some videos don't show a share count.
Which time is publishedAt?
It is the time the post was published. If Facebook doesn't show that on the page, it is the video's own publish time.
Can I download private videos or videos from private groups? No. The actor only reads content Facebook shows to logged-out visitors.
Can I run it on a schedule or from my app? Yes. Use Apify schedules, call it from the API tab, or connect it to Make, Zapier, Google Sheets, or Slack through integrations.
Where can I report issues? Open the Issues tab on the actor page with your input and run ID.