Facebook Posts Scraper

v1.0.2$0.0075/postSignal Detection

Last updated November 9, 2026

Get posts from public Facebook Pages with date, text, reactions, comments, shares, and post link. No login and no cookies. Pages that refuse and addresses that are not Pages return a free row.

Install

bash
npx @mambalabsdev/mcp-facebook-posts-scraper

Every tool here also runs hosted, with no install at all, through Apify's MCP endpoint.

Features

  • One row per post: date, text, reactions, comments, shares, media type, and link.
  • Public Pages only. Groups and personal profiles return a free row.
  • A date cutoff per run and a post limit per Page.
  • A Page that refuses returns a free row that says so.
  • Pay per event: Post row at $0.0075.

Input

pagesarrayoptional

Public Page names or facebook.com addresses, for example NASA. Groups and personal profiles are not read. In Clay, put the column inside a one item list.

max_posts_per_pagestringoptional

Text number from 1 to 500. Default 20.

since_datestringoptional

Optional date like 2026-01-31. Reading stops at the first post older than this.

max_charge_usdstringoptional

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

Output schema

json
{
  "row_type": "string",
  "input": "string",
  "post_id": "string",
  "post_url": "string",
  "posted_at": "string",
  "text": "string",
  "reactions": "integer",
  "comments": "integer",
  "shares": "integer",
  "media_type": "string",
  "link_url": "string",
  "page_id": "string",
  "page_name": "string",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.0075per post
EventFree plan price
Post row$0.0075
Actor Start$0.003

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 200 posts. Any paid Apify plan removes the cap.

Limits

  • Public Pages only. Groups, personal profiles, and private content are not read. Comment text and the names of people who commented or reacted are not returned.
  • Some Page reads are refused. In tests on 2026-11-06, 5 of 21 first reads on the Apify proxy pool returned a redirect page or timed out instead of the Page (Microsoft, UNICEF, Samsung, Spotify, Walmart), and UNICEF read correctly in a later run. A refused Page returns a free row and is not retried on another address, so run it again later. A timeout gets one more read.
  • A Page name that does not exist reads the same as a refused Page, because Facebook answers both with a page that holds no data.
  • The paging call can change. Later posts depend on an internal Facebook call ID that Facebook rotates. When it changes, each Page returns its first post and a free partial row until this actor is updated.
  • Tested on 2026-11-06 up to 30 posts on each of 3 Pages and 12 posts on another, with no login wall. Deeper reads were not measured. max_posts_per_page allows 500.
  • About 2.5 seconds per post. A run of 5 Pages at 30 posts each took about 4 minutes.
  • Posts carry what a logged out US visitor sees. Dates are UTC. A post with no text has an empty text.
  • Each post costs more than some Store rivals, because later posts are read on residential exits. A run with max_posts_per_page set to 1 reads only the first post on each Page.
  • Facebook's terms restrict automated collection. You are responsible for how you use the data, including any personal data that appears in a post.