# Facebook Video Downloader (`solid-scraper/facebook-video-downloader`) Actor

📹✨ Download Facebook videos fast and free! With our Facebook Video Downloader, save reels, clips, and stories in seconds. No hassle, just high-quality downloads on any device. 🚀💾 Try it now!

- **URL**: https://apify.com/solid-scraper/facebook-video-downloader.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** Videos, Social media
- **Stats:** 8 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Facebook Video Downloader Actor 🎥

**Facebook Video Downloader Actor** lets you download Facebook video links by processing one or more Facebook video URLs and extracting the available playback options, including a best-fit result for the resolution you request. Whether you’re a marketer, content repurposer, researcher, or creator, this **facebook video downloader actor** helps you streamline **facebook video downloader app** and **facebook video downloader online** workflows—saving you hours of manual work.

***

### Why choose Facebook Video Downloader Actor?

| Feature | Benefit |
| --- | --- |
| ✅ **Resolutions you can request** | You choose a target quality (like 1080p or 720p) and get the closest available match. |
| ✅ **Reel vs long video handling** | The actor classifies videos (reel or long video) and selects formats accordingly. |
| ✅ **Built-in resilience** | Includes fallbacks for choosing formats when the requested quality isn’t available. |
| ✅ **Structured dataset output** | Results are stored in a dataset with consistent fields for easy downstream use. |
| ✅ **Scales across multiple URLs** | Submit an array of `video_urls` and process them in one run. |
| ✅ **Automation-friendly JSON** | Export-friendly output that integrates well into analysis pipelines and tools. |

***

### Key features

- 🎯 **Resolution-aware downloads:** Requests a target resolution and selects the closest available quality.
- 🧩 **Video type detection:** Labels videos as `reel` (duration < 60 sec) or `long video` (duration ≥ 60 sec).
- 📊 **Complete metadata object:** Captures available general video metadata in `general_metadata` (only keys that have values).
- 🔍 **Clear match note:** Adds a `note` explaining whether your requested resolution was found or what was selected instead.
- 💾 **Download links bundle:** Produces `download_links` for merged video / video-only / audio when available.
- 🌐 **Bulk URL support:** Processes all items from your `video_urls` list in a single actor run.
- 🛡️ **Format fallback logic:** If the requested quality isn’t found, it automatically selects the highest available.
- 🚀 **Dataset-first workflow:** Each processed URL is pushed to the Apify dataset for quick viewing and export.

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "video_urls": [
    {
      "url": "https://www.facebook.com/share/v/18zL4zNBNJ/"
    },
    {
      "url": "https://www.facebook.com/share/r/168H2dZLPu/"
    }
  ],
  "requested_resolution": "1080p"
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `video_urls` | Yes | A list of Facebook video URLs to process. You can pass them as objects containing `url`. |
| `requested_resolution` | No | The resolution you want (e.g., `1080p`, `720p`, `480p`). If you don’t provide it, the actor defaults to `1080p`. |

Supported `requested_resolution` values: `1080p`, `720p`, `640p`, `540p`, `480p`, `360p`, `270p`, `240p`.

***

### Output

The actor saves each video result in JSON format.

```json
[
  {
    "video_url": "https://www.facebook.com/share/v/18zL4zNBNJ/",
    "requested_resolution": "1080p",
    "video_type": "reel",
    "general_metadata": {
      "title": "Example title",
      "author": "Example uploader",
      "thumbnail": "https://example.com/thumbnail.jpg",
      "duration": 45,
      "channel_name": "Example uploader",
      "video_language": "en",
      "video_age_restriction": "18+"
    },
    "found_resolution": "1080p",
    "note": "Congrats! Your requested resolution was found.",
    "download_links": {
      "merged_video": "https://example.com/merged.mp4",
      "video": "https://example.com/video_only.mp4",
      "audio": "https://example.com/audio.mp4"
    }
  }
]
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `video_url` | string | The Facebook video URL that was processed. |
| `requested_resolution` | string | The resolution requested, or `"Highest Available"` when not provided. |
| `video_type` | string | Video classification: `reel` (duration < 60 sec) or `long video` (duration ≥ 60 sec). |
| `general_metadata` | object | Collected metadata about the video (only includes keys that have a value). |
| `found_resolution` | string | The detected resolution formatted as height plus `p` (e.g., `720p`) or `"Unknown"`. |
| `note` | string | Explains whether the requested resolution was found, or what was selected instead. |
| `download_links` | object | Links to selected formats, including merged video/video-only and audio when available. |
| `error` | string | Present when a run item fails; contains the error message (for that `video_url`). |

> Tip: The dataset structure is designed to make it easy to build a **facebook reels downloader** workflow (for reels) and a **facebook live video downloader** style workflow (for longer videos) without manual cleanup.

***

### How to use Facebook Video Downloader Actor (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** section.

2. **Find the actor**\
   Search for **Facebook Video Downloader Actor** and open its actor page.

3. **Go to the INPUT tab**\
   Enter your inputs using the built-in form fields for `video_urls` and `requested_resolution`.

4. **Add your Facebook video URLs**\
   Paste one or more Facebook video URLs into `video_urls` (the actor accepts a list).

5. **Choose a resolution (optional)**\
   Set `requested_resolution` to one of: `1080p`, `720p`, `640p`, `540p`, `480p`, `360p`, `270p`, `240p`.\
   If you leave it empty, it uses the default `1080p`.

6. **Run the actor**\
   Click **Run**. During execution you’ll see logs indicating which URL is being processed and whether it succeeded or failed.

7. **Review results in the OUTPUT / Dataset**\
   After the run completes, open the dataset to browse the table view and export as JSON/CSV.

8. **Use the download links**\
   For each row, check `download_links` and `found_resolution`. You’ll also get a `note` telling you whether the requested resolution was available.

No coding required—get results in minutes with this **facebook video downloader extension**-style workflow, but powered as an automated actor.

***

### Advanced features & SEO optimization

- 🎛️ **Resolution match + fallback:** If your requested resolution can’t be matched, the actor automatically selects the highest available option and records this in the `note`.
- 🧠 **Reels vs long videos:** It determines `video_type` based on duration so that your **facebook reels downloader** results are handled appropriately.
- 🔄 **Format selection across merged/video-only/audio:** The output includes a `download_links` object that can provide `merged_video`, `video`, and `audio` (or `"Not available"` for audio when applicable).
- 📝 **Structured, export-ready metadata:** The `general_metadata` field keeps your downstream **facebook story video downloader** and analysis pipelines tidy.
- 🛡️ **Proxy support for reliability:** Includes built-in proxy support to improve reliability when processing multiple URLs at scale.

***

### Best use cases

- 📈 **Repurpose reels for campaigns:** Download the best matching quality for **facebook reels downloader** workflows and keep your creative library consistent.
- 🎥 **Content researchers & analysts:** Compare `found_resolution`, `video_type`, and metadata across a batch of URLs for reporting.
- 💼 **Lead-gen and outreach teams (B2B):** Use exported results to organize assets for **facebook video downloader app** content—then pair with your outreach processes.
- 🛠️ **Marketing ops automation:** Run scheduled jobs for a list of URLs to quickly generate a dataset-ready archive of video download options.
- 🧪 **Product and UX testing:** Validate how video formats and resolutions vary by source URL using `found_resolution` and `download_links`.
- 💻 **Developer pipelines:** Feed the dataset output into your own tooling for transformations, asset management, or further processing.
- 📺 **Live/long-form archiving:** For `long video`, capture the available resolution and links in one pass using the same **facebook video downloader actor** workflow.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `video_urls` as an array of items (each item can be an object with `url`, or a direct string URL)
  - ✅ `requested_resolution` as a string enum: `1080p`, `720p`, `640p`, `540p`, `480p`, `360p`, `270p`, `240p`

- **Proxy Support**
  - ✅ Built-in proxy support is used to improve reliability for scraping.

- **Retry Mechanism**
  - ✅ Designed with resilience and fallbacks when the requested resolution isn’t available.

- **Dataset Structure**
  - ✅ Dataset stores one JSON object per processed video (or one per entry in a carousel), with fields: `video_url`, `requested_resolution`, `video_type`, `general_metadata`, `found_resolution`, `note`, `download_links` (and `error` on failures).

- **Rate Limits & Performance**
  - ✅ Performance depends on URL responsiveness and the available formats for each video.

- **Limitations**
  - ❌ If a URL is invalid or processing fails, the actor pushes an object containing `video_url` and `error`.
  - ⚠️ The actor may select **the highest available resolution** when the exact requested resolution cannot be found.

***

### FAQ

#### Can I download Facebook videos in 1080p using Facebook Video Downloader Actor?

✅ Yes—set `requested_resolution` to `1080p`. If that exact quality isn’t available, the actor records a `note` and selects the closest match or the highest available resolution.

#### How does it decide whether a video is a reel or a long video?

✅ It determines `video_type` based on duration. Videos with duration under 60 seconds are labeled `reel`; otherwise they’re labeled `long video`.

#### What does the actor return in the dataset?

✅ Each processed result is pushed to the dataset as JSON including `video_url`, `requested_resolution`, `video_type`, `general_metadata`, `found_resolution`, `note`, and `download_links`. If something fails for a URL, it returns `video_url` plus `error`.

#### Does it include audio download links?

✅ Audio links can be included inside `download_links` under `audio` when available; otherwise the value is `"Not available"`.

#### Can I submit multiple Facebook video URLs in one run?

✅ Yes. Provide an array in `video_urls`, and the actor processes each item and stores the results in the dataset.

#### Is there an API or code requirement to use this actor?

❌ No. You can run it through Apify Console by providing `video_urls` and an optional `requested_resolution`. If you want to integrate programmatically, you can still export the dataset and use it in your own workflows.

#### What if the requested resolution is not found?

✅ The actor sets `found_resolution` and uses `note` to explain what happened—either confirming the match or stating that it selected the highest available resolution instead.

***

### Support & feature requests

Have questions about **Facebook Video Downloader Actor**, or want to suggest improvements for a better **facebook video downloader online** experience? 💬

- 💡 **Feature Requests:** Share enhancements like additional output fields, more resolution options, or improved dataset formatting for **download facebook videos without watermark** workflows.
- 📧 **Contact:** Email <dataforleads@gmail.com>.

Your feedback directly shapes what we build next for Facebook Video Downloader Actor.

***

### Closing CTA / Final thoughts

*If you’re looking for a practical, resolution-aware **Facebook Video Downloader Actor** to streamline downloads at scale, this is built for you.* SEO-optimized outputs and dataset-ready results help you move faster—without extra manual steps.

***

### Disclaimer

**This tool accesses only publicly accessible sources.** It does not access private profiles, authenticated data, or password-protected pages. It’s your responsibility to comply with applicable laws (including GDPR/CCPA), platform terms, and spam regulations when downloading or reusing video content.

For data removal requests, contact <dataforleads@gmail.com>. Please use this actor responsibly, ethically, and only for legitimate purposes.

# Actor input Schema

## `video_urls` (type: `array`):

List of Facebook video URLs to process.

## `requested_resolution` (type: `string`):

Select your desired resolution.

## Actor input object example

```json
{
  "video_urls": [
    {
      "url": "https://www.facebook.com/share/v/18zL4zNBNJ/"
    },
    {
      "url": "https://www.facebook.com/share/r/168H2dZLPu/"
    }
  ],
  "requested_resolution": "1080p"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "video_urls": [
        {
            "url": "https://www.facebook.com/share/v/18zL4zNBNJ/"
        },
        {
            "url": "https://www.facebook.com/share/r/168H2dZLPu/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/facebook-video-downloader").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "video_urls": [
        { "url": "https://www.facebook.com/share/v/18zL4zNBNJ/" },
        { "url": "https://www.facebook.com/share/r/168H2dZLPu/" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/facebook-video-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "video_urls": [
    {
      "url": "https://www.facebook.com/share/v/18zL4zNBNJ/"
    },
    {
      "url": "https://www.facebook.com/share/r/168H2dZLPu/"
    }
  ]
}' |
apify call solid-scraper/facebook-video-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solid-scraper/facebook-video-downloader"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cc5tdXoXfyJkb2me1/builds/YCN98nbpAl0dSVe5u/openapi.json
