Facebook Reels Scraper
Pricing
$19.99/month + usage
Facebook Reels Scraper
Facebook Reels Scraper 🎥📱 extracts reel videos, captions, likes, comments, and engagement metrics from public Facebook profiles and pages. Ideal for content research, trend analysis, and social media monitoring. Fast, scalable, and automation-ready for bulk data collection. 🚀📊
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScrapePilot
Actor stats
0
Bookmarked
4
Total users
2
Monthly active users
13 days ago
Last modified
Categories
Share
Facebook Reels Scraper
The Facebook Reels Scraper is a fast, automation-ready Facebook Reels scraping tool that collects public Reels from profiles/pages you choose and streams structured records into your Apify dataset. It solves the hassle of manual copy-paste by extracting captions, timing, media details, and engagement signals exposed in page JSON — ideal for marketers, developers, data analysts, and researchers. Use it as a Facebook Reels data extractor or Facebook Reels URL scraper to power content research, monitoring, and bulk workflows at scale.
What data / output can you get?
Below is a snapshot of real fields this Facebook Reels video scraper pushes to the dataset as each Reel is saved. Examples reflect typical values; actual content depends on what Facebook exposes for the Reel.
| Data type | Description | Example value |
|---|---|---|
| startUrl | The profile URL you provided for this run | https://www.facebook.com/LeonardoDiCaprio/ |
| facebookUrl | Resolved creator/page profile URL for the Reel owner | https://www.facebook.com/LeonardoDiCaprio/ |
| inputUrl | The exact Reel page URL that was fetched | https://www.facebook.com/reel/607752005666436 |
| topLevelReelUrl | Canonical/shareable Reel URL (normalized with trailing slash) | https://www.facebook.com/reel/607752005666436/ |
| topLevelUrl | Top-level post URL if available | https://facebook.com/1372151420946458/posts/undefined/ |
| text | Reel caption/message text | Saving a rainforest starts with one tree… |
| time | ISO timestamp derived from publish/creation time (UTC) | 2026-03-11T14:22:00.000Z |
| playCountRounded | Parsed integer from reduced play count label (e.g., “3.6M” → 3600000) | 3600000 |
| play_count_reduced | Original play count label string from Facebook | 3.6M |
| shareable_url | Shareable URL as exposed in short_form_video_context | https://www.facebook.com/reel/607752005666436 |
| video_owner | Owner metadata object (e.g., id, name, url) | {"id":"100044548384499","name":"MrBeast","url":"https://www.facebook.com/mrbeast"} |
| playback_video | Video playback metadata (e.g., id, length_in_second, image.uri) | {"id":"607752005666436","length_in_second":715.6,"image":{"uri":"https://...jpg"}} |
| video | Video object (e.g., id, playable_duration_in_ms, thumbnails) | {"id":"607752005666436","playable_duration_in_ms":715614} |
| attachments | Attachment list (usually includes media object) | [{"media":{"__typename":"Video","id":"607752005666436"}}] |
| tracking | Tracking data object (may include top_level_post_id, page_insights) | {"top_level_post_id":"607752005666436", "page_insights": {...}} |
| is_passive_content | Passive content flag from context | false |
| remix_info | Remixability/status metadata | {"is_remixable": false, "status": "DISABLED"} |
| soundtrack_info | Soundtrack metadata when present (type may be filled as CUSTOM_AUDIO) | {"type":"CUSTOM_AUDIO"} |
| track_title | Audio track label (falls back to “ | Leonardo DiCaprio · Original audio |
| music_album_art_uri | Album art thumbnail URI if provided | https://.../album_art.png |
| video_owner_type | Owner type label exposed by context | FACEBOOK_USER |
| if_should_change_url_for_reels | Object exposing shareable_url normalization info | {"shareable_url":"https://www.facebook.com/reel/607752005666436"} |
| http_status | HTTP status for the Reel page (only when non-200) | 429 |
| parse_error | Parser warning when page JSON can’t be fully interpreted | short_form_video_context not found in page JSON |
| request_error | Network/HTTP exception label when a reel fetch fails | ReadTimeout |
| error, type | Profile-level error row on fatal profile failure | {"error":" |
Notes:
- Records are streamed — each Reel is pushed to the dataset immediately when processed.
- Export your results from the run’s Dataset in Apify once the run completes.
Key features
-
🚀 Streaming dataset writes
Rows appear in your dataset as soon as each Reel is saved — no need to wait until the end. Perfect for near‑real‑time Facebook Reels analytics scraper workflows. -
📈 Scalable per‑profile limits
Configure up to 10,000 Reels per profile via resultsLimit. Pagination leverages Facebook GraphQL (with retries/backoff) to harvest more IDs when available. -
⏱️ Flexible time filter
Use onlyPostsNewerThan with absolute dates or relative windows like “7 days” to skip older Reels. -
🔒 Proxy-ready for stability
Built‑in proxyConfiguration support via Apify Proxy. Residential proxies are recommended for Facebook to reduce blocks and throttling. -
🧠 Robust extraction pipeline
The scraper merges repeated short_form_video_context nodes across embedded JSON to recover fields like play counts, soundtrack_info, track_title, thumbnails, and owner details. -
🧵 Backoff & retry logic
Handles transient HTTP errors (429/5xx) and parsing edge cases with targeted retries, pacing, and session reuse to keep large runs healthy. -
🐍 Developer-friendly foundation
Implemented as a Python actor using the Apify SDK and requests, making it straightforward to integrate into Facebook Reels Python scraper pipelines or programmatic Apify API workflows. -
🧩 Clean URL handling
Accepts full profile links or bare usernames (e.g., “LeonardoDiCaprio”). The actor normalizes them into correct https://www.facebook.com/... profile URLs.
How to use Facebook Reels Scraper - step by step
-
Sign in to Apify and open the Facebook Reels Scraper actor.
-
Add your profile inputs under “Profile URLs” (startUrls).
- Paste full Facebook profile links, /people/... links, or just usernames (e.g., LeonardoDiCaprio).
-
Set your per‑profile cap with “Max Reels per profile” (resultsLimit).
- Choose any integer from 1 to 10,000.
-
(Optional) Apply a time filter via “Only posts newer than” (onlyPostsNewerThan).
- Accepts an absolute date (YYYY-MM-DD) or a relative window like “7 days” or “2 weeks”.
-
(Recommended) Configure “Proxy” (proxyConfiguration).
- Enable Apify Proxy and select RESIDENTIAL to reduce blocks.
-
Start the run.
- The actor logs queued Reel counts per profile and streams each record to the dataset as it’s saved.
-
Download your results from the run’s Dataset.
- You can continue monitoring logs for discovered/fetched counts and any parse/request warnings.
Pro Tip: Schedule runs in Apify or trigger via the Apify API to build an automated Facebook Reels crawler for ongoing monitoring.
Use cases
| Use case name | Description |
|---|---|
| Marketing analytics — track plays & cadence | Aggregate captions, timestamps, and playCountRounded from creators/pages to benchmark posting cadence and engagement signals. |
| Content research & trend mapping | Collect text and media metadata across profiles to analyze topics, soundtrack usage, and visual formats. |
| Competitor benchmarking | Compare public Reels across brands using consistent fields (e.g., text, time, owner, play_count_reduced). |
| Social listening for public profiles | Monitor newly published public Reels filtered by “Only posts newer than” for timely alerts. |
| Reels archiving & compliance | Build a structured archive with canonical URLs (topLevelReelUrl/shareable_url), timestamps, and owner metadata. |
| Data enrichment for BI | Pipe dataset records into dashboards to power a Facebook Reels analytics scraper pipeline (e.g., playCountRounded over time). |
| Programmatic pipelines (API) | Orchestrate with the Apify API and integrate into internal ETL or a Facebook Reels Python scraper workflow for bulk processing. |
Why choose Facebook Reels Scraper?
This Facebook Reels scraping service is built for precision at scale, combining resilient pagination and parsing with proxy-aware networking.
- ✅ Accurate field recovery: Merges repeated short_form_video_context nodes to fill soundtrack_info, track_title, thumbnails, and play count data.
- ⚙️ Built for scale: Up to 10,000 Reels per profile with backoff, pagination, and controlled concurrency to reduce throttling.
- 🧩 Developer access: Python-based actor with Apify SDK — simple to automate via API or integrate into data pipelines.
- 🔒 Stability with proxies: Seamless Apify Proxy configuration, with residential proxies recommended for Facebook.
- 🧠 Better than ad‑hoc scripts: Avoid brittle browser extensions or unstable scrapers with a production-grade workflow that streams to an Apify dataset.
- 💡 Streaming results: See output as it’s collected; no need to wait for the full run to finish.
In short, it’s a production-ready Facebook Reels metadata scraper that focuses on reliable, structured output from public profiles.
Is it legal / ethical to use Facebook Reels Scraper?
Yes — when used responsibly. This actor targets publicly available Reels data and does not access private or authenticated content.
Guidelines to stay compliant:
- Scrape only publicly visible profiles and Reels.
- Avoid collecting or redistributing sensitive personal data.
- Respect platform limitations and applicable laws (e.g., GDPR/CCPA).
- Use a proxy responsibly and verify use with your legal team for edge cases.
The tool does not log in or access private endpoints; it operates on public pages returned over standard HTTP requests.
Input parameters & output format
Example JSON input
{"startUrls": ["https://www.facebook.com/LeonardoDiCaprio/","Emily-Olivia"],"resultsLimit": 10,"onlyPostsNewerThan": "7 days","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Parameters (from the actor’s input schema)
-
startUrls (array of string)
Description: Paste full Facebook profile links, or just a page username — we’ll resolve it for you. One URL per line (e.g., facebook.com/YourPage or a /people/... link).
Default: none
Required: Yes -
resultsLimit (integer)
Description: Stop after this many Reels from each profile (newest‑first order where available).
Range: 1 to 10000
Default: 10
Required: No -
onlyPostsNewerThan (string)
Description: Absolute date (YYYY-MM-DD) or relative window like “7 days” or “2 weeks”. Leave blank for no cutoff.
Default: "" (no cutoff)
Required: No -
proxyConfiguration (object)
Description: Route traffic through Apify Proxy (recommended for fewer blocks). Residential proxy is recommended for Facebook.
Default prefill: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
Required: No
Example JSON output (successful Reel)
{"startUrl": "https://www.facebook.com/LeonardoDiCaprio/","facebookUrl": "https://www.facebook.com/LeonardoDiCaprio/","inputUrl": "https://www.facebook.com/reel/607752005666436","topLevelUrl": "https://facebook.com/1372151420946458/posts/undefined/","topLevelReelUrl": "https://www.facebook.com/reel/607752005666436/","text": "Saving a rainforest starts with one tree…","time": "2026-03-11T14:22:00.000Z","playCountRounded": 3600000,"play_count_reduced": "3.6M","shareable_url": "https://www.facebook.com/reel/607752005666436","if_should_change_url_for_reels": {"shareable_url": "https://www.facebook.com/reel/607752005666436"},"video_owner": {"__typename": "User","id": "100044548384499","name": "MrBeast","url": "https://www.facebook.com/mrbeast"},"video_owner_type": "FACEBOOK_USER","soundtrack_info": {"type": "CUSTOM_AUDIO"},"track_title": "MrBeast · Original audio","music_album_art_uri": "https://example-cdn/facebook/album_art.png","is_original_audio_on_facebook": true,"playback_video": {"id": "607752005666436","length_in_second": 715.614,"audio_user_preferred_language": "en","image": {"uri": "https://example-cdn/facebook/thumbnail.jpg"},"permalink_url": "https://www.facebook.com/reel/607752005666436/"},"video": {"__typename": "Video","id": "607752005666436","playable_duration_in_ms": 715614,"first_frame_thumbnail": "https://example-cdn/facebook/thumbnail.jpg","embeddable": true},"attachments": [{"media": {"__typename": "Video","id": "607752005666436"}}],"tracking": {"top_level_post_id": "607752005666436"},"is_passive_content": false,"fb_shorts_reshare_context": {"is_reshare": false},"remix_info": {"is_remixable": false,"status": "DISABLED"}}
Example JSON output (profile-level error row)
{"startUrl": "https://www.facebook.com/examplepage/","error": "GraphQL pagination failed","type": "profile_error"}
Notes:
- On non-200 responses or parse issues per Reel, the actor may include http_status, request_error, or parse_error fields on that Reel’s row.
- Fields like soundtrack_info, track_title, or music_album_art_uri appear only when present in Facebook’s embedded JSON.
FAQ
Do I need to log in to scrape Facebook Reels with this actor?
No. The Facebook Reels Scraper operates on publicly available pages without login. It fetches profile and Reel pages over standard HTTP requests and parses embedded JSON.
How many Reels can I collect per profile?
You can set resultsLimit anywhere from 1 to 10,000 per profile. The scraper discovers IDs from the profile and Reels tab, then uses GraphQL pagination where available to reach your cap.
Does this work as a Facebook Reels downloader?
The actor returns canonical/shareable URLs (topLevelReelUrl, shareable_url) and playback_video metadata extracted from the page. Availability of direct streaming links depends on what Facebook exposes for a given Reel.
Can I filter by date or only grab recent Reels?
Yes. Use onlyPostsNewerThan with an absolute date (YYYY-MM-DD) or a relative window like “7 days.” Reels older than the cutoff are skipped.
Should I use a proxy?
Yes, it’s recommended. Configure proxyConfiguration and use Apify Residential proxies for more stable runs and fewer blocks when you scrape Facebook Reels videos at scale.
What fields does the scraper return?
Core fields include facebookUrl, inputUrl, topLevelReelUrl, text, time, playCountRounded, play_count_reduced, video_owner, playback_video, video, attachments, tracking, and more. On issues, you may see http_status, request_error, or parse_error.
Can I run this in bulk or on a schedule?
Absolutely. Add multiple startUrls to queue many profiles and schedule runs in Apify for continuous monitoring. You can also drive it via the Apify API in a Facebook Reels Python scraper pipeline.
Is it okay to use this data for analytics?
Yes — when you stick to public pages and comply with applicable laws and platform policies. The actor targets public data and does not access private or authenticated content.
Closing CTA / Final thoughts
The Facebook Reels Scraper is built for structured, reliable extraction of public Reels across profiles and pages. Configure your profiles, set limits and time filters, and stream clean records with captions, timestamps, owner metadata, and shareable URLs into your dataset.
Whether you’re a marketer, developer, data analyst, or researcher, it’s a scalable Facebook Reels scraping service for content research, monitoring, and analytics. Automate via the Apify API or integrate into your Facebook Reels Python scraper workflows to run at scale.
Start extracting smarter today — and turn public Facebook Reels into actionable, structured insights.