Public Facebook Post Scraper avatar

Public Facebook Post Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Public Facebook Post Scraper

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

Inus Grobler

Maintained by Community

Actor stats

1

Bookmarked

178

Total users

3

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

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 os
from apify_client import ApifyClient
client = 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.status
if 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_id
for 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.