Facebook Reels Scraper avatar

Facebook Reels Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Facebook Reels Scraper

Facebook Reels Scraper

Facebook Reels Scraper extracts detailed data from Facebook Reels, including video links, captions, likes, comments, and creator profiles. It automates the process for marketers, analysts, or researchers, delivering structured JSON or CSV outputs ready for insights or automation workflows.

Pricing

$19.99/month + usage

Rating

5.0

(6)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

5

Bookmarked

402

Total users

5

Monthly active users

4 days ago

Last modified

Share

Facebook Reels Scraper — Captions, Timing and Video Metadata

Facebook Reels Scraper pulls public Reels from any Facebook profile or Page you point it at, returning caption text, publish time, rounded play counts, and full video metadata for every Reel. Give it one or more profile URLs and it hands back structured JSON — no HTML parsing, no manual copy-paste. Results stream into your dataset row by row as each Reel finishes, so you can start working with the data before the run ends. Try it now.

What is Facebook Reels Scraper?

Facebook Reels Scraper is an Apify Actor that collects public Reels — captions, timestamps, video metadata, and rounded play counts — from any Facebook profile or Page URL you supply, returning normalized JSON rows in your dataset. It scrapes logged-out, reading only what Facebook already shows a visitor without an account, so no Facebook login, password, or cookies are required. It's built for social media managers, content researchers, and developers who need Reels data fed into a dataset, spreadsheet, or AI pipeline without maintaining their own scraper.

What Facebook Reels data is publicly available to scrape?

Facebook shows a profile's public Reels — caption, publish time, playback video, and rounded play count — to any visitor, logged in or not.

Data categoryAvailable without loginGated behind
Caption, publish time, playback videoYes
Rounded play count (e.g. "3.6M")Yes, via the Reels tab
Soundtrack / original-audio infoYes
Private or friends-only profile's ReelsNoLogin + accepted friend/follow
Comments and reactions on a ReelNoLogin
Exact (non-rounded) play countNever published, even logged in
Profile's other tabs (Timeline, Photos)Publicly viewableNot extracted by this Actor

Facebook Reels Scraper only returns publicly visible data — nothing behind a login wall.

What data can I extract with Facebook Reels Scraper?

Facebook Reels Scraper returns identity and link fields, engagement and audio metrics, and raw media/tracking objects for every Reel it collects.

Field nameDescription
facebookUrlURL of the profile/Page that owns the Reel
inputUrlThe /reel/{id} URL the row was built from
topLevelUrlDerived top-level post URL for the Reel
topLevelReelUrlCanonical Reel URL, trailing slash included
shareable_urlFacebook's shareable link for the Reel
startUrlThe profile URL from your input that produced this row
textReel caption/description
timePublish timestamp, ISO 8601 UTC
video_ownerRaw owner object (name, id, url, etc.) as returned by Facebook
video_owner_typeOwner type string, e.g. "FACEBOOK_USER"

Engagement, audio and flags

Field nameDescription
playCountRoundedRounded play count parsed to an integer (e.g. "3.6M"3600000)
play_count_reducedFacebook's own rounded plays display string
is_passive_contentFacebook's passive-content flag
is_original_audio_on_facebookWhether the Reel uses original (not licensed) audio
soundtrack_infoRaw audio-track object when Facebook attaches one, else null
track_titleAudio/soundtrack display title
music_album_art_uriCover-art image URL for the soundtrack
self_view_boostRaw self-view-boost value from Facebook's video context

Media and raw tracking objects

Field nameDescription
videoRaw video object (duration, thumbnail, embeddable flag, etc.)
playback_videoRaw playback object — thumbnail image, audio language, length in seconds
attachmentsRaw attachment list carrying the video media object
trackingRaw Facebook tracking object, includes top_level_post_id
if_should_change_url_for_reelsRaw object Facebook uses to signal an updated shareable URL
fb_shorts_reshare_contextRaw reshare-context object (populated when the Reel is a reshare)
remix_infoRaw remix-availability object

🤖 Add-on: Need additional Facebook data?

Facebook Reels Scraper focuses only on the Reels tab. If you also need a profile's regular timeline, pair it with Facebook Posts Scraper for captions, reactions, and shares on standard posts, or Facebook Comments Scraper: Reaction Breakdown to pull the comment threads and reaction splits this Actor doesn't collect. For page-level engagement scoring across a whole posting history, Facebook Page Posts Scraper With Engagement Analytics adds virality and ranking metrics on top of the raw posts.

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

Meta's Graph API only returns Reels/video data for Pages and accounts that have granted your registered app permission — it isn't a general-purpose way to pull another Page's public Reels. Facebook Reels Scraper works from a public profile URL with no app, token, or review process involved.

FeatureMeta Graph APIFacebook Reels Scraper
Access to any public profile's ReelsRequires the account's own access token, or an approved Page Public Content Access reviewWorks from just the profile URL
App review / approvalRequired for most content permissionsNone
AuthenticationRegistered app + OAuth access tokenNone — optional Apify Proxy only
Setup timeDeveloper account, app creation, review cyclePaste a URL and start a run
Bulk / multi-profile accessLimited to profiles that authorized your appOne run across a list of profile URLs
Output consistencyVaries with the permission scope grantedSame JSON schema on every run

Use the Graph API when you manage the Page yourself and want an officially sanctioned integration. Use Facebook Reels Scraper when you need Reels data from profiles you don't own or can't get an approved token for.

How to use Facebook Reels Scraper

Facebook Reels Scraper runs on the Apify platform — no separate signup or API key beyond your Apify account is needed to start a run.

  1. Open Facebook Reels Scraper on the Apify Store and click Try for free / Start.
  2. Add one or more Facebook profile URLs, or bare usernames, under Profile URLs — this is the only required input.
  3. Optionally set Max Reels per profile (default 10, up to 10,000) and a cutoff under Only posts newer than.
  4. Attach a proxy under Proxy — Residential is prefilled and recommended for Facebook.
  5. Click Start. Rows land in the dataset as each Reel is saved; export as JSON, CSV, or Excel once the run finishes.

How to scale to bulk Facebook Reels extraction

startUrls takes a list, not a single value — paste dozens of profile URLs into one run and the Actor works through them in sequence, applying the same resultsLimit and date cutoff to each. There's no separate "bulk mode" input: scaling up is just adding more lines to Profile URLs. For very large batches, splitting profiles across a few runs keeps any single run shorter and easier to monitor.

What can you do with Facebook Reels data?

  • A social media manager tracking brand mentions uses text and time to log which Pages posted about a topic and when.
  • A music-licensing analyst uses track_title and soundtrack_info to find which Reels are built on a specific audio track.
  • A competitive researcher uses playCountRounded and video_owner to rank which Pages' Reels are reaching the widest audience.
  • A content archivist uses shareable_url and video to build a durable record of a Page's Reels history.
  • An AI/content team feeds the text caption field into an LLM summarization or tagging pipeline, auto-classifying Reels by theme before indexing them into a RAG search tool.

How does Facebook Reels Scraper handle rate limits and blocking?

The Actor routes requests through Apify Proxy (Residential is prefilled) via a shared session, and rotates to a fresh proxy URL whenever a profile hits a transient network error (proxy error, connection error, chunked-encoding error, or timeout), retrying that profile up to 4 times. GraphQL pagination requests retry up to 6 times with exponential backoff on HTTP 429 and 502/503/504 responses, and individual /reel/{id} page fetches retry up to 3 times on 429/503. Reel pages are fetched with limited concurrency (10 at a time) rather than all at once, and a short pause is inserted between profiles in the same run.

If a profile still fails after all retries, the Actor logs the error and pushes one profile_error row for that profile instead of stopping the run — every other profile in your list still gets processed. The Actor does not solve CAPTCHAs; if a request is blocked outright, that Reel or profile row carries a request_error or parse_error field instead of being silently dropped.

⬇️ Input

ParameterRequiredTypeDescriptionExample value
startUrlsYesarrayOne URL per line — e.g. facebook.com/YourPage or a /people/… link. Usernames without https:// work too.["https://www.facebook.com/LeonardoDiCaprio/"]
resultsLimitNointegerStop after this many Reels from each profile (newest-first order where available). Default 10, min 1, max 10000.25
onlyPostsNewerThanNostringAbsolute: pick a date. Relative: e.g. 7 days, 2 weeks. Leave blank for no cutoff. Default ""."30 days"
proxyConfigurationNoobjectRoute traffic through Apify Proxy (recommended for fewer blocks).{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example input

{
"startUrls": [
"https://www.facebook.com/LeonardoDiCaprio/",
"https://www.facebook.com/people/Emily-Olivia/61563061022550/"
],
"resultsLimit": 25,
"onlyPostsNewerThan": "30 days",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

⬆️ Output

Each Reel is pushed to the dataset as one typed JSON row, with the same field names on every run. As with any Apify dataset, results export to JSON, CSV, Excel, HTML table, or RSS directly from the run's Dataset tab. Only successful Reel rows are billed as the row_result event; a profile that fails outright produces a profile_error row instead, and that row is pushed without a charge. Filter it out of downstream processing with type !== "profile_error".

Example output

{
"facebookUrl": "https://www.facebook.com/LeonardoDiCaprio/",
"inputUrl": "https://www.facebook.com/reel/1729248401649246",
"topLevelUrl": "https://facebook.com/1729248401649246/posts/undefined/",
"topLevelReelUrl": "https://www.facebook.com/reel/1729248401649246/",
"shareable_url": "https://www.facebook.com/reel/1729248401649246",
"text": "Behind the scenes from today's shoot",
"time": "2026-06-18T14:32:05.000Z",
"playCountRounded": 3600000,
"play_count_reduced": "3.6M",
"video_owner": {
"name": "Leonardo DiCaprio",
"id": "5219675996",
"url": "https://www.facebook.com/LeonardoDiCaprio/",
"is_verified": true
},
"video_owner_type": "FACEBOOK_USER",
"video": {
"id": "1729248401649246",
"playable_duration_in_ms": 18400,
"embeddable": true,
"__typename": "Video"
},
"playback_video": {
"length_in_second": 18.4,
"image": { "uri": "https://scontent.xx.fbcdn.net/v/thumb.jpg" },
"audio_user_preferred_language": "en"
},
"attachments": [
{ "media": { "playable_duration_in_ms": 18400, "owner": { "id": "5219675996" } } }
],
"tracking": { "top_level_post_id": "1729248401649246" },
"self_view_boost": null,
"if_should_change_url_for_reels": { "shareable_url": "https://www.facebook.com/reel/1729248401649246/" },
"is_passive_content": false,
"fb_shorts_reshare_context": {},
"remix_info": {},
"soundtrack_info": { "id": "920157419536052", "type": "CUSTOM_AUDIO" },
"track_title": "Leonardo DiCaprio · Original audio",
"music_album_art_uri": "https://scontent.xx.fbcdn.net/v/art.jpg",
"is_original_audio_on_facebook": true,
"startUrl": "https://www.facebook.com/LeonardoDiCaprio/"
}

How does it work?

Facebook Reels Scraper requests a profile's main page and its Reels tab through the same HTTP session (optionally routed over Apify Proxy), then reads the Reel identifiers embedded in that page's JSON. If more Reels exist than were found on the initial pages, it resolves Facebook's internal GraphQL pagination query and walks additional pages until it reaches your resultsLimit or runs out of Reels. Each Reel ID is then fetched as its own /reel/{id} page, and the caption, timing, video, and audio fields are pulled out of that page's embedded JSON. Only what a logged-out visitor could already see is ever returned, and the output field names stay the same regardless of how Facebook's page layout changes.

Integrations

Facebook Reels Scraper works with the tools you already use to move data around — call it directly over HTTP, or connect it to a no-code automation platform.

Calling Facebook Reels Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("Scraper-Engine/facebook-reels-scraper").call(run_input={
"startUrls": ["https://www.facebook.com/LeonardoDiCaprio/"],
"resultsLimit": 25,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["text"], item["playCountRounded"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

MCP integration for AI agents

Facebook Reels Scraper is reachable through Apify's Actors MCP Server, which exposes Actors on Apify Store as callable tools for MCP-compatible clients such as Claude Desktop and Claude Code. Register it by connecting from this Actor's page in Apify Console, or by running npx @apify/actors-mcp-server configured with this Actor's store ID.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node (or the community Apify node) pointed at this Actor's run endpoint with your Apify API token in the Authorization header. In Make, use the Apify app's "Run Actor and get dataset items" module and map startUrls from an earlier scenario step. In LangChain, call the same Apify API endpoint from a custom Tool, or load results with the community Apify dataset loader, so an agent can pull fresh Reels data mid-conversation.

Scraping publicly available Facebook Reels is generally lawful — this Actor only returns data any visitor can already see on a public profile or its Reels tab, without logging in or bypassing any wall. Because a Reel's caption, owner name, and profile URL can identify a real person, that output is personal data under GDPR and CCPA: you need a lawful basis to store and process it, and should minimize what you retain to what your use case actually needs. Facebook's own Terms of Service also govern automated access to the site independently of data-protection law. Consult legal counsel if your use case involves bulk storage of personal data or spans multiple jurisdictions.

Frequently asked questions

What Facebook Reels fields does Facebook Reels Scraper return?

It returns text (caption), time (publish timestamp), playCountRounded, video_owner, and shareable_url among the full set of fields — see What data can I extract above for the complete list.

Does Facebook Reels Scraper require a Facebook account or login?

No. It reads only the public profile page and public Reels tab that any visitor sees logged out — no Facebook username, password, or cookies are needed.

How many Reels can I extract in one run?

Up to 10,000 per profile, set via resultsLimit, applied separately to every profile URL in your input list.

What happens if a profile has no public Reels or doesn't exist?

The run still completes; that profile simply returns fewer rows (or none) than your resultsLimit, and the log notes that the profile may not have that many public Reels or that Facebook limited what it returned. If the whole profile request fails outright, a single profile_error row with an error field is pushed instead, and the rest of your profile list still runs.

Can I scrape multiple Facebook profiles at once?

Yes. startUrls accepts an array — add as many profile URLs or usernames as you need and they're processed in one run, each with its own resultsLimit and date cutoff applied.

Does Facebook Reels Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes. It's reachable through Apify's Actors MCP Server (npx @apify/actors-mcp-server) for MCP-compatible clients, and callable as a plain HTTP endpoint from any agent framework that can make a request.

Does Facebook Reels Scraper return data in a format LLMs can use directly?

Yes. Every run returns typed, normalized JSON with the same field names across profiles and runs — no HTML, no selectors to write. Pass it straight to an LLM prompt, a vector store, or an agent tool.

What happens when Facebook changes its layout or anti-bot system?

The Actor reads Reels from Facebook's embedded page JSON rather than visual HTML, and is maintained to track changes to that structure; the output schema stays the same regardless of Facebook UI changes.

Can I use Facebook Reels Scraper without managing proxies or browser infrastructure?

Yes. Apify Proxy (Residential is prefilled) is built in, and the Actor handles requests and retries directly — no headless browser or proxy pool to run yourself.

Which fields work best for AI training data and RAG indexing?

For RAG indexing, use text (caption) as the retrievable content, paired with shareable_url as the source link. For structured training data, time, playCountRounded, and video_owner return consistently across every row and all fields come back as typed primitives, not strings to re-parse.

What does Facebook Reels Scraper NOT return?

It doesn't return likes, reactions, comment counts, share counts, or hashtag lists — Facebook doesn't expose those on the public Reel surface this Actor reads, so they're omitted rather than returned empty or guessed.

Scraper NameWhat it extracts
Facebook Posts ScraperTimeline posts — captions, reactions, shares
Facebook Comments Scraper: Reaction BreakdownComments with a per-reaction-type breakdown
Facebook Page Posts Scraper With Engagement AnalyticsPosts plus virality and engagement-rank metrics
Facebook Marketplace ScraperListings — price, location, seller, detail fields
Instagram Reels Scraper Pay Per EventsInstagram Reels — caption, views, likes, creator data
TikTok Trending Videos Scraper With Author ProfileTikTok videos with creator profile attached

Your feedback

Found a bug or a field that's missing from your data? Let us know so we can take a look — reach out through Scraper Engine's Apify Store support channel with your run ID, and your report directly shapes what gets fixed next.