Facebook Page Videos Scraper — Plays, Reactions, No Login
Pricing
$2.00 / 1,000 videos
Facebook Page Videos Scraper — Plays, Reactions, No Login
Videos and reels of public Facebook Pages, newest first: title, the post's text, exact time, plays, duration, thumbnail, address, reactions in total and by kind, comment and share counts, plays per hour. Many Pages a run, only-new mode for recurring runs. No login.
Pricing
$2.00 / 1,000 videos
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook Page Videos Scraper — Plays, Reactions, No Login 🚀
foXLabs Facebook series: Page Posts · Page Profile · Post Comments · Page Reviews · Page Events
🎉 Videos and reels of public Facebook Pages, newest first, exactly as Facebook lists them to a signed-out visitor — title, the post's text and hashtags, exact time, plays, duration, thumbnail, the video's address, reactions in total and by kind — plus what we add: plays per hour since publication. Many Pages a run, filters by plays and date, only-new mode for recurring runs. No login, no cookies, no account of anyone.
🔍 What is the Facebook Page Videos Scraper — and when should you use it?
Give this Actor public Facebook Pages and it returns their videos and reels as clean rows — newest first, with play counts, duration, reactions by kind and a per-hour velocity.
Use it when you need: a Page's video performance (plays, reactions, velocity); the fastest-growing videos; or a recurring feed of only-new videos.
Use something else when: you need a Page's text posts and to tell reels from videos → Page Posts; comments on a video's post → Post Comments.
🤖 Use with AI agents
Already on the Apify MCP server? Ask for this Actor by name: foxlabs/facebook-page-videos-scraper. An agent can discover it, run it and read the dataset over MCP.
Real-time Standby API. This Actor ships a Standby endpoint so an agent can fetch a Page's newest videos on demand — GET /videos?page=NASA&maxVideos=12, billed with the same video event.
Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want public Facebook Page videos & reels using the Apify Actor`foxlabs/facebook-page-videos-scraper`.Input: `pages` is a list of Pages; `maxVideosPerPage` caps rows; `minViews` and `publishedAfter`filter. Each row has title, views, viewsPerHour, durationSeconds, reactionsByType and playableUrl.Start with:{ "pages": ["NASA"], "maxVideosPerPage": 25 }Ask me which Pages to track, run the Actor, then summarise the videos by plays.
The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/facebook-page-videos-scraper.md.
📋 Overview
Everything you need to turn a public Facebook Page's videos into clean, structured data — plays, duration, reactions by kind and velocity — in one Actor, with no login, cookies or account.
Why teams pick this Actor:
- ✅ Plays + velocity — views, views of the post, and plays per hour since publication.
- 🎞️ The video file —
playableUrl(an mp4 on Facebook's CDN, 30 of 30 in our measurements; signed, download soon). - ❤️ Reactions by kind — like/love/care/haha/wow/sad/angry each with its count.
- 🔁 Only-new mode — schedule recurring runs that bring only videos not seen before.
- 💰 Pay only for results — one
videoevent per row; filters, status rows and unreadable Pages free. - 🤖 Agent-ready — MCP + a real-time Standby API.
✨ Features
- 🔍 Videos & reels, newest first — by Page name, @handle, numeric id or URL.
- ▶️ Play metrics —
views,postViews,viewsPerHour,durationSeconds,thumbnailUrl. - 🎬 File + live —
playableUrl(signed mp4),isLivefor live broadcasts. - 🧹 Filters — minimum plays, published-after date.
- 🔁 Only-new lists — remember delivered videos and skip them next run.
🎬 Quick Start
curl -X POST "https://api.apify.com/v2/acts/foxlabs~facebook-page-videos-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"pages": ["NASA"], "maxVideosPerPage": 25}'
🚀 Getting Started (3 steps)
- Choose your Pages — one per line: name,
@handle, numeric id or URL. - Set the cap & filters —
maxVideosPerPage,minViews,publishedAfter. - Run and export — get a clean dataset as JSON, CSV or Excel.
📥 Input
| Field | Default | What it does |
|---|---|---|
pages | — | One Page per line: name, @NASA, numeric id, or URL. A Page written twice is read once. |
maxVideosPerPage | 100 | Videos to deliver per Page, newest first. |
maxVideos | 100000 | Rows in the whole run. |
minViews | — | Keep only videos with at least this many plays. |
publishedAfter | — | Keep only videos on/after this date; the walk stops once three in a row are older. |
onlyNewVideos, listName | false, default | Remember delivered videos under a name and skip them later. |
proxyConfiguration | residential Apify Proxy | Nothing to change for normal use. |
📤 Output
One row per video (type: "video"). A value Facebook does not give is null.
| Field | What it is |
|---|---|
videoId, postId, url | the video's id, its post's id, and the video's address |
kind | video, or live while broadcasting (reels list as videos here) |
title, text, hashtags | the title, the post's text, its hashtags |
publishedAt, hoursSincePost | when it was published (UTC) and how long ago |
views, postViews, viewsPerHour | plays of the video and post, and plays per hour |
durationSeconds, thumbnailUrl, isLive | length, cover, live status |
playableUrl | the mp4 file (signed, expires after hours — download soon) |
reactions, reactionsByType | all reactions and each kind with its count |
pageId, pageName, pageUrl | the Page |
position, input, type, error | place in the list; input line; row type / free status row |
(Not in Facebook's list, so null: HD file address, comment/share counts, width/height — they live on each video's own page.)
{"type": "video","videoId": "4007941182848761","url": "https://www.facebook.com/NASA/videos/be-a-flight-director/4007941182848761/","kind": "video","pageName": "NASA - National Aeronautics and Space Administration","title": "Be a Flight Director","publishedAt": "2026-10-07T15:05:51.000Z","hoursSincePost": 78.9,"views": 198554,"viewsPerHour": 2516.5,"durationSeconds": 40.3,"playableUrl": "https://video….fbcdn.net/…mp4?…","reactions": 2594,"reactionsByType": { "like": 2228, "love": 310, "care": 38, "wow": 12, "haha": 4, "angry": 2 },"position": 1,"input": "NASA"}
💼 Use cases
1. Video performance tracking — see a Page's videos ranked by plays and velocity.
Input: the Page, minViews set. Output: videos with viewsPerHour. Use: learn what formats earn plays.
2. Competitor content — watch a rival's video cadence and reach.
Input: competitor Pages, onlyNewVideos scheduled. Output: new videos + plays. Use: benchmark their output.
3. Media download pipeline — grab the mp4 file and thumbnail soon after a run.
Input: the Page. Output: playableUrl + thumbnailUrl. Use: archive or repurpose (signed URLs expire — download promptly).
🔗 Integration
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('foxlabs/facebook-page-videos-scraper').call({pages: ['NASA'], maxVideosPerPage: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('foxlabs/facebook-page-videos-scraper').call(run_input={'pages': ['NASA'], 'maxVideosPerPage': 25})for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.
Automation (n8n / Zapier / Make): schedule or webhook → HTTP request to the Actor API with your pages → handle the JSON dataset → push to a sheet, CRM or dashboard.
📊 Pricing
Pay per event: video for every delivered video row. The price is on the Pricing tab. Nothing else is charged: no start fee, nothing for a status row, nothing for a video the filters left out, nothing for a Page that could not be read.
❓ FAQ
How many videos per Page? The list a signed-out visitor gets ends after ~45 per Page (measured on NASA). Older videos aren't reachable; "only new" runs on a schedule keep the history growing.
Are reels separated from videos? No — Facebook lists them with /videos/ addresses, so kind says video. The Page Posts Scraper tells reels from videos.
Why does playableUrl stop working? It's signed by Facebook's CDN and expires after hours — download soon after the run.
Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.
What happens for a bad Page? A free status row says why (no videos tab, no such Page, signed-in only) — not charged.
🐛 Troubleshooting
- ~45 videos max per Page — Facebook's own list ends there for a visitor; not an error.
playableUrlempty/expired — signed and short-lived; download promptly. HD URL, comment/share counts and frame size aren't in the list.- Reel shows
kind: video— expected (Facebook lists reels under/videos/). - A Page returns a status row — no videos tab, no such Page, or signed-in only (free).
How it reads Facebook: opens the videos tab as a signed-out visitor (its card carries six videos) and asks Facebook's own list query for the rest (three a call) using the page's tokens. Residential Apify Proxy by default; rate-limited exits dropped and replaced. Every run starts with a one-call check and ends with a clear message if Facebook's queries changed.
⚠️ Trademark
Independent, third-party tool. Not affiliated with, endorsed by or connected to Meta Platforms, Inc. "Facebook" and related marks belong to their owners and are used here for identification only.
⚖️ Is it legal to scrape this data?
It reads only what Facebook shows a signed-out visitor, about Pages (businesses and organisations). The Actor does not log in, use anyone's account or cookies, or solve CAPTCHAs. See Apify's blog post on the legality of web scraping.
🤝 Support & contact
- 🌐 Website: data.foxlabs.com.tr
- 📧 Email: info@foxlabs.com.tr
- 🐛 Issues: open a ticket in the Actor's Issues tab — include the run id; the run's
SOURCE_REPORTrecord holds what was asked and why the run stopped. - 🧰 More clean data actors: Fox Labs on Apify
Changelog
0.1.1 — 2026-10-11 — the shared core of the family
- The shared core was updated with the Page Events and Reviews Actors; video rows are unchanged.
0.1.0 — 2026-10-11 — first release
- Videos of public Facebook Pages as a signed-out visitor sees them, newest first: the six in the videos tab, then three a call from Facebook's own list query.
- Every row: title, the post's text with hashtags, exact time, plays (and post plays), duration, thumbnail, the signed file address, the video's address and post id, reactions in total and by kind, the Page's record, plays per hour.
- Filters (minimum plays, published-after) that leave videos out without charging; free status rows for empty lines; "only new" lists; restarted runs continue without duplicates. Standby mode prepared; published in batch mode.