Facebook Posts Scraper⚡ avatar

Facebook Posts Scraper⚡

Pricing

from $2.50 / 1,000 post scrapeds

Go to Apify Store
Facebook Posts Scraper⚡

Facebook Posts Scraper⚡

📊Scrape public Facebook posts from Pages, Profiles, and direct post, video, photo, or share URLs. Get text, media, reactions, comment and share counts, HD/SD video URLs, captions, timestamps, optional comments, replies, share details, date filters, and multi-profile support⚡Facebook Posts Scraper⚡

Pricing

from $2.50 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Premium Scraper

Premium Scraper

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

8

Monthly active users

21 minutes ago

Last modified

Share

✨ Facebook Posts Scraper | Public Posts, Comments & Shares ⚡

Facebook Posts Scraper collects public Facebook timeline posts and direct Facebook post, video, photo, and share URLs, then optionally expands public comments, replies, and share-detail rows from Facebook's public endpoints.

Facebook Posts Scraper is built for users who want a cleaner public-post dataset, predictable grouped sections, and simpler billing visibility without carrying the full weight of Facebook's raw internal payloads.

The actor is designed for high-signal output:

  • Common post fields are surfaced at the top level.
  • Engagement, comments, replies, and share details are grouped into predictable sections.
  • Raw Facebook payload fields are still preserved when useful.

Highlights

Facebook Posts Scraper highlights the parts of public Facebook content that most downstream users actually need.

  • 🚀 Timeline scraping for public profiles and pages
  • 🔗 Direct Facebook post, video, photo, and share-style URL support
  • 💬 Optional top-level comment collection
  • ↪️ Optional per-comment reply expansion
  • 🔁 Optional People who shared this post detail collection
  • 📅 Optional native date filters
  • 💸 Pay-per-event ready billing with clear budget logs

Supported Inputs

Facebook Posts Scraper accepts both timeline targets and direct Facebook post URLs in one actor input.

FieldTypeDefaultWhat it does
usernamestring[]Facebook usernames such as Cristiano, nike
facebook_urlsobject[]Profile/page URLs, direct post URLs, direct video URLs, direct photo URLs, or share-style post URLs
posts_countinteger10Requested number of timeline posts per profile/page
include_individual_postsbooleanfalseWhen on, direct post, video, photo, and share URLs in facebook_urls are scraped as standalone posts
include_commentsbooleanfalseWhen on, top-level comments are collected into comment_details
comments_limitinteger20Requested top-level comments per post
comment_filterstringmost_relevantComment ordering: most_relevant, newest, all_comments
include_comment_repliesbooleanfalseWhen on, replies are collected under each comment in all_replies
comment_replies_limitinteger10Requested replies per collected top-level comment
include_post_share_person_detailsbooleanfalseWhen on, public reshare stories are collected into share_details
share_people_limitinteger10Requested public reshare-story rows per post
posts_newer_thandateOptional lower date bound
posts_older_thandateOptional upper date bound

At least one of username or facebook_urls is required.

Supported URL Formats

Facebook Posts Scraper supports the following public Facebook URL shapes.

Input typeExample
UsernameCristiano
Profile URLhttps://www.facebook.com/Cristiano
People URLhttps://www.facebook.com/people/Page-Name/123456789/
Direct post URLhttps://www.facebook.com/Cristiano/posts/pfbid0Dp9Wrmv1NAkFX1nSkKwLEKftjMSHbDYNBZE7L43y8JnTs77USeJ7cpC5FoGgm3inl
Direct video post URLhttps://www.facebook.com/netflix/videos/2445344335530649/
Direct photo URLhttps://www.facebook.com/photo/?fbid=10123456789012345&set=a.2012345678901234
Share-style post URLhttps://www.facebook.com/share/p/1aocP4P5eR/

Direct post URLs are processed only when include_individual_posts = true.

Output Overview

Facebook Posts Scraper returns one normalized row per scraped Facebook post.

Each dataset item is one Facebook post row.

The actor returns four kinds of data in the same row:

  1. Top-level convenience fields for the most commonly used values.
  2. Grouped sections for engagement, comments, replies, and shares.
  3. Additional endpoint-derived raw rows in additional_endpoint_data for data that is not promoted into the main normalized groups.
  4. Preserved raw Facebook fields for the original payload.

Top-Level Common Fields

Facebook Posts Scraper exposes these top-level fields first so the most useful post data is easy to read and export.

These are the fields most users work with first.

FieldTypeDescription
numberintegerRow number inside the current run
profile_linkstringSource profile URL or direct post source URL
post_idstringFacebook numeric post id
permalink_urlstringCanonical Facebook post URL
created_atstringISO 8601 UTC timestamp
message_textstringPlain-text post message when Facebook exposes it
profile_namestringMain author/page name
profile_idstringMain author/page id
profile_urlstringMain author/page URL
profile_picture_urlstringMain author/page profile image URL
profile_is_verifiedbooleanMain author/page verification flag
reaction_count_totalintegerTotal reactions for the post when available
reaction_count_reducedstringShort reaction label such as 492K
comment_count_totalintegerTotal comments when available
comment_count_reducedstringShort comment label when available
share_count_totalintegerTotal shares when available
share_count_reducedstringShort share label when available
video_view_count_totalintegerVideo views when available
top_reaction_typesarrayReaction names such as Like, Love, Haha
top_reaction_labelsarrayHuman labels such as Love ❤️
top_reactions_breakdownarrayReaction-by-reaction counts
attachment_typesarrayAttachment/media types surfaced from the payload
attachment_countintegerTotal attachment count
photo_attachment_countintegerPhoto attachment count
video_attachment_countintegerVideo attachment count
primary_attachment_typestringMain attachment type
primary_attachment_target_urlstringMain attachment target URL
attachment_target_urlsarrayAll extracted attachment target URLs
primary_image_urlstringMain image URL
image_urlsarrayAll image URLs
video_urls_hdarrayAll HD video URLs
video_urls_sdarrayAll SD video URLs
captions_urlsarrayAll captions URLs
matched_fragment_countintegerPresent when multiple direct-post fragments were merged

Long download-style video and captions links are emitted in the array fields (video_urls_hd, video_urls_sd, captions_urls) rather than duplicated as separate single-string fields.

Grouped Sections

Facebook Posts Scraper uses grouped sections to keep engagement, comments, replies, shares, and endpoint extras easy to understand.

post_engagement

Grouped engagement summary for the main post.

FieldDescription
post_engagement.reactionsReaction totals
post_engagement.commentsComment totals
post_engagement.sharesShare totals
post_engagement.videoVideo view totals

The detailed reaction breakdown stays only in the top-level fields top_reaction_types, top_reaction_labels, and top_reactions_breakdown to avoid duplication.

comment_details

In Facebook Posts Scraper, comment_details is the main grouped block for top-level public comment collection.

Returned when comment collection is enabled. When disabled, this field becomes a guidance object.

FieldDescription
comment_details.enabledtrue or false
comment_details.collection_statusStatus message and pagination policy
comment_details.requestRequested vs returned top-level comment feedback
comment_details.countsTotal, visible, hidden, and returned comment counts
comment_details.selected_filterOrdering mode, token, available modes, and filtering note
comment_details.all_commentsArray of normalized top-level comments

comment_details.all_comments[]

Each top-level comment row contains:

FieldDescription
comment_idGraphQL comment node id
comment_legacy_fbidLegacy Facebook comment id
depth0 for parent comments
created_atISO 8601 UTC timestamp
message_textComment text
comment_linksDirect comment URLs
authorProfile name, id, links, avatar links, verification flag
engagementReactions, top reaction breakdown, reply counts, visibility note
reply_detailsRequested vs returned reply feedback for this comment
attachmentsAttachment counts/details for the comment
all_repliesFull reply rows when reply collection is enabled

Important:

  • There is no top-level comment_replies_details field.
  • Full reply rows live only inside each parent comment under all_replies.
  • When reply collection is off, reply_details and all_replies return guidance instead of rows.

comment_details.all_comments[].all_replies[]

Each reply row contains:

FieldDescription
comment_idReply node id
comment_legacy_fbidReply legacy id
parent_comment_idParent comment id
depth1 for replies
created_atISO 8601 UTC timestamp
message_textReply text
comment_linksDirect reply URLs
authorReply author details
engagementReply reaction totals and breakdown
attachmentsReply attachments/media details

share_details

In Facebook Posts Scraper, share_details is the grouped block for public reshare-story collection.

Returned when share-detail collection is enabled. When disabled, this field becomes a guidance object.

FieldDescription
share_details.enabledtrue or false
share_details.collection_statusStatus message and pagination policy
share_details.requestRequested vs returned share-person feedback
share_details.countsTotal shares, preview count, visible rows, hidden rows, returned rows
share_details.preview_peopleSmall preview list from the tooltip
share_details.all_share_peopleFull normalized reshare-story rows

share_details.all_share_people[]

Each public reshare-story row contains:

FieldDescription
post_idReshare post id
permalink_linksPermalink URLs for the reshare story
created_atISO 8601 UTC timestamp
message_textReshare text
profileSharer profile details
engagementReactions, comments, shares, video views when available
attachmentsMedia details for the reshare story

additional_endpoint_data

This section keeps only endpoint-derived extra data that is not already represented by the top-level fields, comment_details, share_details, or post_engagement.

Typical contents include:

  • share_endpoint_data.share_people

Each share_endpoint_data.share_people[] row is intentionally compact and keeps only extra share-story context such as:

  • story_id
  • story_type
  • should_host_actor_link_in_watch
  • future_of_feed_info
  • attached_story

The nested attached_story summary keeps links in array fields such as permalink_links, image_urls, video_urls_hd, video_urls_sd, and captions_urls when Facebook exposes them.

Raw Facebook Fields

Facebook Posts Scraper still preserves the useful raw Facebook payload fields that commonly matter for downstream work, including fields such as:

  • actors
  • attachments
  • attached_story
  • comet_sections
  • feedback
  • feedback_summary
  • id
  • message
  • owner
  • permalink_url
  • title
  • url
  • video-specific delivery fields for video posts

The exact raw field set varies by post type:

  • Standard timeline story rows include story/feed metadata.
  • Direct video rows include video-delivery fields, playback/caption URLs, dimensions, and video ids.
  • Share-style rows can include different permalink and attached-story structures.

Requested vs Returned Feedback

Facebook Posts Scraper does not silently hide shortfalls.

Facebook Posts Scraper also surfaces requested-versus-returned feedback so users can see when Facebook exposed fewer public rows than requested.

When you request more rows than Facebook publicly exposes, the actor tells you that directly in the grouped sections:

  • comment_details.request
  • comment_details.all_comments[].reply_details.request
  • share_details.request

That feedback shows:

  • requested count
  • returned count
  • available count signal when Facebook exposes one
  • whether more public data may still exist
  • a human-readable message explaining why fewer rows were returned

Billing and Maximum Cost

Facebook Posts Scraper is designed for Apify pay-per-event billing.

Important behavior:

  1. Timeline profile/page rows charge once per returned post, and direct URLs charge once per returned individual post.
  2. Turning on comment, reply, or share-detail collection does not charge by itself. Billing applies only to returned comment rows, reply rows, and share-person rows.
  3. Non-default comment ordering (newest, all_comments) still adds the separate per-post comment-filter surcharge.
  4. Applying date filters still adds the separate per-post date-filter surcharge.
  5. Maximum Cost Per Run only works when the actor is actually running under PAY_PER_EVENT pricing.

Run Logs

Facebook Posts Scraper uses short operational logs so a run is easier to follow.

EmojiMeaning
🧭Run configuration
👥 / 👤Profile queue or current profile
🔗Direct-post queue or current direct post
💬Comment collection
↪️Reply collection
🔁Share-detail collection
📚Pagination policy
📅Date-filter state
💸Billing mode or per-event count summary
🛡️Secret handling
Step completed
/ 🛑Warnings and stop conditions
🏁Run completion

Facebook Posts Scraper FAQ

Why did I get fewer comments, replies, or share-person rows than I requested?

Because Facebook stopped exposing more public rows. The actor reports that clearly in the relevant request block instead of silently pretending the request was fulfilled.

Custom Solutions?

Need a tailored Facebook Posts Scraper setup with custom fields, higher volume, scheduled runs, or integrations with your existing pipeline?

✉️ Contact premiumscraper@gmail.com

Privacy & Compliance

Facebook Posts Scraper collects only publicly available Facebook data and is designed to avoid storing request secrets in exported output.

Use Facebook Posts Scraper responsibly and make sure your collection workflow matches applicable laws, privacy obligations, and platform terms.

  • The actor collects only publicly available Facebook data.
  • No Facebook login, cookies, or private API token is required from the user.
  • No private messages, friend lists, or non-public content are accessed.
  • Facebook request tokens used during scraping stay in memory only and are never written to logs or dataset rows.
  • Proxy credentials and authorization headers are never exposed in actor output.
  • When PAY_PER_EVENT monetization is active, user spending limits are respected and the run stops on budget; when PPE is inactive, the actor logs that maximum cost cannot be enforced for that run.
  • Always ensure your use of scraped data complies with applicable laws and platform terms of service.