Facebook Reels Scraper avatar

Facebook Reels Scraper

Pricing

$5.99/month + usage

Go to Apify Store
Facebook Reels Scraper

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

Neuro Scraper

Maintained by Community

Actor stats

0

Bookmarked

77

Total users

1

Monthly active users

14 hours ago

Last modified

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 CategoryPublicly 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 NameDescription
owner_idThe unique numeric ID of the Facebook user/page.
owner_nameThe display name of the creator (e.g., "Cristiano Ronaldo").
owner_urlLink to the creator's Facebook profile.
owner_verifiedBoolean indicating if the creator has a verified badge.
owner_picture_urlDirect CDN URL to the creator's profile picture.
page_idThe unique ID of the delegated Facebook page, if applicable.

Engagement & Metric Fields

Field NameDescription
playCountRoundedInteger representing the rounded play count of the reel.
play_count_reducedThe formatted string of plays natively displayed by FB (e.g., "1.7M").
reaction_countThe exact integer count of total unified reactions (e.g., 108779).
reaction_count_reducedThe formatted string of reactions (e.g., "108.8K").
share_countThe exact integer count of times the reel was shared.
share_count_reducedThe formatted string of shares (e.g., "5.4K").
comments_countThe exact integer count of total comments on the reel.
comments_count_reducedThe formatted string of comments (e.g., "3.5K").

Content, Media & URLs Fields

Field NameDescription
video_idThe unique ID of the video/reel node.
facebookUrlThe root URL of the Facebook page being scraped.
shareable_urlThe direct sharing link to the specific reel.
text / captionThe full text/caption accompanying the reel.
posted_atThe ISO formatted timestamp of when the reel was posted.
duration_secondsThe exact playable duration of the video in seconds.
browser_native_hd_urlDirect MP4 link to the High-Definition video file without watermarks.
thumbnail_urlDirect image link to the highest resolution thumbnail of the reel.
track_titleThe 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

ParameterTypeDefaultDescription
targetUrlStringhttps://web.facebook.com/leomessi/reels/The full URL to the Facebook page or profile's reels tab.
maxItemsInteger10The 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

  1. Prerequisites: Ensure you have an Apify account. If running locally, you need Python 3.11+, and the apify, requests, and beautifulsoup4 packages installed.
  2. 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 the targetUrl input field.
  3. Set Max Items: Decide how many reels you want to extract. For example, enter 100 in the maxItems field.
  4. Run the Scraper: Click "Start" on the Apify platform (or run apify run locally).
  5. 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 NameTypeApplies ToDescription
facebookUrlStringReelsBase URL of the creator's page.
inputUrlStringReelsURL used to reach the specific reel.
topLevelUrlStringReelsRaw post node URL.
topLevelReelUrlStringReelsStandardized reel URL.
shareable_urlStringReelsStandard share URL for the reel.
textStringReelsFull caption of the reel.
timeStringReelsISO timestamp of creation.
playCountRoundedIntegerReelsApproximate play count as an integer.
play_count_reducedStringReelsPlay count formatted as a string (e.g. 1.7M).
shareCountIntegerReelsExact share count (legacy key).
share_countIntegerReelsExact share count.
reaction_countIntegerReelsExact reaction/like count.
reaction_count_reducedStringReelsReactions formatted as a string (e.g. 108.8K).
comments_countIntegerReelsExact comment count.
comments_count_reducedStringReelsComments formatted as a string (e.g. 3.5K).
video_ownerObjectReelsNested object containing name, id, url, is_verified.
video_owner_typeStringReelsConstant (usually FACEBOOK_USER or PAGE).
videoObjectReelsNested object with raw video id, playable_duration_in_ms, embeddable.
video_idStringReelsExtracted raw video ID.
reel_urlStringReelsFlat duplicate of the shareable reel URL.
permalink_urlStringReelsUnderlying post permalink.
facebook_profileStringReelsFlat duplicate of the creator's profile URL.
captionStringReelsFlat duplicate of the text caption.
posted_at_unixIntegerReelsUNIX timestamp of creation.
posted_atStringReelsFormatted timestamp of creation.
play_count_labelStringReelsAlias for play_count_reduced.
duration_msIntegerReelsDuration of the reel in milliseconds.
duration_secondsFloatReelsDuration of the reel in seconds.
widthIntegerReelsVideo resolution width.
heightIntegerReelsVideo resolution height.
aspect_ratioFloatReelsVideo aspect ratio.
is_embeddableBooleanReelsWhether the video allows off-site embedding.
is_remixableBooleanReelsWhether the video can be remixed.
video_statusStringReelsVideo health status (e.g., OK).
can_autoplayBooleanReelsAutoplay flag.
is_liveBooleanReelsWhether the reel was a live stream.
is_sphericalBooleanReelsWhether the video is 360/spherical.
thumbnail_urlStringReelsDirect URL to the cover image.
browser_native_hd_urlStringReelsDirect MP4 link for the HD version of the video.
browser_native_sd_urlStringReelsDirect MP4 link for the SD version of the video.
owner_idStringReelsThe creator's numeric ID.
owner_nameStringReelsFlat duplicate of the creator's name.
owner_urlStringReelsFlat duplicate of the creator's URL.
owner_verifiedBooleanReelsFlat duplicate of verification status.
owner_picture_urlStringReelsCreator's profile picture URL.
page_idStringReelsThe associated Facebook Page ID.
page_uri_tokenStringReelsThe string slug/token of the page.
music_album_art_urlStringReelsCover art for the audio track.
soundtrack_idStringReelsThe unique ID of the audio track.
soundtrack_typeStringReelsType of audio (e.g., CUSTOM_AUDIO).
is_original_audio_on_fbBooleanReelsWhether the audio is an original creator sound.
audio_availabilityStringReelsStatus of audio (e.g., AVAILABLE).
top_level_post_idStringReelsInternal tracking post ID.
app_idStringReelsInternal Facebook App ID.
story_locationIntegerReelsThe context location ID for tracking.
is_reshareBooleanReelsWhether the reel is a reshare of another reel.
reshare_creator_nameStringReelsName of the original creator if reshared.
reshare_creator_urlStringReelsURL 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 maxItems limit or reaches the end of the content.

How does Facebook Reels Scraper differ from the official Graph API?

FeatureFacebook Reels ScraperOfficial Graph API
Access ScopeAny public profile or pageOnly pages you own/manage
Account Required❌ No✅ Yes (Plus App Review)
Setup Time< 1 minuteDays / Weeks
Video FilesDirect, unwatermarked HD MP4 URLsWatermarked or restricted URLs
Audio/Music DataFull soundtrack and original audio infoHeavily 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.

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 @defer feedback chunks. The scraper defaults to null for 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.