Facebook Posts Scraper avatar

Facebook Posts Scraper

Pricing

from $0.79 / 1,000 posts

Go to Apify Store
Facebook Posts Scraper

Facebook Posts Scraper

Facebook Posts Scraper: a Facebook post extractor for public pages, with text, reactions by type, comments and shares counts, video views, photos and links per post, plus each post's comments and replies. Date filters, API access, no login.

Pricing

from $0.79 / 1,000 posts

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

3

Monthly active users

5 hours ago

Last modified

Features

Limited permissions

Share

Facebook Posts Scraper turns public Facebook page and post links into an exportable engagement report: one row per post with its text, reactions by type, comments and shares counts, video views, photos and links. Filter by date, add each post's comments and replies if you want them, and download CSV, Excel or JSON or call it as a Facebook posts API. No login, no cookies, no browser.

🏷️ Page📝 Text❤️ Reactions💬 Comments🔁 Shares🎞️ Type📅 Posted
Humans of New YorkLast year I got an email that Little Humans was go…5,963223110Photo2026-10-13T15:34:09Z
Humans of New YorkHenry might be the nicest shopkeeper in NYC. You c…19,830852699Video2026-09-19T20:18:58Z
Humans of New York“My first end-of-life patient was a 97-year-old ma…154,1543,3893,666Photo2026-09-18T14:24:05Z

$1.49 per 1,000 posts on the Starter plan ($1.79 Free, $1.19 Scale, $0.79 Business). The prefilled 50 posts cost $0.0745 on Starter. Date filters are free, there is no start fee, and comments are an optional add-on at $0.24 per 1,000 comments.

What that run delivered: all 50 posts had the page, text, link, date, reactions, comments and shares. The 9 video posts each had a video link, duration and view count. 34 of 50 carried a top-comment preview, even with full comments off. 8 had an external link. Fields a post doesn't have come back empty (null).

Next steps with the links in your rows:

  • Comments: paste a post's url into Facebook Comments Scraper for every comment and reply. On 2026-10-27 this Actor returned https://www.facebook.com/humansofnewyork/posts/pfbid0w1ngofsomY6MqbaEUVPsuqEUBtqcw74Qo8hnoeCGDmXhW49fwe4ifQ5tdysrSWJKl, and the Comments Scraper read 100 comments and replies from it ($0.024 on Starter).
  • Videos: paste a video post's url (https://www.facebook.com/reel/2141054613462232/ in that run) into Facebook Video Downloader for MP4 links in HD and SD and the audio track.
  • Advertisers: an ad row from Meta Ad Library, Facebook Video Ads or Facebook Ads Monitor has the brand's pageUrl: paste it here to see its organic posts.

Start in three steps

  1. Paste page links (https://www.facebook.com/humansofnewyork, or just humansofnewyork), or single post links. The form comes with one page and 50 posts to try.
  2. Choose how many posts per page (the newest first), a date window if you want one, and whether to collect each post's comments.
  3. Run, then export. Open the dataset's Overview view and download CSV, Excel or JSON, or schedule the run to watch a page daily.

Copy/paste input for the API (Actor id deepmine/facebook-posts-scraper), the prefilled run:

{
"startUrls": [{"url": "https://www.facebook.com/humansofnewyork"}],
"resultsLimit": 50
}

To get only recent posts add "onlyPostsNewerThan": "30 days" (free). It also takes 2026-01-31 or an ISO time.

Input

  • Facebook page or post links (startUrls): pages like https://www.facebook.com/humansofnewyork (or just humansofnewyork), or single post links.
  • Posts per page (resultsLimit): the newest N posts of each page; empty = every post the page shows.
  • Video transcripts (captionText): each video's captions as plain text in transcriptText, where the video has captions. Free: no add-on charge.
  • Posts newer than / older than (onlyPostsNewerThan, onlyPostsOlderThan): 2026-01-31, an ISO time, or 7 days, 3 months. Free: no add-on charge.
  • Comments (optional section, off by default: includeComments, maxCommentsPerPost, viewOption, includeNestedComments, onlyCommentsNewerThan): comments go to a separate Comments dataset, at $0.24 per 1,000 comments. Its link is in the run summary (OUTPUT record, commentsDataset: id, API items URL and Console URL); the comment fields are listed in .actor/dataset_comments_schema.json.
  • Advanced: Rows shaped like apify/facebook-posts-scraper (apifyCompatible, see below), the proxy, and whether a refused call is retried on a residential IP.

Coming from apify/facebook-posts-scraper?

The main input keys are the same (startUrls, resultsLimit, onlyPostsNewerThan, onlyPostsOlderThan, captionText; maxPosts and commentsSortOrder work as aliases), so most inputs run as they are.

All 38 column names in apify's dataset exist here under the same name, including the objects user, media, textReferences, pageAdLibrary, actionLink, previewTarget and sharedPost. Two of their columns hold objects where ours hold texts by default, so turn on Rows shaped like apify/facebook-posts-scraper ("apifyCompatible": true) if your code reads them as objects:

FieldDefault rowsWith apifyCompatible
topCommentsthe comments' texts (strings); the objects are in topCommentsDetailsthe comment objects (commentId, commentUrl, id, feedbackId, text, date, likesCount as a string, profileName, profileId, profileUrl, profilePicture, threadingDepth, author), as theirs
collaboratorsnames; the objects (id, name, profileUrl) are in collaboratorsDetailsthe objects, and [] on a post without collaborators, as theirs
Empty fieldsnull, every row has every keyleft out, as theirs (so row.get("sharedPost", {}) works)
Times2026-10-13T15:34:09Z2026-10-13T15:34:09.000Z, as theirs

Everything else is the same in both: the flat columns stay, so nothing that reads them changes. With the switch on, code that reads the fields we test against apify's own rows runs unchanged: topComments[0].text and .author.name, actionLink.url and .link_display, previewTarget.external_url, sharedPost.text, .url and .user.name, collaborators[].name, media[0].photo_image.width, user, pageAdLibrary and textReferences. Where the values differ:

  • pageName is the page's display name ("BBC News"); apify's is often the page's username ("bbcnews"). user.name is the display name in both.
  • A video's media object has its size, length and publish time but not Facebook's player and delivery fields: the video file is videoUrl.
  • collaborators objects come from Facebook as {id, name} (plus profileUrl here). None of the apify rows we compared had collaborators, so we couldn't check theirs key by key.

Output

One row per post, the same keys in every row (null when Facebook doesn't show a value):

thumbnailUrl, pageName, text, textSnippet, url, likes (all reactions), comments, shares, viewsCount, videoPostViewCount, playCount, time, postType, isVideo, videoDurationSeconds, videoUrl, captionsUrl, captionsLocale, transcriptText, reactionLikeCount, reactionLoveCount, reactionCareCount, reactionHahaCount, reactionWowCount, reactionSadCount, reactionAngryCount, topReactionsCount, liveViewerCount, imageUrls, mediaUrls, mediaIds, imageCaptions, mediaCount, link, previewTitle, previewDescription, previewSource, previewImageUrl, previewTargetUrl, actionLinkTitle, actionLinkUrl, hashtags, mentions, textLinks, collaborators, collaboratorsDetails, paidPartnership, sharedPostId, sharedPostUrl, sharedPostText, sharedPostAuthor, sharedPostAuthorId, sharedPostAuthorUrl, sharedPostTime, topComments, topCommentsAuthors, topCommentsDetails, userName, userId, userProfileUrl, userProfilePic, pageAdLibraryId, isBusinessPageActive, postId, feedbackId, topLevelUrl, timestamp, timeCreated, timestampCreated, facebookUrl, the apify-style objects below, inputUrl, scrapedAt.

apify-style objects. Every row also has facebookId (the page's id) and the objects user (id, name, profileUrl, profilePic), pageAdLibrary (id, is_business_page_active), textReferences (the text's hashtags, mentions and links as Facebook names them), media (__typename, id, thumbnail, url, ocrText of each photo, video or link preview, then Facebook's own details: a photo's photo_image with its width and height, accent_color, photo_product_tags, feedback; a video's width, height, playable_duration_in_ms, publish_time), actionLink (the post's button, like "Shop now": title, link_display, url, link_type), previewTarget (what a link preview opens, e.g. {__typename: "ExternalUrl", external_url, id}) and sharedPost (a share's original: postId, url, time, timestamp, user, pageName, text, textReferences, link, isVideo, media, paidPartnership). topCommentsDetails objects also carry id, feedbackId and the commenter's author object.

Comments rows: profilePicture, profileName, text, textSnippet, commentUrl, likesCount, commentsCount, date, threadingDepth, replyToCommentId, replyToName, reactions by type, attachmentImageUrls, attachmentType, mentions, isAuthorVerified, profileUrl, profileId, postTitle, postDescription, postUrl, postId, pageName, facebookId, commentId, id, feedbackId, timestamp, facebookUrl, inputUrl, scrapedAt.

Picture and video links are Facebook's signed CDN links: they expire after a few days, so download what you keep. Logged out, Facebook shows many commenters with an anonymous id and no profile link.

Video posts carry viewsCount (plays, as Facebook counts them), videoPostViewCount (views of the video in this post) and playCount. A post that shares someone else's video has no counters of its own. A video with captions names its captions file (captionsUrl, an .srt) and its language (captionsLocale); with Video transcripts on, transcriptText holds the captions as plain text (up to 50,000 characters).

A post that shares another post keeps its own words in text (empty when it adds none, postType "Share") and the original's id, text, link, author (name, id, link) and time in sharedPostId, sharedPostText, sharedPostUrl, sharedPostAuthor, sharedPostAuthorId, sharedPostAuthorUrl and sharedPostTime, and the whole original in sharedPost.

Pricing

Pay per post, and per comment when you ask for comments. No start fee, no charge for date filters. A run never charges past your spending limit.

Apify planPer 1,000 postsPer 1,000 comments
Free$1.79$0.24
Starter$1.49$0.24
Scale$1.19$0.24
Business$0.79$0.24

Each post is charged once per run, however many of your links list it.

More Facebook and Meta Actors

Did it help?

If the data was useful, a short review on this page helps other people find the Actor. Missing a field, or a page that doesn't come back the way you expect? Open an issue on the Issues tab and we'll look into it.

⌂ 换网址