# Facebook Video Downloader — MP4 & MP3 by URL (`hipersoft/facebook-downloader`) Actor

Download Facebook videos, Reels and Watch clips by URL as MP4 or MP3. Paste one or more Facebook video links and get a ready download link for each — plus title, author and thumbnail. One clean row per URL as JSON, CSV or Excel. Cheap pay-per-video pricing for creators, research and n8n.

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

## Pricing

from $0.0025 / video downloaded

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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 — MP4 & MP3 by URL

Download Facebook videos, Reels and Watch clips as MP4 — or pull the audio as MP3 — in bulk. Paste one or more Facebook video links and get a ready-to-use download link for each, plus the details that go with it: video title, author/page name and thumbnail. Pick the format you want (MP3 audio, or 360p / 720p / 1080p MP4) and get one tidy row per URL, ready to export as JSON, CSV or Excel.

This is the cheap, no-nonsense way to save Facebook videos and audio at scale for content creators, editors, marketers, researchers and anyone building an automated media pipeline.

### Why use this Facebook downloader

- 🎬 **MP4 video or MP3 audio** — choose a video resolution (360p, 720p, 1080p) or extract just the audio as an MP3.
- 🎞️ **Videos, Reels and Watch** — works with regular Facebook videos, Reels and Watch clips.
- 🏷️ **Clean metadata** — every video comes back with its title, author/page name and thumbnail image where available.
- 🔗 **Any Facebook video link** — `facebook.com/watch/?v=…`, `facebook.com/{page}/videos/…`, `facebook.com/reel/…`, `fb.watch/…` short links, `facebook.com/share/v/…` links, plus `m.facebook.com` and `web.facebook.com` links all work.
- 📦 **Bulk in one run** — drop in a whole list of URLs and get one clean record per video.
- 💸 **Cheapest per-video pricing** — pay only for the videos you actually process, with volume discounts as you scale.
- 🧩 **Built for automation** — feed URLs from a spreadsheet, Make or n8n and get structured records with direct download links back.
- 📤 **Export anywhere** — JSON, CSV or Excel, or pull straight from the dataset into your own tools.

### What you get

Each video is one dataset record like this:

```json
{
  "source": "facebook",
  "inputUrl": "https://www.facebook.com/watch/?v=10153231379946729",
  "videoId": "10153231379946729",
  "url": "https://www.facebook.com/watch/?v=10153231379946729",
  "title": "Sample Facebook Video",
  "author": "Example Page",
  "thumbnailUrl": "https://.../thumbnail.jpg",
  "format": "720",
  "downloadUrl": "https://.../facebook-video-720p.mp4",
  "status": "ready",
  "durationText": "1:24"
}
```

### Input

Give the downloader a list of Facebook video URLs and pick a format. That's it.

```json
{
  "videoUrls": [
    "https://www.facebook.com/watch/?v=10153231379946729",
    "https://fb.watch/xxxxxxxxxx/"
  ],
  "format": "720",
  "maxItems": 0
}
```

| Field | Description |
| --- | --- |
| `videoUrls` | One or more Facebook video URLs (required). Watch links (`facebook.com/watch/?v=…`), Reels (`facebook.com/reel/…`), page videos (`facebook.com/{page}/videos/…`), `fb.watch/…` short links and `facebook.com/share/v/…` links all work, as do `m.facebook.com` and `web.facebook.com` links. Plain strings or `{ "url": "..." }` objects. |
| `format` | What to download: `mp3` (audio only), or `360` / `720` / `1080` for MP4 video at that resolution. Default `720`. |
| `maxItems` | Maximum number of videos to process (0 = no limit; process every URL). |
| `proxyConfiguration` | Optional. Not needed for normal use — leave it off. |

### Output fields

| Field | Description |
| --- | --- |
| `source` | Always `facebook`. |
| `videoId` | Facebook video ID or share code, when detected from the URL. |
| `url` | The video URL. |
| `title` | Video title, when available. |
| `author` | Author / page name, when available. |
| `thumbnailUrl` | Thumbnail image URL, when available. |
| `format` | The format you requested (`mp3`, `360`, `720` or `1080`). |
| `downloadUrl` | Ready download link for the file, or `null` if it wasn't ready in time. |
| `status` | `ready` (download link populated), `timeout` (not ready in time — try again), or `failed`. |
| `durationText` | Video length, when available. |

### Use cases

- **Save videos and audio** — grab MP4 videos or MP3 audio for editing, archiving or offline use.
- **Reels & Watch sourcing** — pull short-form Reels and Watch clips into your workflow with one link each.
- **Marketing & social teams** — collect a batch of video links with titles and thumbnails for review and repurposing.
- **Content research** — gather titles, authors and thumbnails across a batch of videos in one pass.
- **Editing pipelines** — hand a list of URLs to your editors with direct download links ready to go.
- **Automation** — feed a list of URLs from a spreadsheet, Make or n8n and get structured records with download links back.

### FAQ

**Can I download audio only?** Yes — set `format` to `mp3` and you get an MP3 audio link instead of a video file.

**Which resolutions can I choose?** `360`, `720` and `1080` return an MP4 at that resolution; `mp3` returns audio only.

**Does it work with Reels and Watch?** Yes — regular Facebook videos, Reels (`facebook.com/reel/…`) and Watch clips (`facebook.com/watch/?v=…`) are all supported.

**Do fb.watch and share links work?** Yes — `fb.watch/…` short links and `facebook.com/share/v/…` links are accepted, along with `m.facebook.com` and `web.facebook.com` links.

**Can I download many videos at once?** Yes. Put as many URLs as you like in `videoUrls` and you get one record per video.

**What does `status` mean?** `ready` means the `downloadUrl` is populated. `timeout` means the file wasn't ready in time — just run that URL again. `failed` means the video couldn't be processed (e.g. an invalid or private URL).

**Do I need a proxy?** No. Proxy is optional and off by default.

**How much does it cost?** Pay-per-event: a tiny charge per run plus a small charge per video processed, with tier discounts as your volume grows. See the **Pricing** tab for current rates.

### Notes

This tool retrieves media and public metadata for Facebook videos whose URLs you provide. It is an independent tool and is not affiliated with, endorsed by or connected to Facebook or Meta; all names and trademarks belong to their respective owners. Only download content you own or have the right to use, and respect Facebook's terms and applicable copyright law. Public content only.

# Actor input Schema

## `videoUrls` (type: `array`):

One or more Facebook video page URLs to download — Watch clips (facebook.com/watch/?v=…), Reels (facebook.com/reel/…), page videos (facebook.com/{page}/videos/…), fb.watch/… short links and facebook.com/share/v/… links. m.facebook.com and web.facebook.com links work too. You can pass plain strings or {"url": "..."} objects.

## `format` (type: `string`):

Choose MP3 (audio only) or an MP4 video resolution.

## `maxItems` (type: `integer`):

Maximum number of videos to download (0 = no limit; process every URL you provide).

## `proxyConfiguration` (type: `object`):

Optional proxy. Not required — leave off to run on a direct connection. Enable only if you specifically want requests routed through a proxy.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.facebook.com/watch/?v=10153231379946729"
  ],
  "format": "720",
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {
    "videoUrls": [
        "https://www.facebook.com/watch/?v=10153231379946729"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/facebook-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 = {
    "videoUrls": ["https://www.facebook.com/watch/?v=10153231379946729"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/facebook-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 '{
  "videoUrls": [
    "https://www.facebook.com/watch/?v=10153231379946729"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call hipersoft/facebook-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/facebook-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/kTAg9DNKBp7Ro9VRx/builds/mmc0DMg7bNh07RnXt/openapi.json
