Facebook Reels Scraper
Pricing
from $1.40 / 1,000 reels
Facebook Reels Scraper
Facebook Reels scraper: get views, likes, comments, shares, captions, music and MP4 video URLs to download from any public Page or profile, or from reel, share and video links. No login. Exact likes and comments, views even from share links, and personal profiles as well as Pages.
Pricing
from $1.40 / 1,000 reels
Rating
0.0
(0)
Developer
lantern fetch
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Features
Share
Scrape public Facebook Reels from any Page or profile, or from single reel, share and video links. This FB Reels scraper gives you each reel's views, likes, comments, shares, caption, hashtags, mentions, music, owner, duration, thumbnail and MP4 video file URL, as clean JSON, CSV or Excel.
Use it as a Facebook Reels API: start it from Apify's API, a schedule or an integration, and get Facebook reel views and video stats back as structured data. The video URLs let you download Facebook reels and videos while the links are valid.
No Facebook account, cookies or login needed: the scraper reads only what Facebook shows to logged-out visitors.
Published by Lantern Fetch. Not affiliated with, endorsed or sponsored by Meta Platforms, Inc. Facebook is a trademark of Meta Platforms, Inc.
How to use the Facebook Reels Scraper
- Click Try for free and paste one or more Facebook Pages, profiles, reel, share or video links into Facebook URLs or handles. A handle such as
natgeoworks too. - Set Max reels per Page or profile (the form suggests 20; left out in an API call, it is 50), and optionally Only reels newer than, for example
30 days. - Click Start. Each reel appears as one row in the Output tab; export it as JSON, CSV or Excel, or read it through the API.
Example input:
{"startUrls": ["https://www.facebook.com/natgeo", "https://www.facebook.com/reel/1671666994301936"],"maxReelsPerProfile": 20}
One output row, shortened (the full item is in the output section below):
{"url": "https://www.facebook.com/reel/1671666994301936","owner": { "handle": "natgeo", "name": "National Geographic" },"createdAt": "2026-11-06T22:00:06.000Z","viewCountRounded": "318K","likes": 3821,"comments": 30,"sharesRounded": "54","videoUrl": "https://video-….fbcdn.net/…mp4?…"}
Use cases
- Competitor reel tracking: follow the reels other Pages post, with their views, likes and comments.
- Creator research: see what a creator posts and how each reel performs before you work with them.
- Content performance reports: export your own or your clients' reel stats to CSV or Excel, on a schedule.
- Reel stats for AI agents: call the scraper through Apify's API or MCP server and hand the JSON to your agent.
What this Facebook Reels API can scrape
| Input | Example | What you get |
|---|---|---|
| Page or profile (URL or handle) | natgeo, https://www.facebook.com/zuck | Its Reels tab, newest first, paginated to the end or to your limit |
| Numeric profile id | https://www.facebook.com/profile.php?id=100044623170418 | Same as above |
| Reel URL | https://www.facebook.com/reel/1671666994301936 | That reel |
| Share link | https://www.facebook.com/share/r/<code>/ | The reel or video it points to |
| Video URL | https://www.facebook.com/natgeo/videos/1671666994301936 | That video, with exact play and view counts |
Mix any of these in one run.
Why this FB Reels scraper
- Profiles as well as Pages. Public personal profiles' Reels tabs work, not only Pages.
- Views from share links. Share links are followed to the reel and, when the reel page has no view count, to its video page.
- Exact likes and comments on every reel, and two view figures, clearly labelled: Facebook shows plays on the Reels tab and views on the reel page, and they differ. You get both instead of one mixed figure.
- Errors are data, not crashes. An account with no public reels, a dead link or a blocked request becomes an item that says what happened.
- No browser. One request per 10 reels, so runs are small and cheap.
Input
| Field | Title in the form | Default | |
|---|---|---|---|
startUrls | Facebook URLs or handles | (required) | Page/profile URLs or handles, reel, share and video URLs. |
maxReelsPerProfile | Max reels per Page or profile | 50 | Reels per Page or profile. |
newerThan | Only reels newer than | none | Only reels posted after this date: 2026-10-01, or relative, like 7 days or 3 months. Facebook's Reels tab is not strictly in date order (Pages pin reels, and some appear a few days out of place), so the scraper stops only after 5 older reels in a row. |
exactCounts | Exact view counts (slower) | false | Also open each reel's video page for the exact playCount and viewCount. One extra request per reel, so Page and profile runs take about 10× the requests. |
proxyConfiguration | Proxy | Apify datacenter | Datacenter proxy works for logged-out Facebook and is the cheapest. |
residentialFallback | Fall back to residential proxy when blocked | false | After 3 blocked requests in a row on datacenter proxy, switch to Apify residential proxy for the rest of the run. Residential traffic is billed to your Apify account. |
maxConcurrency | Max parallel inputs | 5 | Inputs scraped in parallel (max 10). |
healthCheck | Health check mode | false | For monitoring: the run fails when a Page or profile gives fewer reels than asked for, an input becomes an error item, or Facebook's pagination query id is not found. |
{"startUrls": ["natgeo", "https://www.facebook.com/zuck", "https://www.facebook.com/reel/1671666994301936"],"maxReelsPerProfile": 100,"newerThan": "30 days"}
Facebook reel views, likes and comments: output
One item per reel. Every field is always present and is null (or []) when Facebook does not show it, so the schema is the same for every input type.
{"type": "reel","id": "1671666994301936","postId": "1714009876763102","url": "https://www.facebook.com/reel/1671666994301936","owner": {"id": "100044623170418","handle": "natgeo","name": "National Geographic","url": "https://www.facebook.com/natgeo","isVerified": true,"type": "page"},"caption": "Take to the mountain trails in northern Peru with a visit to Kuélap, …","hashtags": ["bestoftheworld"],"mentions": [],"createdAt": "2026-11-06T22:00:06.000Z","playCount": null,"playCountRounded": "161K","playCountApprox": 161000,"viewCount": null,"viewCountRounded": null,"viewCountApprox": null,"likes": 2086,"comments": 17,"sharesRounded": "29","sharesApprox": 29,"durationSeconds": 8.853,"width": 1080,"height": 1920,"thumbnailUrl": "https://scontent-….fbcdn.net/…jpg","videoUrl": "https://video-….fbcdn.net/…mp4?…&oe=6AF4AC92…","videoHdUrl": "https://video-….fbcdn.net/…mp4?…","videoSdUrl": "https://video-….fbcdn.net/…mp4?…","videoUrlExpiresAt": "2026-11-11T21:57:38.000Z","music": { "id": null, "title": null, "artist": null, "isOriginalAudio": null },"source": "reels_tab","inputUrl": "natgeo","scrapedAt": "2026-11-07T10:10:43.677Z"}
| Field | Meaning |
|---|---|
owner.type | page or profile. Read from the Reels tab; on single reel inputs it is known only when the same run also scraped the owner's tab, or from the video page. |
playCount | Exact plays. Only from a video page (/videos/ inputs, exactCounts, or share links that lead there). |
playCountRounded, playCountApprox | Plays as the Reels tab shows them ("161K"), and that figure as a number. The number is an estimate: 161K means anything from 160,500 to 161,499. |
viewCount | Exact views from the video page. Facebook counts views differently from plays, so the two can be far apart. |
viewCountRounded, viewCountApprox | Views as the reel page title shows them ("151K views"). Only for reel and share inputs. |
likes, comments | Exact counts. likes is all reaction types together. |
sharesRounded, sharesApprox | Facebook shows shares only rounded to logged-out visitors. |
hashtags | Lower-case, without #, from the caption and Facebook's hashtag links. |
mentions | Pages and profiles tagged in the caption (name, url, id), plus plain @handles. |
music | title and artist of the soundtrack (Facebook's "Artist · Title"), its id, and isOriginalAudio (the creator's own sound, as opposed to library music). All null for reels Facebook shows without a soundtrack label, about half of them. |
videoUrl | Best available MP4 (HD if there is one). The link is signed and expires at videoUrlExpiresAt, usually about 4 days later: download the file before then. |
source | Where the item was read: reels_tab, reel_page or video_page. |
inputUrl | The input the item came from, as you wrote it. |
Errors
Inputs that give no reels produce one item instead of failing the run. They are never charged.
{ "type": "error", "inputUrl": "mosseri", "error": "not_available", "reason": "Facebook says this content isn't available right now: …", "scrapedAt": "…" }
error | Meaning |
|---|---|
no_public_reels | The account exists, but its Reels tab shows no reels to logged-out visitors. |
not_available | Private, deleted, age- or region-restricted, or hidden from logged-out visitors. |
not_a_reel | A share link that leads to a post, photo or group post, not a video. |
reel_not_found | The reel or share link has no data or does not redirect anywhere. |
invalid_input | Not a supported Facebook URL or handle. |
blocked | Facebook kept answering with HTTP 429/403 or a login page on several fresh sessions. |
facebook_error | Facebook kept answering "Sorry, something went wrong" (HTTP 500). It does this for some specific accounts while others work. |
network_error | Repeated timeouts or connection errors. |
doc_id_not_found | Facebook changed its pagination query and the scraper could not find the new one. The first 10 reels are still returned. |
The run's key-value store has an OUTPUT record with totals: reels, errors by code, requests, retries, blocks and which pagination query id was used.
Pricing
Pay per result: $2.00 per 1,000 reels. Users on higher Apify plans pay less:
| Apify plan tier | Price per 1,000 reels |
|---|---|
| Free, Bronze | $2.00 |
| Silver | $1.70 |
| Gold and above | $1.40 |
Error items are free. You can cap a run's cost with the Maximum cost per run setting. Apify platform usage is included in the price.
Reliability
Tested on 2026-11-07: 1,277 reels from 26 Pages and profiles in one run on the default datacenter proxy, plus 1,156 reels on residential proxy and 200 from reel and video URLs. Facebook did not block a single request, and no reel was returned twice. 24 of the 26 accounts returned reels; the other 2 hide them from logged-out visitors and came back as error items.
- Follows Facebook's own redirects (
web.facebook.com, handle capitalisation, numeric ids to vanity URLs). - Finds Facebook's current pagination query id in its public scripts and remembers the last one that worked.
Limits
- Only public content that Facebook shows to logged-out visitors. Some accounts hide their Reels tab from logged-out visitors; those return
no_public_reelsornot_available. - Shares are rounded (
"1.2K"); Facebook does not show an exact share count logged out. - Exact play and view counts need the video page, one extra request per reel (
exactCounts). Video URL inputs (/<owner>/videos/<id>) have exact counts but no share count or music, because that page does not show them. fb.watchshort links are not supported yet: open them once and pass the URL they lead to.
Possible add-ons
Not included yet; ask if you need them:
- Creator follower counts. Needs one more request per creator.
- Transcripts. Needs speech-to-text on the video file.
FAQ
How do I get Facebook Reels views?
Add the Page, profile or reel to Facebook URLs or handles. Reels from a Page's or profile's Reels tab come with plays as Facebook shows them there (playCountRounded, for example "161K"). Reel and share links come with the views from the reel page (viewCountRounded). For exact numbers, turn on Exact view counts, or pass video URLs (/<owner>/videos/<id>): you then get the exact playCount and viewCount.
Can I download Facebook reels?
Yes. Each item has videoUrl (the best MP4 available), plus videoHdUrl and videoSdUrl. Open or download those links to save the video. Facebook signs them and they stop working at videoUrlExpiresAt, usually about 4 days later, so download soon after the run. The scraper returns the links; it does not store the video files. Reels belong to their creators, so get permission before you republish one.
Does it need a Facebook login?
No. It needs no Facebook account, cookies or login, and reads only what Facebook shows to logged-out visitors. Accounts that hide their reels from logged-out visitors return an error item instead.
How much does it cost?
$2.00 per 1,000 reels on the Free plan, less on paid Apify plans (see Pricing). Error items are free. Apify's Free plan includes $5 of usage a month (apify.com/pricing), enough for about 2,500 reels.
How do I get reels from a profile?
Paste the profile's URL (https://www.facebook.com/zuck), its handle (zuck) or its profile.php?id= URL. The scraper reads the profile's Reels tab, newest first, up to Max reels per Page or profile. Personal profiles work as well as Pages, as long as their reels are public.
Can I export to CSV or Excel?
Yes. In the Output tab, choose Export and pick CSV, Excel, JSON, XML or HTML. Through the API, add format=csv or format=xlsx to the dataset items URL.
Can I use it with AI agents, MCP, n8n, Make or Zapier?
Yes, through Apify. AI agents can find and run it with the Apify MCP server. n8n, Make and Zapier have Apify integrations that start a run and pass on the reels. You can also call it from the Apify API or the JavaScript and Python clients, and get the data by webhook when a run finishes.
Is it legal?
This scraper collects only data that Facebook shows publicly to anyone without logging in, and no personal data beyond that. You are responsible for how you use the data. If your results contain personal data, it is protected by GDPR in the EU and by other rules elsewhere; do not scrape it without a legitimate reason.
Lantern Fetch is not affiliated with, endorsed or sponsored by Meta Platforms, Inc. Facebook is a trademark of Meta Platforms, Inc.