Facebook Page Video Downloader
Pricing
$4.45 / 1,000 saved videos
Facebook Page Video Downloader
Collect public videos from Facebook Page video libraries. Export video IDs, captions, publish times, engagement counts, authors, thumbnails, and playable URLs when Facebook exposes them.
Pricing
$4.45 / 1,000 saved videos
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
51
Total users
12
Monthly active users
17 days ago
Last modified
Categories
Share
📥 Facebook page video downloader for public Pages
Content researchers, social teams, analysts, and developers can collect public videos from Facebook Page libraries. The Actor returns one dataset row per successful video with the submitted target, Page identity, video ID, title or caption, publish time, engagement counts, author data, thumbnail, and a direct playable link when Facebook exposes them. This gives you source-backed data for research, reporting, and repeat exports without copying each video by hand.
This also supports content research, campaign reporting, and focused Page video audits. Instead of opening a Page, scrolling through the Videos tab, and copying metadata by hand, you can run the Actor, export the dataset, schedule repeat exports, or call it from the Apify API.
- Collect videos from public Pages in a structured dataset with Scrape Facebook Page Videos.
- Read saved Page video rows from an automation workflow with Facebook Page Videos API.
- Export Page video metadata for research with Facebook Page Videos Scraper.
- Collect videos from a known Page target with Facebook Page Video Scraper.
- Start a public Page video export with Facebook Page Video Downloader when you need playable links.
📦 Facebook Page video data
What you get
Each successful row represents one public Facebook Page video. It includes source-confirmed Page identity, a stable video ID, title or description, publish time, duration, public play, reaction, and share counts, reaction details, author identity, and media links when Facebook exposes them. Fields that Facebook does not expose stay null.
The Actor saves the first eligible occurrence of each source video. If the same source item appears again through another submitted target or equivalent value, the later occurrence is ignored. The saved row describes only the first match.
Direct playable URLs can be temporary. Use videoId, target, and page when you need to join rows across repeated runs.
🚀 Run a Facebook Page video export
Run steps
- Open the Actor input.
- Add one or more public Facebook Pages in Facebook Pages.
- Use a Page URL such as
https://www.facebook.com/facebook, a handle such asfacebook, a profile ID, or a delegate Page ID such as20531316728. - Set Maximum videos to the number of successful video rows you want across the run. Leave it empty to return all available videos until the source is exhausted.
- Start the Actor and open the dataset.
The Actor continues through each public Page's video list until the run-wide maximum or the source is exhausted.
For a first run, keep the prefilled public Pages and the prefilled Maximum videos value. Replace them after you confirm the output shape.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
pageTargets | array of strings | Accepts 1 to 50 public Facebook Page URLs, handles, slugs, profile IDs, or delegate Page IDs. |
maxResults | integer | Sets an optional run-wide maximum of public Page videos, with a minimum of 1. The prefilled value is 25. Leave it empty to return all available videos until the source is exhausted. |
Example input
This input is copied from the successful current-beta run that used the hosted default input:
{"pageTargets": ["https://www.facebook.com/facebook","https://www.facebook.com/instagram","https://www.facebook.com/Meta","https://www.facebook.com/WhatsApp"],"maxResults": 25}
🧾 Output
Run output link
| Field | Type | What it does |
|---|---|---|
results | string | Opens the public dataset with the saved Page video rows. |
Video row
All saved rows use one shape. Each row represents one successful public Facebook Page video. Optional values are null when Facebook does not expose them.
Only successful video rows are saved, so failed targets do not create placeholder rows.
| Field | Type | What it does |
|---|---|---|
target | string | Shows the Page URL, handle, slug, profile ID, or delegate Page ID submitted for this row. |
page | object | Holds the source-confirmed Facebook Page identity. |
page.id | string or null | Gives the Facebook Page profile ID when available. |
page.delegatePageId | string or null | Gives the Facebook delegate Page ID when available. |
page.name | string or null | Gives the Page name when available. |
page.handle | string or null | Gives the public Page handle or slug when available. |
videoId | string | Gives the stable Facebook video ID. |
title | string or null | Gives the video title or headline when available. |
description | string or null | Gives the video caption or description when available. |
publishedAt | string or null | Gives the source publish time as an ISO 8601 timestamp when available. |
durationSeconds | number or null | Gives the video duration in seconds when available. |
playCount | integer or null | Gives the public play count when available. |
reactionCount | integer or null | Gives the total public reaction count when available. |
shareCount | integer or null | Gives the public share count when available. |
reactions | object or null | Holds the per-reaction counts when Facebook exposes them. |
reactions.like | integer or null | Gives the Like count when available. |
reactions.love | integer or null | Gives the Love count when available. |
reactions.care | integer or null | Gives the Care count when available. |
reactions.haha | integer or null | Gives the Haha count when available. |
reactions.wow | integer or null | Gives the Wow count when available. |
reactions.sad | integer or null | Gives the Sad count when available. |
reactions.angry | integer or null | Gives the Angry count when available. |
author | object or null | Holds source-exposed author or Page identity. |
author.id | string or null | Gives the author ID when available. |
author.delegatePageId | string or null | Gives the author delegate Page ID when available. |
author.name | string or null | Gives the author name when available. |
media | object | Holds playable video and thumbnail links when available. |
media.playableUrl | string or null | Gives the direct playable Facebook video URL when available. |
media.thumbnailUrl | string or null | Gives the video thumbnail URL when available. |
media.quality | string or null | Gives the source media quality hint when available. |
media.format | string or null | Gives the media format when available. |
Example video row
This complete row is from the successful current-beta run that used the hosted default input:
{"target": "https://www.facebook.com/WhatsApp","page": {"id": "100064758844406","delegatePageId": "280034132055819","name": "WhatsApp","handle": "WhatsApp"},"videoId": "1467263565193775","title": "the tldr version","description": "the tldr version","publishedAt": "2026-03-30T16:31:43.000Z","durationSeconds": 10,"playCount": 1243350,"reactionCount": 7722,"shareCount": null,"reactions": {"like": 7455,"love": 179,"care": 32,"haha": 45,"wow": 6,"sad": 2,"angry": 3},"author": {"id": "100064758844406","delegatePageId": "280034132055819","name": "WhatsApp"},"media": {"playableUrl": "https://video-lax3-2.xx.fbcdn.net/o1/v/t2/f2/m412/AQPSiP3myhFQSiZcDA82HWFVSy4tZBsuWPIikYtK2uRw6Lb6-TdWWcBL72IqeDW3BFlbuejxOZS8Syv3kcDDkeUgIr8fIaDDHxfOXsdcvg.mp4?_nc_cat=103&_nc_sid=8bf8fe&_nc_ht=video-lax3-2.xx.fbcdn.net&_nc_ohc=fUUYJWfEZxsQ7kNvwHS2l4U&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5GQUNFQk9PSy4uQzMuMzYwLnN2ZV9zZCIsInhwdl9hc3NldF9pZCI6MjU4ODI4NjM5ODgwNjMwMDksImFzc2V0X2FnZV9kYXlzIjoxNjUsInZpX3VzZWNhc2VfaWQiOjEwMTIyLCJkdXJhdGlvbl9zIjoxMCwidXJsZ2VuX3NvdXJjZSI6Ind3dyJ9&ccb=17-1&_nc_gid=7AgqfbWaivKGT-m3Ye8LvQ&_nc_ss=70289&_nc_zt=28&oh=00_AQIdC8VNz0nMVEVVkFZ-EWZZUlMpxfDBqlpb4Vd9SZ9cUg&oe=6AAABA1F&bitrate=170448&tag=sve_sd","thumbnailUrl": "https://scontent-lax3-1.xx.fbcdn.net/v/t15.5256-10/660804614_3856253358008608_4227983087319331556_n.jpg?stp=dst-jpg_tt6&cstp=mx1080x1350&ctp=s1080x1350&_nc_cat=110&ccb=1-7&_nc_sid=5fad0e&_nc_ohc=EdibrXhMSaEQ7kNvwEEYcKN&_nc_oc=AdozRNmNp0shHbkUv0iEHjv8JfodMMFQgdX0ZqfOa1uqYIoKrHMad1b1uQ4XNUPu6wS73pLxwIVLZGYZA7AZ_nOZ&_nc_zt=23&_nc_ht=scontent-lax3-1.xx&_nc_gid=7AgqfbWaivKGT-m3Ye8LvQ&_nc_ss=70289&oh=00_AQLM9UpfkzCGtl7c1hElW2VtmNgt4m8KQ-Uaj5YFNLw6pg&oe=6AAAB666","quality": "sd","format": "mp4"}}
💳 Pricing
How charges work
This Actor uses pay-per-event pricing. One facebook-page-video event is charged for each public Page video saved to the dataset. The current price is $0.004 per saved video.
A run or target that saves no video does not create a facebook-page-video event.
🔌 Integrations
Connect your workflow
Run the Actor in Apify Console or through the Apify API. Schedule repeat exports, send run-completion webhooks, or export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.
Limits and caveats
Only public Facebook Page video libraries are in scope. Private, restricted, removed, login-only, group, Marketplace, photo, story, search-result, and direct single-post media workflows are outside this Actor's scope.
Direct playable Facebook video URLs can be temporary. Use videoId, target, and page when you need stable identifiers across repeated runs.
Facebook can expose different metadata for different Pages, videos, regions, and run times. When it does not expose a title, share count, reaction breakdown, thumbnail, or playable URL, that field is null.
❓ FAQ
Can I use a Page URL, handle, or numeric ID?
Yes. Add public Page URLs, handles, slugs, profile IDs, or delegate Page IDs. The Actor collects Page video libraries, not personal-profile feeds, groups, Marketplace listings, search results, or direct single-post media.
Can I collect all videos from a Page?
Yes. Leave Maximum videos empty to return all available videos until the source is exhausted. A set value is a maximum, so the run can return fewer videos when the source has fewer eligible rows.
What happens when the same video is found through more than one submitted value?
The Actor saves the first eligible occurrence and ignores later matches for that source video. The saved row describes only the first match and does not combine later targets or values.
Why is a title, count, or link null?
Facebook does not expose the same fields for every public video. A null value means that field was not available for that row, and the Actor does not invent it.
Are playable video URLs permanent?
No. They are direct links exposed by Facebook and may expire. Use videoId, target, and page to match rows across runs, or run the Actor again for a fresh link.
Does the Actor host the downloaded video file?
No. It returns direct playable video and thumbnail URLs when Facebook exposes them. It does not mirror the source files.
Can it export private Page videos?
No. The Actor only handles public Page video libraries. Private, restricted, removed, and login-only content is outside its scope.
Is this a Facebook video search tool?
No. Add the public Page targets you want to collect. The Actor does not search Facebook by keyword.
📝 Changelog
v0.2 (10-09-2026)
- Collect all available public Page videos when no maximum is set.
- Include public share counts when Facebook exposes them.
- Retry temporary Facebook access failures before reporting an error.
- Show short progress messages while videos are saved.
v0.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 Media Downloader resolves known public Facebook video, reel, or photo URLs into source-hosted media links.
- Facebook User Post Extractor collects public Page timeline posts when you need post context around videos.
- Facebook Business Page Lead Scraper finds or enriches Page targets before a video export.
- Facebook Reviews Scraper collects public Page recommendations for feedback research beside video activity.
- Facebook Page Transparency Scraper adds Page ownership and public ad context to brand research.
Made with ❤️ by Maxime Dupré


