Facebook Reels Scraper
Pricing
$5.99/month + usage
Facebook Reels Scraper
Tap into Facebook's hidden viral goldmine! Instantly extract exact plays, reactions, and unwatermarked HD video URLs from any Reel with zero login. Outsmart your competitors and discover what truly goes viral today.
Pricing
$5.99/month + usage
Rating
5.0
(1)
Developer
Neuro Scraper
Maintained by CommunityActor stats
0
Bookmarked
77
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
A high-performance, robust web scraper to extract publicly available reels and their rich metadata from any public Facebook profile or page. This scraper requires zero authentication, bypasses complex login requirements, and returns a wealth of detailed metrics including play counts, precise reactions, shares, full-resolution video URLs, owner data, and more. Ideal for social media analysts, marketers, and researchers looking to track competitor performance or analyze viral content trends on Facebook Reels.
What is Facebook Reels Scraper?
Facebook Reels Scraper is an advanced Apify Actor built to seamlessly collect data from Facebook Reels. It directly targets a creator's public reels tab (e.g., https://web.facebook.com/leomessi/reels/) and intelligently paginates through the content using Facebook's internal GraphQL/Relay endpoints. This ensures rapid data collection without the need to render heavy JavaScript in a headless browser.
Designed for reliability and scale, this scraper operates entirely without an account. It seamlessly bypasses login walls and extracts the exact raw metric values (like 108779 for reactions) alongside their platform-native "reduced" string representation (like 108.8K) that are usually obfuscated behind delayed network requests on the platform.
Unlike official APIs that restrict access, require complicated app review processes, or limit the fields you can fetch, this scraper gives you direct, unadulterated access to the public data currently displayed on Facebook.
What Facebook Reels data is publicly available to scrape?
| Data Category | Publicly Available |
|---|---|
| Reel Video URLs (HD/SD) | ✅ Yes |
| Captions & Text | ✅ Yes |
| Creation Timestamps | ✅ Yes |
| Exact Reaction Counts | ✅ Yes |
| Play/View Counts | ✅ Yes |
| Exact Share Counts | ✅ Yes |
| Comment Counts | ✅ Yes |
| Creator Info (Name, ID, Profile Pic) | ✅ Yes |
| Audio/Music Track Information | ✅ Yes |
| Private Account Reels | ❌ No (Requires Login) |
| Audience Demographics | ❌ No |
What data can I extract with Facebook Reels Scraper?
The scraper returns deeply nested and highly structured data for each reel. Here are the primary fields extracted:
Identity & Ownership Fields
| Field Name | Description |
|---|---|
owner_id | The unique numeric ID of the Facebook user/page. |
owner_name | The display name of the creator (e.g., "Cristiano Ronaldo"). |
owner_url | Link to the creator's Facebook profile. |
owner_verified | Boolean indicating if the creator has a verified badge. |
owner_picture_url | Direct CDN URL to the creator's profile picture. |
page_id | The unique ID of the delegated Facebook page, if applicable. |
Engagement & Metric Fields
| Field Name | Description |
|---|---|
playCountRounded | Integer representing the rounded play count of the reel. |
play_count_reduced | The formatted string of plays natively displayed by FB (e.g., "1.7M"). |
reaction_count | The exact integer count of total unified reactions (e.g., 108779). |
reaction_count_reduced | The formatted string of reactions (e.g., "108.8K"). |
share_count | The exact integer count of times the reel was shared. |
share_count_reduced | The formatted string of shares (e.g., "5.4K"). |
comments_count | The exact integer count of total comments on the reel. |
comments_count_reduced | The formatted string of comments (e.g., "3.5K"). |
Content, Media & URLs Fields
| Field Name | Description |
|---|---|
video_id | The unique ID of the video/reel node. |
facebookUrl | The root URL of the Facebook page being scraped. |
shareable_url | The direct sharing link to the specific reel. |
text / caption | The full text/caption accompanying the reel. |
posted_at | The ISO formatted timestamp of when the reel was posted. |
duration_seconds | The exact playable duration of the video in seconds. |
browser_native_hd_url | Direct MP4 link to the High-Definition video file without watermarks. |
thumbnail_url | Direct image link to the highest resolution thumbnail of the reel. |
track_title | The name of the music track/audio used in the reel. |
Media-Type Specific Behavior
Since this scraper specifically targets Facebook Reels, all extracted items are fundamentally video-based. The tool is highly optimized to extract MP4 video source links (browser_native_hd_url and browser_native_sd_url). Standard image posts or sidecar/carousels that are not part of the Reels tab are ignored by this specific scraper endpoint.
How to configure Facebook Reels Scraper
Configuration Options
| Parameter | Type | Default | Description |
|---|---|---|---|
targetUrl | String | https://web.facebook.com/leomessi/reels/ | The full URL to the Facebook page or profile's reels tab. |
maxItems | Integer | 10 | The maximum number of reels to scrape before stopping. |
Example Configuration
{"targetUrl": "https://web.facebook.com/Cristiano/reels/","maxItems": 50}
How to use Facebook Reels Scraper
- Prerequisites: Ensure you have an Apify account. If running locally, you need Python 3.11+, and the
apify,requests, andbeautifulsoup4packages installed. - Set the Target URL: Copy the URL of any public Facebook page's Reels tab (e.g.,
https://web.facebook.com/Netflix/reels/) and paste it into thetargetUrlinput field. - Set Max Items: Decide how many reels you want to extract. For example, enter
100in themaxItemsfield. - Run the Scraper: Click "Start" on the Apify platform (or run
apify runlocally). - Download Output: Once the run completes, navigate to the "Storage" tab to download your data in JSON, CSV, Excel, or other formats.
Output Format
The scraper outputs a flat array of highly detailed JSON objects, one for each reel discovered.
Example Output — Reel Post
{"facebookUrl": "https://www.facebook.com/Cristiano","inputUrl": "https://web.facebook.com/reel/1740111043820055","topLevelUrl": "https://facebook.com/1740111043820055/posts/undefined/","topLevelReelUrl": "https://www.facebook.com/reel/1740111043820055/","shareable_url": "https://web.facebook.com/reel/1740111043820055","text": "Pronto para Lisboa! 🇵🇹 É um orgulho apoiar este desporto...","time": "2026-04-23T14:17:53+00:00","playCountRounded": 1700000,"play_count_reduced": "1.7M","shareCount": 540,"share_count": 540,"reaction_count": 108779,"reaction_count_reduced": "108.8K","comments_count": 3519,"comments_count_reduced": "3.5K","video_owner": {"name": "Cristiano Ronaldo","id": "100044296486382","url": "https://web.facebook.com/Cristiano","is_verified": true},"video_owner_type": "FACEBOOK_USER","video": {"id": "1740111043820055","playable_duration_in_ms": 49480,"embeddable": true,"__typename": "Video"},"video_id": "1740111043820055","reel_url": "https://web.facebook.com/reel/1740111043820055","facebook_profile": "https://www.facebook.com/Cristiano","caption": "Pronto para Lisboa! 🇵🇹 É um orgulho apoiar este desporto...","posted_at_unix": 1682259473,"posted_at": "2026-04-23T14:17:53+00:00","duration_seconds": 49.48,"browser_native_hd_url": "https://video.fdac2-1.fna.fbcdn.net/v/...","owner_name": "Cristiano Ronaldo","owner_verified": true}
Field Reference (Complete)
| Field Name | Type | Applies To | Description |
|---|---|---|---|
facebookUrl | String | Reels | Base URL of the creator's page. |
inputUrl | String | Reels | URL used to reach the specific reel. |
topLevelUrl | String | Reels | Raw post node URL. |
topLevelReelUrl | String | Reels | Standardized reel URL. |
shareable_url | String | Reels | Standard share URL for the reel. |
text | String | Reels | Full caption of the reel. |
time | String | Reels | ISO timestamp of creation. |
playCountRounded | Integer | Reels | Approximate play count as an integer. |
play_count_reduced | String | Reels | Play count formatted as a string (e.g. 1.7M). |
shareCount | Integer | Reels | Exact share count (legacy key). |
share_count | Integer | Reels | Exact share count. |
reaction_count | Integer | Reels | Exact reaction/like count. |
reaction_count_reduced | String | Reels | Reactions formatted as a string (e.g. 108.8K). |
comments_count | Integer | Reels | Exact comment count. |
comments_count_reduced | String | Reels | Comments formatted as a string (e.g. 3.5K). |
video_owner | Object | Reels | Nested object containing name, id, url, is_verified. |
video_owner_type | String | Reels | Constant (usually FACEBOOK_USER or PAGE). |
video | Object | Reels | Nested object with raw video id, playable_duration_in_ms, embeddable. |
video_id | String | Reels | Extracted raw video ID. |
reel_url | String | Reels | Flat duplicate of the shareable reel URL. |
permalink_url | String | Reels | Underlying post permalink. |
facebook_profile | String | Reels | Flat duplicate of the creator's profile URL. |
caption | String | Reels | Flat duplicate of the text caption. |
posted_at_unix | Integer | Reels | UNIX timestamp of creation. |
posted_at | String | Reels | Formatted timestamp of creation. |
play_count_label | String | Reels | Alias for play_count_reduced. |
duration_ms | Integer | Reels | Duration of the reel in milliseconds. |
duration_seconds | Float | Reels | Duration of the reel in seconds. |
width | Integer | Reels | Video resolution width. |
height | Integer | Reels | Video resolution height. |
aspect_ratio | Float | Reels | Video aspect ratio. |
is_embeddable | Boolean | Reels | Whether the video allows off-site embedding. |
is_remixable | Boolean | Reels | Whether the video can be remixed. |
video_status | String | Reels | Video health status (e.g., OK). |
can_autoplay | Boolean | Reels | Autoplay flag. |
is_live | Boolean | Reels | Whether the reel was a live stream. |
is_spherical | Boolean | Reels | Whether the video is 360/spherical. |
thumbnail_url | String | Reels | Direct URL to the cover image. |
browser_native_hd_url | String | Reels | Direct MP4 link for the HD version of the video. |
browser_native_sd_url | String | Reels | Direct MP4 link for the SD version of the video. |
owner_id | String | Reels | The creator's numeric ID. |
owner_name | String | Reels | Flat duplicate of the creator's name. |
owner_url | String | Reels | Flat duplicate of the creator's URL. |
owner_verified | Boolean | Reels | Flat duplicate of verification status. |
owner_picture_url | String | Reels | Creator's profile picture URL. |
page_id | String | Reels | The associated Facebook Page ID. |
page_uri_token | String | Reels | The string slug/token of the page. |
music_album_art_url | String | Reels | Cover art for the audio track. |
soundtrack_id | String | Reels | The unique ID of the audio track. |
soundtrack_type | String | Reels | Type of audio (e.g., CUSTOM_AUDIO). |
is_original_audio_on_fb | Boolean | Reels | Whether the audio is an original creator sound. |
audio_availability | String | Reels | Status of audio (e.g., AVAILABLE). |
top_level_post_id | String | Reels | Internal tracking post ID. |
app_id | String | Reels | Internal Facebook App ID. |
story_location | Integer | Reels | The context location ID for tracking. |
is_reshare | Boolean | Reels | Whether the reel is a reshare of another reel. |
reshare_creator_name | String | Reels | Name of the original creator if reshared. |
reshare_creator_url | String | Reels | URL of the original creator if reshared. |
How does it work?
- Fast & Efficient: The scraper takes the target URL and fetches data using lightweight HTTP requests, mimicking standard user behavior without the overhead of headless browsers.
- Data Stitching: It intelligently captures both the main video metadata and the deeply nested engagement metrics, merging them dynamically into a single structured output for each reel.
- Smart Pagination: The actor seamlessly navigates through the creator's feed, collecting reels at scale until it hits your configured
maxItemslimit or reaches the end of the content.
How does Facebook Reels Scraper differ from the official Graph API?
| Feature | Facebook Reels Scraper | Official Graph API |
|---|---|---|
| Access Scope | Any public profile or page | Only pages you own/manage |
| Account Required | ❌ No | ✅ Yes (Plus App Review) |
| Setup Time | < 1 minute | Days / Weeks |
| Video Files | Direct, unwatermarked HD MP4 URLs | Watermarked or restricted URLs |
| Audio/Music Data | Full soundtrack and original audio info | Heavily restricted |
Rate Limits & Error Handling
Since this scraper interacts directly with Facebook's frontend APIs, it is subject to standard unauthenticated rate limits.
- Pagination Limits: The scraper inherently spaces out requests as it processes the multipart JSON chunks, naturally mitigating aggressive throttling.
- Empty Results: If Facebook temporarily blocks access or requests a login wall, the scraper will safely terminate pagination and return the items collected up to that point.
Legal Considerations
This tool is designed to extract strictly publicly available data that any anonymous user could see by opening a web browser. It does not bypass security controls to access private data. However, users should consult Facebook's Terms of Service and apply responsible scraping practices, including respecting user privacy and copyright limitations when downloading media. This does not constitute legal advice.
Frequently Asked Questions
Does it require a Facebook account?
No. This scraper operates entirely unauthenticated, meaning you don't risk burning personal accounts or dealing with session cookies.
How many reels can I scrape?
You can configure the maxItems setting to scrape as many reels as a profile has available. However, for extremely large profiles, Facebook may occasionally throttle anonymous pagination after several hundred posts.
Does it handle standard text/image posts?
No. This scraper is explicitly engineered for the /reels/ tab and its specific GraphQL queries.
What if a profile is private?
The scraper cannot access private profiles. It only extracts data that is publicly accessible to logged-out users.
Can I change the output filename?
When running on Apify, output is automatically pushed to the platform's default Dataset, which you can download and name however you like.
What happens when Facebook changes its API?
The underlying query structure is highly stable, but if Facebook makes breaking changes, the scraper will safely halt and log an error until it is updated.
Can I scrape multiple users at once?
Yes, you can run multiple instances of the Actor in parallel on Apify, each configured with a different targetUrl.
Troubleshooting
- Empty Results: If the scraper returns 0 items, ensure that the URL explicitly includes the
/reels/path (e.g.,https://web.facebook.com/zuck/reels/). - 429 Rate Limiting: If you are running the scraper extensively from a single IP, Facebook may temporarily block it. Apify's proxy network automatically mitigates this.
- Missing Engagement Counts: In rare instances where Facebook's servers are heavily loaded, they may omit the
@deferfeedback chunks. The scraper defaults tonullfor these fields rather than failing.
Changelog / Version History
- v1.0.0: Initial release. Supports robust pagination, multipart JSON parsing for engagement metrics, and formatted exact/reduced metric numbers.