Facebook Page Posts avatar

Facebook Page Posts

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Facebook Page Posts

Facebook Page Posts

Scrape recent public posts from a Facebook page: text, timestamp, reaction count, comment count, and share count.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Facebook Page Posts Scraper

Fetch recent public posts from any Facebook page in bulk — post text, attachments, reaction count, comment count, share count, permalink, and timestamp — as a clean structured JSON feed.

Why use this actor

  • No account / no login required — just give it a Facebook page handle (nasa) or full URL.
  • No API key needed — Facebook's public Pages API has been deprecated for years; this actor returns the same data the public web app shows.
  • Full post payload — text body, attached media (images and videos with width/height), permalink, owner name, owner profile picture, and a UTC createdAt timestamp.
  • Engagement countersreactionCount, commentCount, and shareCount per post.
  • Paginated feed — set maxPosts and the actor walks the feed cursor automatically until the limit is hit or the page runs out of posts.
  • Stable JSON output suitable for pipelines, spreadsheets, and databases — every row carries _input, _source, _scrapedAt envelope fields so you can join results back to your input list.

How it works

  1. You provide a list of Facebook page handles (e.g. nasa, meta) or full page URLs.
  2. The actor opens each page the same way a logged-out browser would, resolves the page's numeric ID, then walks the posts feed page by page.
  3. Each post is flattened into one dataset row with text, media, counters, and timestamp.
  4. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.

Input

{
"pages": [
"nasa",
"https://www.facebook.com/meta"
],
"maxPosts": 25,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["DATACENTER"]
}
}
FieldTypeDescription
pagesarrayList of Facebook page handles (nasa) or full page URLs (https://www.facebook.com/meta). Numeric page IDs are also accepted.
maxPostsintegerMax posts returned per input page. Default 25, range 1200. Pagination is handled automatically.
proxyConfigurationobjectApify Proxy settings. Datacenter proxy works for most pages; switch to Residential if a page rate-limits aggressively.

Output

Input: nasa, maxPosts: 3

{
"_input": "nasa",
"_pageId": "100044561550831",
"_source": "S1-primary",
"_scrapedAt": "2026-05-18T11:42:08.187026+00:00",
"postId": "1524998752328829",
"ownerId": "100044561550831",
"ownerName": "NASA",
"ownerProfileUrl": "https://www.facebook.com/NASA/",
"ownerImageUrl": "https://scontent.fyyz1-1.fna.fbcdn.net/v/t39.30808-1/...",
"createdAt": "2026-05-13T15:30:00+00:00",
"createdAtEpoch": 1778506200,
"text": "Planning is underway for Artemis III, our next mission to land humans on the Moon...",
"permalink": "https://www.facebook.com/NASA/posts/1524998752328829",
"reactionCount": 12400,
"commentCount": 291,
"shareCount": 409,
"attachments": [
{
"type": "Photo",
"url": "https://www.facebook.com/NASA/photos/1524998752328829",
"id": "1524998745662163",
"imageUrl": "https://scontent.fyyz1-1.fna.fbcdn.net/v/t39.30808-6/...",
"width": 2048,
"height": 1365
}
]
}
FieldTypeDescription
_inputstringThe handle or URL exactly as you supplied it. Use this to join results back to your input list.
_pageIdstringFacebook's numeric page ID (stable across handle changes).
_sourcestringInternal tag for the path used to fetch the record. S1-primary means the fastest, richest path; values starting with S2-fallback indicate a fallback was used.
_scrapedAtstringISO-8601 UTC timestamp when the record was scraped.
postIdstringFacebook's numeric post ID.
ownerIdstringNumeric ID of the page that authored the post.
ownerNamestringDisplay name of the page (e.g. NASA).
ownerProfileUrlstringCanonical URL of the page.
ownerImageUrlstringURL of the page's profile picture.
createdAtstringISO-8601 UTC publication time.
createdAtEpochintegerSame value as createdAt expressed as Unix epoch seconds.
textstringFull post body text. null for media-only posts.
permalinkstringPublic URL of this specific post.
reactionCountintegerTotal reactions (Like, Love, Care, Haha, Wow, Sad, Angry combined). Facebook rounds this for high-volume posts.
commentCountintegerTotal comments on the post.
shareCountintegerTotal shares of the post.
attachmentsarrayAttached media. Each entry has type (Photo, Video, etc.), url (permalink to the media), id, imageUrl (CDN URL of the image or video thumbnail), and width/height. Empty array for text-only posts.

Error envelope

Pages that can't be resolved or fetched return a structured error instead of crashing the run:

{
"_input": "this-page-does-not-exist-xyz",
"_error": "page_id_resolve_failed",
"_errorDetail": "Could not extract numeric page ID from warm HTML",
"_scrapedAt": "2026-05-18T11:42:09.012345+00:00"
}

Common _error values: warm_failed (couldn't load the page), page_id_resolve_failed (page does not exist or is fully gated), fetch_failed (transient network or server-side error), no_posts (page resolved but has no public posts).

Filter on _error to triage failed rows.

Pricing

This actor is billed per result: $6.00 per 1,000 posts (Tier 4). Each post row = 1 result. Error rows are not billed.

Other Sosmed Actors

PlatformActorBest for
FacebookFacebook Page ScraperPage metadata: name, category, like and follower counts
FacebookFacebook Post Detail ScraperSingle-post deep dive with comments preview
InstagramInstagram Account Posts ScraperRecent posts from any public IG account
X / TwitterX Account Tweets ScraperRecent tweets for any handle
ThreadsThreads Account Threads ScraperRecent threads for any Threads handle
BlueskyBluesky Account Posts ScraperRecent posts for any atproto handle

Browse the full catalog at apify.com/xtracto.

Notes

  • Facebook currently returns one post per request on the anonymous public feed, so the actor paginates internally via cursor to satisfy your maxPosts value. Large jobs (e.g. maxPosts: 200) therefore take noticeably longer than a single page's worth of API calls would suggest — budget accordingly.
  • Pagination is fully automatic; you do not need to pass or persist a cursor.
  • reactionCount is rounded by Facebook for high-volume posts (e.g. 12K, 1.2M — the actor returns the rounded integer as Facebook publishes it).
  • Counters are eventually-consistent and may lag the live page by a few minutes.
  • The actor only returns public posts — content gated behind a login wall or audience restriction is skipped.
  • For best reliability on large jobs, leave Apify Proxy enabled. Datacenter proxy is the default and works for most pages; switch to Residential if a specific page returns frequent fetch_failed errors.