Facebook Posts Scraper
Pricing
from $0.79 / 1,000 posts
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
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
3
Monthly active users
16 hours ago
Last modified
Categories
Features
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 York | Last year I got an email that Little Humans was go… | 5,963 | 223 | 110 | Photo | 2026-10-13T15:34:09Z |
| Humans of New York | Henry might be the nicest shopkeeper in NYC. You c… | 19,830 | 852 | 699 | Video | 2026-09-19T20:18:58Z |
| Humans of New York | “My first end-of-life patient was a 97-year-old ma… | 154,154 | 3,389 | 3,666 | Photo | 2026-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
urlinto Facebook Comments Scraper for every comment and reply. On 2026-10-27 this Actor returnedhttps://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
- Paste page links (
https://www.facebook.com/humansofnewyork, or justhumansofnewyork), or single post links. The form comes with one page and 50 posts to try. - Choose how many posts per page (the newest first), a date window if you want one, and whether to collect each post's comments.
- 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 likehttps://www.facebook.com/humansofnewyork(or justhumansofnewyork), 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 intranscriptText, where the video has captions. Free: no add-on charge. - Posts newer than / older than (
onlyPostsNewerThan,onlyPostsOlderThan):2026-01-31, an ISO time, or7 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 (OUTPUTrecord,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:
| Field | Default rows | With apifyCompatible |
|---|---|---|
topComments | the comments' texts (strings); the objects are in topCommentsDetails | the comment objects (commentId, commentUrl, id, feedbackId, text, date, likesCount as a string, profileName, profileId, profileUrl, profilePicture, threadingDepth, author), as theirs |
collaborators | names; the objects (id, name, profileUrl) are in collaboratorsDetails | the objects, and [] on a post without collaborators, as theirs |
| Empty fields | null, every row has every key | left out, as theirs (so row.get("sharedPost", {}) works) |
| Times | 2026-10-13T15:34:09Z | 2026-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:
pageNameis the page's display name ("BBC News"); apify's is often the page's username ("bbcnews").user.nameis the display name in both.- A video's
mediaobject has its size, length and publish time but not Facebook's player and delivery fields: the video file isvideoUrl. collaboratorsobjects come from Facebook as{id, name}(plusprofileUrlhere). 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 plan | Per 1,000 posts | Per 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
- Facebook Pages Scraper: paste the same page links for the business behind them: emails, phone numbers, websites and addresses.
- Facebook Comments Scraper: every comment and reply under a post, reel or video you found here.
- Facebook Groups Scraper: the posts of public groups.
- Facebook Marketplace Scraper: Marketplace listings and their sellers.
- Facebook Reels Scraper: a page's reels with views and audio.
- Facebook Video Downloader: MP4 and audio links for the video posts you found here.
- Meta Ad Library: the ads the same page runs. Paste its page link as an advertiser and compare its organic posts with its paid ones.
- TikTok Search API and Instagram Reels Search: the same brand or topic on TikTok and Instagram.
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.