Facebook Posts Scraper
Pricing
from $3.00 / 1,000 facebook results
Facebook Posts Scraper
Scrape public Facebook page posts with text, timestamps, reactions, comments, shares, video views, and follower counts. Supports cursor pagination, multi-session completeness checks, and standalone profile follower extraction.
Pricing
from $3.00 / 1,000 facebook results
Rating
0.0
(0)
Developer
Scraper Creator
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Facebook Page Statistics
Collect public Facebook page posts, engagement statistics, and exact follower counts without supplying login cookies or an API token.
How to use
- Add 1–5 public Facebook page URLs under Page URLs.
- Set Posts per page (
resultsLimit, default 100, maximum 10,000). Choose a limit large enough to cover the accessible feed: the Actor must reach the end and verify matching post IDs across independent sessions. - Keep the default Malaysian (
MY) residential proxy or supply your own supported proxy configuration. Cloud runs require a proxy; residential traffic adds cost. - Start the Actor and wait for verification. It reads the feed at least twice, so results may not appear immediately.
- Check the run status and
RUN-SUMMARY, then export the dataset or retrieve it through the Apify API. Use successful runs for complete snapshots.
For followers only, switch to JSON input and use the profile example below. Remove resultsLimit; setting it to zero does not select followers-only mode.
Run memory defaults are managed in Apify Console under Actor Settings. The source does not declare defaultMemoryMbytes; explicit run, task, or API memory settings can override the cloud default. Memory is a run option, not an input JSON field.
Input
Example
{"startUrls": [{ "url": "https://www.facebook.com/facebook" }],"resultsLimit": 100}
Fields
| Field | Required | Description |
|---|---|---|
startUrls | Yes | Array of 1–5 objects containing a public page url. Plain URL strings are not accepted. |
resultsLimit | For posts | Maximum posts per page, from 1 to 10,000. The form prefills 100. Remove this field for followers-only mode. |
proxyConfiguration | No | Defaults to an Apify MY residential proxy. Cloud runs reject an explicit no-proxy setting. |
Use a page URL such as https://www.facebook.com/facebook. Numeric page URLs using /profile.php?id=... are also accepted. Individual post, Reel, group, and watch URLs are not supported.
Followers-only input
For profile followers, omit resultsLimit:
{"startUrls": [{ "url": "https://www.facebook.com/facebook" }]}
Followers-only mode returns one profile row per page and no post rows.
Output
Each dataset row represents one post.
Example
The following is a synthetic example, not live statistics:
{"postId": "123","facebookId": "456","facebookUrl": "https://www.facebook.com/example","followers": 59,"inputUrl": "https://www.facebook.com/example","url": "https://www.facebook.com/example/posts/123","topLevelUrl": "https://www.facebook.com/456/posts/123","user": {"id": "456","name": "Example"},"text": "Title\nBody #example","time": "2026-10-19T00:00:00.000Z","timestamp": 1792368000,"likes": 0,"comments": 0,"shares": 0,"viewsCount": 5,"hashtags": ["#example"],"scrapedAt": "2026-10-19T06:00:00.000Z","warnings": []}
Fields
| Field | Description |
|---|---|
postId, facebookId, facebookUrl, inputUrl | Post and page identity, page URL, and requested source. |
url, topLevelUrl | Post permalink and URL built from the verified numeric page/post IDs. |
user.id, user.name | Author identity and name. |
text, hashtags | Post text and hashtags. |
time, timestamp, scrapedAt | Publication time and collection time. |
likes, comments, shares, viewsCount | Total reactions, comments, shares, and video plays. Plays are not a separate video-view metric. |
followers, warnings | Current exact page follower count, repeated on its posts, and data notices. |
Followers-only rows contain pageId, facebookId, pageUrl, facebookUrl, inputUrl, followers, and scrapedAt. Use this mode for a page with no posts. Counts are snapshots and may change after collection.
Data accuracy
Unavailable metrics remain null; confirmed zero remains 0. Text-only and photo posts can have no play count. Missing or rounded followers fail the target rather than returning an estimate. Only English follower labels are supported.
Viewing and exporting results
Open the run's dataset to view the returned rows. Export JSON to preserve nested fields such as user and arrays such as hashtags, or use a tabular export for spreadsheet analysis. API integrations can retrieve items from the run's default dataset.
Open RUN-SUMMARY in the run's default key-value store to check each requested page. A dataset containing rows does not by itself mean the whole run completed successfully.
Pricing
Check the Actor page for current prices. In pay-per-event runs, each returned result is billable. Proxy usage may add separate charges. Results delivered before a failure or budget stop may already be charged; a failed run does not mean no cost.
Post verification reads the feed at least twice and consumes proxy traffic before output. A low result budget does not cap those verification costs.
Limits and failures
- Posts must reach end-of-feed and pass independent verification before they are returned. Reaching
resultsLimitbefore end-of-feed fails the run withRESULTS_LIMIT_BEFORE_END_OF_FEEDinRUN-SUMMARY. That profile is not retried and its buffered posts are not published or charged as results; the attempt still incurs platform usage. Increase the limit to cover the accessible feed, up to 10,000. A page ending exactly at the limit can succeed after the usual matching complete traversals. - Inconsistent results produce
COMPLETENESS_UNVERIFIED. Inaccessible feeds, invalid required data, interrupted collection, and storage errors can also fail the run. Previously written verified results may remain; import successful runs only. - Verification reduces transient omissions but cannot prove that all historical posts are public or accessible. Compare with your own saved post list when full historical coverage matters.
- A budget stop produces an incomplete, failed run with
partial: trueandstopReason: MAX_TOTAL_CHARGE_REACHEDinRUN-SUMMARY. - Cloud runs require a proxy. If you see
PROXY_REQUIRED, restore the default MY residential proxy or provide a supported configuration. Proxy access is not guaranteed. - Private analytics, comment bodies, media downloads, video transcription, and individual-post refresh are not supported.
Refreshing statistics
Start a new run with the same input and a fresh dataset. Posts mode collects and verifies the accessible feed again; it does not refresh individual post URLs. For a follower-only update, use the profile input above.
For API compatibility and operator setup, see DEVELOPMENT.md.