Monitor posts from public Facebook pages and public groups, or extract one public post. Export stable post IDs and URLs, visible captions, publication dates, media, author labels, and engagement for social listening, campaign tracking, and research—without Facebook credentials.
Buyer workflows
Use the Actor to maintain brand and creator feeds, monitor public communities, compare visible engagement over time, or incrementally collect campaign posts after a saved cutoff.
Input recipes
{
"startUrls": [{"url":"https://www.facebook.com/nasa/"}],
"maxPostsPerUrl": 20,
"onlyPostsNewerThan": "2026-09-22T00:00:00.000Z"
}
startUrlsaccepts public page, public group, and direct post URLs.maxPostsPerUrlis a per-source limit from 1 to 500.onlyPostsNewerThanis an optional ISO date/time boundary for recurring exports.proxyConfigurationoptionally configures Apify Proxy under Advanced options.
Malformed or unsupported URLs are reported and skipped, so other valid sources can continue.
Output
{
"postId": "1234567890",
"url": "https://www.facebook.com/nasa/posts/1234567890/",
"sourceUrl": "https://www.facebook.com/nasa/",
"sourceType": "page",
"authorName": "NASA",
"authorUrl": "https://www.facebook.com/NASA/",
"text": "Visible public post text",
"timestamp": "2026-09-28T18:00:00.000Z",
"media": [{"type":"image","url":"https://..."}],
"reactionsCount": 1200,
"commentsCount": 82,
"sharesCount": 31,
"scrapedAt": "2026-09-29T20:00:00.000Z"
}
Fields Facebook does not expose anonymously remain null; values are never inferred. Results exclude nested comments and replies.
Support, limits, and privacy
Facebook varies its anonymous web surface and may show login walls or rate limits. The Actor uses only what an anonymous browser can see. It does not accept cookies or credentials and does not collect private groups or profiles, messages, follower-only content, member lists, comments/replies, or inferred personal data. A source failure is reported truthfully and does not generate placeholder records.
API example
const run = await client.actor('fetch_cat/facebook-posts-scraper').call({
startUrls: [{ url: 'https://www.facebook.com/nasa/' }],
maxPostsPerUrl: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
The same input works with Apify schedules, webhooks, API, and MCP integrations.