Facebook Reels Scraper
Pricing
from $2.80 / 1,000 results
Facebook Reels Scraper
Facebook Reels Scraper extracts captions, play counts, reactions, hashtags and HD/SD video links โ scrape Facebook Reels in bulk for analytics, influencer research, monitoring and short-video content export.
Pricing
from $2.80 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
27
Total users
20
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
What is Facebook Reels Scraper?
Facebook Reels Scraper works as a Facebook reels extractor for public Facebook pages, profiles and single reel links. Paste one or more URLs or usernames, click Start, and get captions, play counts, reactions, comments, shares, video links, thumbnails, music and author details in a dataset. No login is needed. Pricing starts at $2.80 per 1,000 reels on the Gold plan, plus platform usage.
Use it for:
- Facebook reels analytics: use it as a views and likes scraper to track the view count, reactions, comments and shares of each reel across many pages.
- Competitor reels analysis: compare how rival pages perform and which captions and hashtags they use.
- Short video content research: study captions, hashtags and music of reels that work, as a Facebook short video scraper would.
- Hashtag research: use it as a Facebook reels hashtag scraper to collect the hashtags behind top reels.
- Influencer research: collect author names, usernames and verified flags for creators you want to review.
- Find viral Facebook reels: set a minimum play count to keep only the reels that took off.
- Trend monitoring: schedule Facebook reels scraping with a date window to catch new reels as they appear.
- Download Facebook reels in bulk: use it as a Facebook reels video downloader that saves MP4 copies to storage with a link that keeps working.
Because it runs on Apify, you also get API access, scheduling, webhooks, integrations and export to JSON, CSV, Excel, XML and HTML.
What can Facebook Reels Scraper do?
- ๐ Accept many input types: page and profile URLs, Reels tab links, numeric profile links, single reel links, share links and bare usernames, with bulk input and automatic de-duplication.
- ๐ Filter by date: keep reels newer or older than an absolute date or a relative value such as 3 days.
- ๐ Filter by popularity and length: set minimum and maximum play counts and durations.
- ๐พ Save the video files: optionally store the HD or SD MP4 of each reel with a public link.
- ๐ฆ Run in bulk: a bulk scraper for Facebook reels that handles many inputs in one run.
- ๐งพ Collect reel details: a Facebook reels metadata extractor with captions, counts, music and authors.
- โก Stream results live: each reel appears in the dataset as soon as it is ready.
- ๐ See what happened: optional per-input summary rows and error rows explain every stop and failure.
What data can Facebook Reels Scraper extract?
Every reel is saved as one dataset row with the fields below.
| Data | Fields | What it holds |
|---|---|---|
| ๐ฌ Reel identity | recordType, reelId, postId, storyId, feedbackId, video, attachments, tracking | Row type and the identifiers of the reel |
| ๐ Links | reelUrl, shareable_url, if_should_change_url_for_reels, topLevelUrl, topLevelReelUrl, postUrl, permalinkUrl, facebookUrl, inputUrl, pageName | Links to the reel and the page it came from |
| ๐ Caption | text, message, hashtags, mentions, links | Caption text, hashtags, mentions and links found in it |
| ๐ Time | time, timestamp, scheduledPublishTime, scrapedAt | When the reel was posted and when it was scraped |
| ๐ Engagement | playCount, playCountRounded, play_count_reduced, reactionCount, likeCount, commentCount, shareCount, shareCountReduced | Plays, reactions, comments and shares |
| ๐ Video details | durationSeconds, durationMs, width, height, aspectRatio, audioAvailability, videoLabel, dubbedTrackMapping | Length, size and audio information |
| ๐ผ Thumbnails | thumbnailUrl, firstFrameThumbnailUrl | Preview images |
| ๐พ Video files | videoUrlHd, videoUrlSd, bestVideoUrl, bestVideoQualityLabel, dashManifestUrl, videoQualities, playback_video, localVideoPath, downloadedVideoUrl | Video links, quality list and the saved copy when download is on |
| ๐ฌ Captions and languages | captionsUrl, availableCaptionLocales | Subtitle file link and available languages |
| ๐ต Music | musicTitle, track_title, musicIsOriginal, is_original_audio_on_facebook, soundtrack_info, soundtrackId, soundtrackType, music_album_art_uri | Track title and audio details |
| ๐ค Author | authorName, authorId, authorUsername, authorUrl, authorVerified, authorProfilePicUrl, authorPageId, authorType, video_owner, video_owner_type, subscribeStatus | Who published the reel |
| ๐ท Flags | isSponsored, isBrandedContent, isReshare, fb_shorts_reshare_context, isRemixable, remix_info, isAiGenerated, aiTransparencyType, isMadeWithMetaAi, is_passive_content, self_view_boost, privacy, publishStatus | Sponsored, reshare, remix and AI markers |
| ๐ฆ Collection | collectionId, collectionIdDecoded | Identifier of the reels list the row came from |
| โ Status | success, error | Whether the row is a normal result and any error text |
With the optional raw data setting, a raw field holds the complete reel object.
If you turn on per-page summaries, one extra row per input URL (recordType set to profileSummary) holds pageName, targetKind, reelsFound, reelsSaved, reelsFilteredOut, pagesWalked, hasMoreReels, stoppedBecause, connectionTier, durationSeconds, success, error, facebookUrl, inputUrl and scrapedAt. Inputs that fail, or return no reels, can add an error row (recordType set to error) with the same fields as a reel row, success set to false and the reason in error.
Note: Fields are filled only when the reel shows them publicly. Counts, music, captions, video links and author details can be empty (null) for some reels.
What data can't Facebook Reels Scraper extract?
- Comments text, reaction lists and follower lists. Only counts are saved.
- Private, removed or login-only content.
- Posts, photos and events. For page details, use Facebook Pages Scraper.
How to scrape Facebook reels
This Actor is built for an easy start, even if you have never extracted data from the web before.
- Create a free Apify account with your email.
- Open Facebook Reels Scraper.
- Paste one or more Facebook page, profile or reel URLs into Facebook URLs, or add names to Facebook usernames.
- Set Max reels per page / profile and, if you want, a date range or play-count filter.
- Click Start and wait for the run to finish.
- Download your data in JSON, CSV, Excel, XML or HTML from the Output tab.
How much does it cost to scrape Facebook reels?
This Actor uses a pay-per-event model. You pay for each reel saved, and the price per reel falls on higher Apify plans. Summary rows and error rows are not charged. Platform usage is billed in addition.
| Apify plan | Price per reel | Price per 1,000 reels |
|---|---|---|
| Free | $0.004 | $4.00 |
| Bronze | $0.0036 | $3.60 |
| Silver | $0.0032 | $3.20 |
| Gold | $0.0028 | $2.80 |
Each run also has a start event of $0.00005 per GB of memory, with a minimum of one. The default memory is 1 GB, so a run starts with one event, which is $0.00005.
Example: scraping 1,000 reels on the Gold plan costs $2.80 in result events plus $0.00005 for the start, with platform usage billed in addition. The same 1,000 reels cost $4.00 on the Free plan.
See the pricing tab for all events.
Is scraping Facebook reels free?
You can start for free. The $5 monthly credit of the Apify Free plan covers about 1,250 reels at the Free price of $0.004 each, before platform usage. A small test run with the default settings is a cheap way to check the output first.
Input
To run this Actor you only need one Facebook URL or one username. Set the input in the Actor interface or send it as JSON through the API.
This example collects up to 20 reels from one public page:
{"startUrls": ["https://www.facebook.com/LeonardoDiCaprio/"],"resultsLimit": 20,"language": "en-US","proxyConfiguration": {"useApifyProxy": false}}
See the input tab for the full description of every field.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | One of the two | none | Facebook page, profile, Reels tab, single reel or share links |
usernames | array | One of the two | none | Usernames or numeric profile IDs, one per line |
resultsLimit | integer | No | 20 | Reels per page or profile. 0 means every reel |
onlyPostsNewerThan | string | No | none | Keep reels posted on or after this date |
onlyPostsOlderThan | string | No | none | Keep reels posted on or before this date |
minPlayCount | integer | No | none | Skip reels with fewer plays |
maxPlayCount | integer | No | none | Skip reels with more plays |
minDurationSeconds | number | No | none | Skip shorter reels |
maxDurationSeconds | number | No | none | Skip longer reels |
downloadVideos | boolean | No | false | Save each reel as an MP4 in the key-value store |
videoQuality | string | No | hd | hd or sd for downloads |
includeDashManifest | boolean | No | true | Keep the full playback data in each row |
includeRawNode | boolean | No | false | Add the complete raw reel object as raw |
includeProfileSummary | boolean | No | true | Add one summary row per input |
includeErrorRows | boolean | No | true | Add one error row per failed input |
language | string | No | en-US | Preferred language for labels |
concurrency | integer | No | 3 | Inputs processed at the same time (1 to 20) |
maxProfiles | integer | No | 0 | Process only the first N inputs. 0 means all |
minRequestDelay | number | No | 0.5 | Minimum pause before each request, in seconds |
maxRequestDelay | number | No | 1.5 | Maximum pause before each request, in seconds |
maxRetries | integer | No | 3 | Retries for one failed request (1 to 10) |
requestTimeout | integer | No | 60 | Seconds to wait for one response |
maxPages | integer | No | 0 | Cap on batches of about 10 reels per input. 0 means no cap |
proxyConfiguration | object | No | {"useApifyProxy": false} | Optional connection settings |
debug | boolean | No | false | Log extra detail about retries |
Facebook URLs and usernames
You can mix formats in one run. Duplicates are removed.
- โ
Good:
https://www.facebook.com/LeonardoDiCaprio/ - โ
Good:
https://www.facebook.com/reel/31939704905645094 - โ
Good:
Cristianoinusernames - โ Bad: a private profile or a group link
Warning: Private or removed pages cannot be read. They return an error row instead of reels.
Date filters
Use YYYY-MM-DD, an ISO timestamp, or a relative value such as 3 days, 2 weeks, 6 months or 1 year. Combine both fields to get an exact range.
- โ
Good:
2025-01-01or2 weeks - โ Bad:
last Tuesday
Warning: A value the Actor cannot read is ignored, and the run log says so.
Max reels per page / profile
The limit applies to each page or profile separately. A single reel link returns one record, unless your date, play-count or duration filters drop it. Start with 10 to 50 to test, then raise it.
Output
Results are stored in a dataset, which you can open in the Output or Storage tab. View them as a table or JSON, pick the fields you need, and download them in JSON, CSV, Excel, XML or HTML. Views are available for Reels, Profile summary and Errors. When a run saves records, a combined file with the same records is also written to the key-value store under the key OUTPUT. Downloaded videos are saved there as reel-<reelId>.mp4.
JSON example
Results for the input example above (shortened to the main fields, with example values):
{"recordType": "reel","facebookUrl": "https://www.facebook.com/LeonardoDiCaprio","inputUrl": "https://www.facebook.com/LeonardoDiCaprio/","pageName": "LeonardoDiCaprio","reelId": "1234567890123456","reelUrl": "https://example.com/reel/1234567890123456","text": "Example caption #nature","time": "2026-01-15T10:00:00Z","playCount": 246000,"reactionCount": 12000,"commentCount": 340,"shareCount": 910,"durationSeconds": 24.5,"width": 720,"height": 1280,"thumbnailUrl": "https://example.com/thumb.jpg","videoUrlHd": "https://example.com/video-hd.mp4","videoUrlSd": "https://example.com/video-sd.mp4","downloadedVideoUrl": null,"hashtags": ["nature"],"mentions": [],"authorName": "Example Page","authorUsername": "LeonardoDiCaprio","authorVerified": true,"musicTitle": "Original audio","isSponsored": false,"isReshare": false,"scrapedAt": "2026-10-26T12:00:00Z","success": true,"error": null}
With summaries on, each input also adds a row like this:
{"recordType": "profileSummary","facebookUrl": "https://www.facebook.com/LeonardoDiCaprio","inputUrl": "https://www.facebook.com/LeonardoDiCaprio/","pageName": "LeonardoDiCaprio","targetKind": "profile","reelsFound": 20,"reelsSaved": 20,"reelsFilteredOut": 0,"pagesWalked": 2,"hasMoreReels": true,"stoppedBecause": "reached resultsLimit (20)","durationSeconds": 8.4,"success": true,"error": null,"scrapedAt": "2026-10-26T12:00:08Z"}
Notes and limitations
- Only public content is read. No login is used.
- Facebook's own video links expire after a few hours. Turn on
downloadVideosto get a saved copy with a lasting link. - Downloads are slower and use more bandwidth. Raise the Actor memory for big batches.
- The combined
OUTPUTfile is skipped when it would be larger than 40 MB. Export the dataset instead. - If your spending limit is reached, the run stops and keeps the reels collected so far.
Tips and advanced usage
How many reels can you scrape with Facebook Reels Scraper?
The number depends on how many public reels a page has, your resultsLimit, your filters and your date range. Set resultsLimit to 0 to collect every reel a page shows. The best way to know for your use case is a quick test run.
How to get faster or cheaper results
- Use
onlyPostsNewerThan. The run stops once the feed is older than your date. - Keep
downloadVideosoff unless you need the files. - Turn off
includeDashManifestfor smaller rows. Each row is then about 10 to 25 KB leaner. - Use
maxPagesas a safety cap on very large pages.
Known issues
- If many requests fail, raise the delays and the retry count, or review the network setting in the input, then run again.
- Some pages do not show a public Reels tab. Those inputs return an error row.
Integrations and API
Can I use Facebook Reels Scraper as an API?
Yes. The Apify API lets you start runs, schedule them and fetch results. Use the apify-client package for Node.js or Python. See the API tab for ready-made code.
How to scrape Facebook reels with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_minds/facebook-reels-scraper").call(run_input={"startUrls": ["https://www.facebook.com/LeonardoDiCaprio/"],"resultsLimit": 20,"language": "en-US","proxyConfiguration": {"useApifyProxy": False},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Can I integrate Facebook Reels Scraper with other apps?
Yes. Connect it to Make, Zapier, Google Sheets, Slack and more through Apify integrations. Use webhooks to react when a run finishes, and schedules to repeat runs for trend monitoring.
Can I use Facebook Reels Scraper with AI agents (MCP)?
Yes. Open the MCP tab for setup steps to connect the Actor to Claude and other MCP clients.
Other Facebook scrapers
| Actor | What it does |
|---|---|
| ๐ฃ Facebook Ads Library Scraper | Public ads from the Meta Ad Library by keyword, page or link |
| ๐ Facebook Event Scraper | Public Facebook events: dates, places, attendance and organizers |
| ๐ Facebook Pages Scraper | Public Facebook Page data in bulk: category, followers, contact details and more |
| ๐ธ Instagram Scraper | Public Instagram profiles, posts, reels, comments and hashtags |
| ๐ Whop Content Rewards Scraper | Every Whop Content Rewards clipping & UGC campaign as clean data โ per-platform payout tables, creator counts, budget burn, days-to-depletion... |
FAQ
Is it legal to scrape Facebook reels?
Scraping publicly available data is generally legal, but you must respect personal data rules such as GDPR, copyright and Facebook's terms. Collect only what you need and have a legitimate reason. Read Is web scraping legal? for background. This is not legal advice.
How does Facebook Reels Scraper work?
You give it Facebook page, profile or reel links, plus optional filters. It reads each public Reels list the way a visitor would, applies your date and popularity filters, and saves every matching reel to the dataset as it goes. It stops at your limit, at the end of the list, or at your spending limit.
Why scrape Facebook reels?
Scraping reels turns scattered public videos into a table you can sort. Teams use it for Facebook reels analytics, competitor research, influencer discovery, hashtag and music trend tracking, and brand monitoring. Scheduled runs keep the data fresh, and exports to CSV or Excel make reporting simple for marketing and research teams.
Do I need a Facebook login or API key?
No. Facebook Reels Scraper reads public pages only and uses no login, cookies or API key. This also means private profiles, removed reels and pages that do not show a public Reels tab cannot be scraped. Those inputs return an error row with a plain reason when error rows are enabled.
Can I download Facebook reels in bulk?
Yes. Turn on downloadVideos and choose HD or SD. Each reel is saved as an MP4 in the run's key-value store, and its public link appears in downloadedVideoUrl. Downloads are slower and use more bandwidth, so test with a small resultsLimit first and raise the Actor memory for large batches.
Why am I getting fewer results than expected?
Check these causes first. Your resultsLimit, date range, play-count or duration filters may be removing reels. The page may have few public reels, or a maxPages cap may apply. Open the profile summary row: stoppedBecause, reelsFound and reelsFilteredOut show exactly why the run ended.
How do I export Facebook reels to CSV or Excel?
When the run finishes, open the Output or Storage tab, choose the export format and select the fields you need. JSON, CSV, Excel, XML and HTML are available. You can also fetch the dataset through the API, or send it straight to Google Sheets with an integration.
What if Facebook Reels Scraper is not working?
First run it with the example input to confirm your setup. Then check the run log and the Errors view for the reason. If the problem remains, open a ticket on the Issues tab with your run link, and we will look into it.
Support and feedback
We are always improving this Actor. If you have feedback or found a bug, please create an issue on the Issues tab.
Need a custom solution or have questions? Contact hello.dataminds@gmail.com.
Built and maintained by the data_minds team on Apify.
Facebook Reels Scraper is an independent tool and is not affiliated with or endorsed by Meta or Facebook. Use it in line with applicable laws and the platform's terms.