Public Facebook Post Scraper
Pricing
from $1.00 / 1,000 results
Public Facebook Post Scraper
Extract specific public Facebook post permalinks from page HTML and rendered DOM with native identity checks, clear coverage limits and bounded output.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
1
Bookmarked
178
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Extract individual public Facebook posts from their permalinks. Paste specific post URLs, set a small post limit, and receive post text, canonical links, native identifiers and any visible engagement or comment evidence available on the page.
Start in Apify Console
Use Public post URLs and paste one post permalink per line, such as a Facebook URL containing /posts/ followed by its native identifier. Start with one post. The new field takes precedence over legacy targets. Every distinct permalink is processed, subject to your run charge cap and available time. Public access can still be restricted by Facebook; a login screen, incomplete page or blocked request is reported as a source failure, never as a successful empty scrape.
Page/profile/group feeds, names, Graph API tokens and logged-in cookie collection are unavailable. Older input fields remain accepted so existing clients receive a clear unsupported-source error. The Actor reads public HTML and rendered DOM; it does not call Graph API, intercept GraphQL responses or run child Actors.
Output and data quality
Example of a public metadata preview. The text below is shortened; use the coverage fields to distinguish a preview from complete post text.
{"itemType": "post","postId": "1116021799893195","postUrl": "https://www.facebook.com/NASA/posts/1116021799893195","postText": "Look up this week — you might spot the International Space Station!","contentCoverage": "public_metadata_preview","textMayBeTruncated": true}
The dataset contains public post rows and any recoverable comment rows. Unavailable metrics remain unknown. Comments and reactions are bounded page observations, not a complete audience export. No native post identifier is invented. By default, incomplete posts are rejected. Explicit Allow labelled partial posts can preserve available text with metadataQuality and missingFields labels; downstream consumers should check those fields.
The run summary reports delivered posts, rejected incomplete records, duplicates and partial coverage. A write with an uncertain outcome stops delivery instead of retrying and risking duplicate charges. Result charges follow delivered output; start fees, proxy and platform usage can apply to unsuccessful attempts. Set a spending cap in Console.
Run with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('TheScrapeLab/Apify-Facebook-Post-Scraper').call(run_input={'postUrls': ['https://www.facebook.com/NASA/posts/1116021799893195'], 'maxPosts': 1}, max_total_charge_usd=0.25, timeout_secs=180)if run is None:raise RuntimeError("Actor did not return run metadata")status = run.get("status") if isinstance(run, dict) else run.statusif status != "SUCCEEDED":raise RuntimeError(f"Collection ended with {status}; inspect the run log and RUN_SUMMARY")dataset_id = run["defaultDatasetId"] if isinstance(run, dict) else run.default_dataset_idfor row in client.dataset(dataset_id).iterate_items():print(row)
This independent Actor is not affiliated with Meta or Facebook. Process only content you are permitted to use.
Public post text coverage
contentCoverage identifies page_text or public_metadata_preview. Metadata previews can be truncated; textMayBeTruncated is true when complete text could not be established. metadataQuality=complete refers to native identity fields, not complete post text. Only the requested native post ID can be delivered; unrelated recommended or feed posts are rejected before result charging. Missing engagement values stay unknown.
Example input
Illustrative input; replace source values with your own authorized evidence.
{"postUrls": ["https://www.facebook.com/NASA/posts/1116021799893195"],"maxPosts": 1,"allowPartialResults": false,"proxyConfiguration": {"useApifyProxy": false}}
Pricing and limits
Check the Store pricing panel for current rates. Meaningful delivered primary results use the existing result event. Start fees and platform usage can still apply to empty or failed runs. Begin with a small result limit.
Support
Open the Actor Issues tab with a run ID and a sanitized input example. Review the run output and collection/validation summary when a source is blocked, input is invalid or fewer results are returned.