Facebook Page Posts Scraper - Reactions, Comments & Dates avatar

Facebook Page Posts Scraper - Reactions, Comments & Dates

Pricing

from $1.20 / 1,000 post scrapeds

Go to Apify Store
Facebook Page Posts Scraper - Reactions, Comments & Dates

Facebook Page Posts Scraper - Reactions, Comments & Dates

Scrape the public posts of any Facebook Page, newest first: text, links, date, reactions by type, comments, shares, video views, photos and videos, a top comment and the Page's followers. Date window, filters and monitor mode for new posts. Many Pages per run. No login or cookies.

Pricing

from $1.20 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

What does Facebook Page Posts Scraper do?

Facebook Page Posts Scraper collects the public posts of any Facebook Page, newest first, and turns each one into a structured row: the full text and its links, the publish date, reactions by type, comments, shares, video views and plays, photos and videos, a top comment, and the Page's own name, id and follower count. Give it a list of Pages and it reads each timeline the way a signed-out visitor sees it - no login, no cookies, no API key.

Facebook Page Scraper - Facebook Posts Scraper - Facebook Page Timeline API - Facebook Page Monitor

A public Facebook Page timeline that Facebook Page Posts Scraper turns into rows

  • Any public Page, many per run: paste Page URLs, usernames or numeric ids; each Page is read newest post first, with Facebook's own date window.
  • Every engagement number: reactions with the like / love / care / haha / wow / sad / angry breakdown, comments, shares, video views and plays - filled on 100% of a 150-post test run.
  • Page context on every row: Page id, name, URL, followers, "talking about this" and the Page's Ad Library id, so posts from different Pages compare directly (engagement_rate).
  • Links, mentions and rich text: outbound links unwrapped from Facebook's redirect, mentioned Pages, hashtags, and message_rich with the links kept as HTML.
  • Filters: date window, post type, minimum reactions, minimum comments and a keyword filter.
  • Monitor mode: remembers each Page's newest post and returns only newer ones - pair it with a schedule for a feed of new posts.
  • Export anywhere: JSON, CSV, Excel, XML, RSS; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP.

What data can you get from a Facebook Page?

๐Ÿ”— Post URL and id (`url`, `post_id`)๐Ÿ“ Full text (`message`) and `message_rich`๐Ÿ“… Publish date (`timestamp`, `published_at`)
๐Ÿ“„ Page id, name, URL (`source_id`, `source_name`, `source_url`)๐Ÿ‘ฅ Page followers, talking about, were here๐Ÿ“ฃ Page Ad Library id (`page_ad_library_id`)
๐Ÿ‘ Reactions total and by type (`reactions`)๐Ÿ’ฌ Comments and shares (`comments_count`, `reshare_count`)๐Ÿ“ˆ Engagement and engagement rate
โ–ถ๏ธ Video views, plays, duration, thumbnail, captions๐Ÿ–ผ๏ธ Photos and albums (`image`, `images`, `image_alt`)๐ŸŒ Outbound link and preview (`external_url`, `external_link`)
๐Ÿ” Shared post URL and author (`attached_post`)๐Ÿท๏ธ Hashtags, mentioned Pages, collaborators๐Ÿ’ฌ A top comment on every row; ~10 with the details add-on

On a 150-post test run (Starbucks, The New York Times, Red Bull; 50 each) every row had the text or media, date, Page followers, reactions by type, comments and shares; 48% were videos (views and plays on every one), 20% carried a link preview, 82% came with a top comment.

How to scrape Facebook Page posts with Facebook Page Posts Scraper

  1. Create a free Apify account - $5 of monthly credit, no card needed.
  2. Open Facebook Page Posts Scraper and click Try for free.
  3. Paste your Pages into Facebook Pages (one per line) and set Max posts per Page.
  4. Optionally set Posted after / Posted before, a post type or minimum reactions.
  5. Click Start. Rows stream into the dataset as each part of each timeline arrives.
  6. Open the Storage tab and Export as JSON, CSV or Excel - or let a schedule run it for you.

โฌ‡๏ธ Input

ParameterTypeDescription
๐Ÿ” What to scrape
startUrlsListRequired (defaults to the sample Page NASA). Page URLs, usernames or numeric ids, e.g. https://www.facebook.com/NASA, starbucks, 100044561550831; profile.php?id= and /people/<name>/<id> links work too.
๐ŸŽฏ Filters (sent to Facebook as its timeline window)
startDateString2026-09-01, 24 hours, 7 days, 3 weeks, 2 months. Facebook starts the timeline there; every post is re-checked.
endDateString2026-06-30 (the whole day included) or relative, e.g. 30 days.
โœ‚๏ธ Refine results
postTypeSelectall, photo, video, link, text, event or share.
minReactionsIntegerKeep only posts with at least this many reactions. Default 0.
minCommentsIntegerKeep only posts with at least this many comments. Default 0.
keywordFilterStringKeep only posts whose text, link title or event name contain a word (sale, discount = any).
โž• Extra data
includePostDetailsBooleanAdds top_comments (up to about 10), video_files (SD/HD) and the view count from each post's public page - charged as post-details per post that gets details.
๐Ÿ” Monitoring
monitorModeBooleanReturn only posts newer than the newest one already read, per Page. Pair with a schedule.
monitorStoreNameStringKey-value store that keeps the per-Page memory. Default facebook-page-posts-monitor.
๐Ÿ“ฆ Output
maxPostsPerPageIntegerDefault 20; 0 = the whole public timeline, up to 2,000 per Page.
maxItemsIntegerHard cap for the whole run. 0 = none.
compactBooleanCore fields only, sized for AI agents and MCP.
โš™๏ธ Advanced
proxyConfigurationObjectResidential US by default (see below).
maxConcurrencyIntegerPages read in parallel. Default 3, max 8.

Input JSON

{
"startUrls": ["https://www.facebook.com/Starbucks", "nytimes", "https://www.facebook.com/redbull"],
"startDate": "30 days",
"minReactions": 100,
"maxPostsPerPage": 50,
"monitorMode": false
}

Give the Page itself, not a post or a group

Any address that leads to a Page works: the Page URL, its username (redbull), its numeric id, or a post URL of that Page (its timeline is read). Group URLs are not Pages and are reported as invalid input, as are search, event and Watch links. A Page that does not exist or is shown only to signed-in users (some age-restricted brands) ends as not_found or login_required in the run summary and costs nothing.

Use the date window instead of a big cap

startDate and endDate go to Facebook as its own timeline window, so the run reads only the posts inside it: a run for 1-15 September 2026 on NASA's Page read 9 posts in 3 requests to deliver 8. A large maxPostsPerPage without a window reads the timeline from today backwards until the cap.

Keep the residential proxy for timelines

Facebook rate-limits Page timelines on Apify's datacenter and direct IPs (measured: every request refused), and it hides news Pages from visitors in some countries (Canada). The default residential US proxy served every timeline tested; the actor rotates to a fresh session when Facebook refuses one.

โฌ†๏ธ Output

Every post becomes one dataset item. Here is the table view of a run for Starbucks, The New York Times and Red Bull:

Facebook Page Posts Scraper output table with Page posts, reactions, comments, shares and views

And one real row from that run (trimmed):

{
"post_id": "1582731997219696",
"type": "status",
"url": "https://www.facebook.com/Starbucks/posts/pfbid0DJSiUv3UQpCbAxHvVgqDF5pXfr882F6XX3vJdyrHgFmdBkgfRMvp5EPCmofarNDAl",
"message": "October 1st and Iโ€™m emotionally available for pumpkin everything.",
"published_at": "2026-10-01T11:57:25.000Z",
"source_type": "page",
"source_id": "100064487329582",
"source_name": "Starbucks",
"source_url": "https://www.facebook.com/Starbucks",
"page_followers": 34082879,
"page_ad_library_id": "22092443056",
"reactions_count": 18785,
"comments_count": 900,
"reshare_count": 2784,
"reactions": { "like": 12890, "love": 5377, "haha": 323, "care": 172, "wow": 12, "sad": 6, "angry": 5 },
"engagement_count": 22469,
"engagement_rate": 0.06592
}

Facebook Page post fields

FieldTypeWhat it isFill on the 150-post run
post_id, url, story_id, comments_idstringPost id, permalink, story id, feedback id100%
typestringvideo, link, photo, album, event, share, marketplace or status100%
message, message_richstringFull text; the same text as HTML with its links (message_rich only when the text has links)99% / 31%
timestamp, published_atinteger, ISO 8601Publish time100%
source_type, source_id, source_name, source_url, input_urlstringThe Page the post came from and your input line100%
page_followers, page_talking_about, page_were_hereintegerThe Page's counters (were here = places only)100% / 100% / 33%
page_ad_library_id, page_ad_library_activestring, booleanThe Page id Meta's Ad Library uses and Facebook's business-active flag99%
authorobjectid, name, url, profile_picture_url, type, is_verified100%
reactions_count, comments_count, reshare_count, engagement_countintegerTotals; engagement = reactions + comments + shares100%
reactionsobjectlike, love, care, haha, wow, sad, angry; an unlisted type is 0 when the listed ones add up to the total, else null100%
engagement_ratenumberEngagement as a % of the Page's followers100%
video_view_count, video_play_count, video, video_id, video_thumbnail, video_duration_ms, video_captions_urlmixedVideo posts48% (every video post)
image, images, album_count, image_altobject, arrayFirst image, every image of an album, accessibility caption82% / 15%
external_url, external_link, linksstring, object, arrayOutbound link (unwrapped), its preview card, every link in the text33% / 20% / 13%
attached_post_url, attached_poststring, objectThe original post when this one is a share2%
event, location, collaboratorsobject, arrayEvent posts, tagged place, co-authorsas published
hashtags, mentionsarrayHashtags and the Pages or profiles mentioned in the text1% / 17%
top_commentobjectThe top comment Facebook prints with the post: text, date, author, reactions82%
top_comments, video_files, details_statusarray, objectUp to ~10 comments and the video SD/HD files - details add-ondetails on 11 of 12 posts of a platform test: comments on 7 of 7 regular posts, files on 5 of 6 videos

How can I use Facebook Page posts data?

  • ๐Ÿ“Š Competitor benchmarking - run your competitors' Pages weekly and compare engagement_rate, reactions by type and posting frequency.
  • ๐Ÿ“ฐ Media and news monitoring - follow publishers' Pages with monitorMode and get every new post, its link and its engagement.
  • ๐ŸŽฏ Social media reporting - pull a client's Page for last month with startDate / endDate and chart reactions, comments, shares and views.
  • ๐Ÿ“ฃ Ad and creative research - page_ad_library_id takes you to the Page's ads in Meta's Ad Library; postType: video with minReactions finds the creatives that work.
  • ๐Ÿ”Ž Content discovery - sort a Page's history by reshare_count or video_play_count to see which formats travel.
  • ๐Ÿค– AI and research teams - feed compact rows to an LLM for summaries, topic tagging or sentiment; top_comment adds the audience's voice.

How much does it cost to scrape Facebook Page posts?

Facebook Page Posts Scraper is pay-per-result: $1.20 per 1,000 posts, no start fee. You only pay for the posts you get. The optional post details are $1.00 per 1,000 posts that receive them.

PostsCostWith post details
10$0.012$0.022
100$0.12$0.22
1,000$1.20$2.20
10,000$12.00$22.00

Apify platform usage (compute and residential proxy) is included in these prices. Measured on the platform: 10 posts in 6-10 seconds, 60 posts from two Pages in 21 seconds (256 MB, the default), 150 posts from three Pages in 30 seconds, 300 posts from one Page in 159 seconds (512 MB), with a peak of 42-81 MB of memory.

Facebook Page posts in your tools: integrations, API, scheduling & MCP

  • Schedules: run it hourly, daily or weekly from the Schedules tab; with monitorMode each run returns only the posts published since the previous one.
  • Webhooks: fire a URL when a run finishes - push new posts to your CRM, Slack or a sheet.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable, Slack via Apify integrations.
  • API: call it from Node.js or Python with apify-client - code on the API tab and the Apify API reference.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for a Page's latest posts in plain language; set compact: true to keep rows small.

More social media scrapers by TopApi

๐Ÿ”Ž Facebook Search Posts Scraper - public posts found by keyword, any Page or group๐Ÿ›’ Facebook Marketplace Scraper - listings, prices and sellers by city and keyword๐Ÿ“ธ Instagram Scraper - posts, reels, hashtags and profiles
๐ŸŽต TikTok Scraper - videos, hashtags, profiles and search๐ŸŽฌ TikTok Video Scraper - single videos with stats and downloads๐Ÿฆ X Profile Scraper - X (Twitter) profiles and counters
โ–ถ๏ธ YouTube Shorts Scraper - Shorts by channel, hashtag or search๐Ÿ“ Google Maps Reviews Scraper - reviews, ratings and owner replies๐Ÿ’ผ Indeed Jobs Scraper - job listings with descriptions
๐ŸŒ Similarweb Scraper - website traffic and competitors๐Ÿ”Ž All TopApi actors - monitor-ready scrapers for schedules, APIs and AI agents

Limits & empty runs

  • Speed: Facebook serves a Page timeline 3 posts per request after a first page of about 12, so a deep run takes time - 300 posts from one Page took 159 seconds (98 requests, none refused). Several Pages run in parallel (maxConcurrency).
  • Depth: up to 2,000 posts per Page per run. How far back that reaches depends on the Page: 300 NBA posts covered one week, 3 Coca-Cola posts went back to 2022. The date window is the cheaper way to reach older posts.
  • Pinned posts: the timeline Facebook shows a signed-out visitor leaves out the Page's pinned post, so there is no pinned flag.
  • Reactions by type are the types Facebook lists on the post; when they do not add up to the total, the unlisted types are null, not zero.
  • Comments: each row carries one top comment; the details add-on adds the top-level comments Facebook shows a visitor (up to about 10), not the full thread. Reels show no comment list to visitors, and event posts have no post page, so they get video files or details_status: unavailable and the add-on is not charged for an unavailable one.
  • Empty dataset: the Page has no public posts in your window, every post was removed by your filters, or monitor mode found nothing new - the status message says which, and nothing is charged.
  • Not available signed-out: private profiles, restricted-audience posts, full comment threads, reactor lists. Media and avatar URLs are signed CDN links that expire after a few hours.

FAQ

How many posts can Facebook Page Posts Scraper collect from one Page?

Up to 2,000 per Page per run (maxPostsPerPage: 0), for as many Pages as you list, within the run's time limit. On the platform 300 posts from one Page took 159 seconds and 150 posts from three Pages 30 seconds.

Can I run Facebook Page Posts Scraper on a schedule to get new posts automatically?

Yes. Save your input as a task with monitorMode: true, open Schedules and pick the cadence. Each run asks Facebook only for posts newer than the newest one it already read, so a check with nothing new reads a few hundred bytes per Page and delivers nothing. Give each feed its own monitorStoreName.

Can I scrape Facebook Page posts from a date range?

Yes. startDate and endDate accept absolute dates or relative values such as 30 days. The window is sent to Facebook, which starts the timeline inside it, and every post is re-checked before delivery.

Does Facebook Page Posts Scraper return comments?

Every row has comments_count and one top_comment. With includePostDetails the actor adds top_comments (the top-level comments Facebook shows signed-out, up to about 10, with text, date, author and reactions) plus video_files and the view count for videos.

Can I scrape several Facebook Pages in one run?

Yes. Put one Page per line in startUrls; maxPostsPerPage caps each Page and maxItems the whole run. Every row carries source_name, source_url and input_url, so the Pages stay apart in one dataset.

Can I integrate Facebook Page Posts Scraper with other apps?

Yes - Make, Zapier, n8n, Google Sheets, Slack and more via Apify integrations, or use webhooks to trigger an action when a run finishes.

Can I use Facebook Page Posts Scraper with the Apify API?

Yes. Use apify-client for Node.js or Python; the API tab has ready-to-paste code for starting runs and fetching datasets.

Can I use Facebook Page Posts Scraper through an MCP server?

Yes. Open the MCP tab, connect your MCP client (Claude Desktop, Cursor and others) and ask for a Page's recent posts in plain language. compact: true keeps each row to the core fields.

Do I need a Facebook account, cookies or an API key for Facebook Page Posts Scraper?

No. The actor reads only what Facebook shows a signed-out visitor; you pass Page addresses and nothing else. It never asks for your cookies or session.

Why did my Facebook Page Posts Scraper run return no results?

Most often the date window held no posts, every post was removed by a filter (the status message lists the counts), or monitor mode had nothing new. A Page that does not exist or needs a login is listed as not_found / login_required in the run summary. Changing the proxy away from residential makes Facebook refuse the timeline.

Facebook Page Posts Scraper extracts only publicly available posts; it does not log in or collect private data. Results may still contain personal data (for example in top comments), which is regulated by laws such as GDPR. Make sure you have a legitimate purpose before you use it, and consult a lawyer if you are unsure.

Your feedback

We keep improving Facebook Page Posts Scraper. Found a bug or missing a field? Open an issue on the Issues tab.