Facebook Reels Scraper avatar

Facebook Reels Scraper

Pricing

from $1.40 / 1,000 reels

Go to Apify Store
Facebook Reels Scraper

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

lantern fetch

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Features

Limited permissions

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

  1. 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 natgeo works too.
  2. 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.
  3. 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

InputExampleWhat you get
Page or profile (URL or handle)natgeo, https://www.facebook.com/zuckIts Reels tab, newest first, paginated to the end or to your limit
Numeric profile idhttps://www.facebook.com/profile.php?id=100044623170418Same as above
Reel URLhttps://www.facebook.com/reel/1671666994301936That reel
Share linkhttps://www.facebook.com/share/r/<code>/The reel or video it points to
Video URLhttps://www.facebook.com/natgeo/videos/1671666994301936That 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

FieldTitle in the formDefault
startUrlsFacebook URLs or handles(required)Page/profile URLs or handles, reel, share and video URLs.
maxReelsPerProfileMax reels per Page or profile50Reels per Page or profile.
newerThanOnly reels newer thannoneOnly 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.
exactCountsExact view counts (slower)falseAlso 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.
proxyConfigurationProxyApify datacenterDatacenter proxy works for logged-out Facebook and is the cheapest.
residentialFallbackFall back to residential proxy when blockedfalseAfter 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.
maxConcurrencyMax parallel inputs5Inputs scraped in parallel (max 10).
healthCheckHealth check modefalseFor 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"
}
FieldMeaning
owner.typepage 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.
playCountExact plays. Only from a video page (/videos/ inputs, exactCounts, or share links that lead there).
playCountRounded, playCountApproxPlays 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.
viewCountExact views from the video page. Facebook counts views differently from plays, so the two can be far apart.
viewCountRounded, viewCountApproxViews as the reel page title shows them ("151K views"). Only for reel and share inputs.
likes, commentsExact counts. likes is all reaction types together.
sharesRounded, sharesApproxFacebook shows shares only rounded to logged-out visitors.
hashtagsLower-case, without #, from the caption and Facebook's hashtag links.
mentionsPages and profiles tagged in the caption (name, url, id), plus plain @handles.
musictitle 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.
videoUrlBest 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.
sourceWhere the item was read: reels_tab, reel_page or video_page.
inputUrlThe 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": "…" }
errorMeaning
no_public_reelsThe account exists, but its Reels tab shows no reels to logged-out visitors.
not_availablePrivate, deleted, age- or region-restricted, or hidden from logged-out visitors.
not_a_reelA share link that leads to a post, photo or group post, not a video.
reel_not_foundThe reel or share link has no data or does not redirect anywhere.
invalid_inputNot a supported Facebook URL or handle.
blockedFacebook kept answering with HTTP 429/403 or a login page on several fresh sessions.
facebook_errorFacebook kept answering "Sorry, something went wrong" (HTTP 500). It does this for some specific accounts while others work.
network_errorRepeated timeouts or connection errors.
doc_id_not_foundFacebook 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 tierPrice 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_reels or not_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.watch short 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.

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.