Facebook User Posts Scraper — Public Profile Timeline
Pricing
from $5.00 / 1,000 post scrapeds
Facebook User Posts Scraper — Public Profile Timeline
Scrape recent public posts from Facebook user/profile URLs. Returns text, post URL, author, timestamps, reactions, comments, and media. Cookieless ScrapeCreators + SociaVault. Not for Groups or follower rosters. MCP-ready. $0.005/post.
Pricing
from $5.00 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook User Posts Scraper
Scrape recent public posts from Facebook user and profile URLs. Paste one or more profile vanity links (for example https://www.facebook.com/pacemorby); each dataset row is one public post with text, post URL, author, timestamps, reactions, comments, shares, and media when Facebook exposes them.
This Actor is cookieless and login-free. It reads public timeline data through ScrapeCreators (primary) with SociaVault fallback, runs on Apify (API, schedules, webhooks, MCP), and returns flat JSON ready for agents and dashboards.
Facebook is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Meta or Facebook.
Best fit for this Actor
- Monitor public-figure and personal-brand Facebook timelines for competitive content
- Pull engagement snapshots (reactions / comments / shares) for creator audits
- Feed recent public posts into social listening, CRM enrichment, or content research
- Agent workflows that need profile URL → structured posts without a browser session
Not this Actor? Use Facebook Posts Scraper for multi-source page/group/direct post jobs, Facebook Group Posts Scraper for Groups, and Facebook Followers Scraper for page follower/like counts (not the login-gated follower roster).
Practical scenario
A brand analyst pastes https://www.facebook.com/pacemorby with maxPostsPerProfile: 3. The Actor normalizes the URL, calls the profile-posts provider chain, keeps three public posts with text and engagement, charges three post-scraped events, and writes OUTPUT / RUN_SUMMARY with COMPLETE when every profile succeeds.
Quick start input
{"profileUrls": ["https://www.facebook.com/pacemorby"],"maxPostsPerProfile": 3,"resultsLimit": 20,"provider": "auto"}
Input reference
| Field | Type | What it controls |
|---|---|---|
profileUrls | array | Required public profile / vanity URLs. Prefill: pacemorby. Also accepts public Pages such as NASA. |
maxPostsPerProfile | integer | Cap per profile (1–100). Prefill 3 for quality tests; default 10. |
resultsLimit | integer | Hard cap across the whole run (1–500). Primary spend control. |
onlyPostsNewerThan | string | Optional YYYY-MM-DD or relative windows such as 7 days / 2 months. |
onlyPostsOlderThan | string | Optional upper date bound. Posts with unparseable timestamps are kept. |
provider | enum | auto (ScrapeCreators → SociaVault), or pin one provider for diagnostics. |
Group URLs, Marketplace, Ads Library, and individual post/reel permalinks are rejected as invalid input — route those jobs to the sibling Actors above.
What data you receive
One dataset item is one public Facebook post.
{"profileUrl": "https://www.facebook.com/pacemorby","postUrl": "https://www.facebook.com/pacemorby/posts/1234567890","postId": "1234567890","authorName": "Pace Morby","authorUrl": "https://www.facebook.com/pacemorby","authorId": "100012345","text": "New project update for the team…","timestamp": "2026-09-01T12:00:00.000Z","timestampText": "2026-09-01T12:00:00+0000","reactionsCount": 120,"commentsCount": 14,"sharesCount": 3,"media": ["https://scontent.xx.fbcdn.net/v/example.jpg"],"provider": "scrapecreators","scrapedAt": "2026-09-22T12:00:00.000Z"}
| Field | Meaning |
|---|---|
profileUrl | Canonical profile URL that was scraped |
postUrl / postId | Public post permalink and ID when available |
authorName / authorUrl / authorId | Author identity fields when exposed |
text | Caption / body text |
timestamp / timestampText | ISO time when parseable + raw provider string |
reactionsCount / commentsCount / sharesCount | Public engagement aggregates |
media | Image/video URLs when present |
provider | scrapecreators or sociavault |
scrapedAt | ISO scrape timestamp |
You can download the dataset as JSON, CSV, Excel, or HTML from the Output tab. OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and run diagnostics.
Coverage contract
- In scope: Public personal profiles and public vanity / Page timelines visible without login; cursor pagination; cookieless providers.
- Out of scope: Private / friends-only / age-gated timelines; Messenger; full follower rosters; Groups as the primary product; video transcripts; login or cookie BYOK.
- Valid profile with no matching public posts →
VALID_EMPTY(nopost-scrapedcharges). - Empty / non-Facebook / group / post-permalink input →
INVALID_INPUT. - Total provider outage with zero rows →
UPSTREAM_FAILED. - Missing owner provider keys →
CONFIG_ERROR.
Pricing
Pay per event + platform usage pass-through (isPPEPlatformUsagePaidByUser: true):
| Event | Price |
|---|---|
apify-actor-start | $0.00005 (once per run) |
post-scraped | $0.005 per saved public post |
Invalid input and fully empty valid runs are not charged the post event. See the Actor Pricing tab for the live table. Providers return about 3 posts per API page, so deeper maxPostsPerProfile values cost more upstream credits.
Rough cost examples
- Prefill 3 posts → about $0.015 PPE + small compute usage
- 20 posts → about $0.10 PPE (+ start)
How to use
- Open the Actor in Apify Console and paste one or more public Facebook profile URLs.
- Keep
maxPostsPerProfileat 3 for a cheap quality sample; raiseresultsLimitonly when you need more rows. - Start the run, then export the dataset or read it from the API / MCP.
API example
curl "https://api.apify.com/v2/acts/khadinakbar~facebook-user-posts-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"profileUrls":["https://www.facebook.com/pacemorby"],"maxPostsPerProfile":3}'
MCP note
On Apify MCP this Actor appears as apify--facebook-user-posts-scraper (or khadinakbar/facebook-user-posts-scraper). Pass profileUrls and read dataset rows for postUrl, text, and engagement fields. Check RUN_SUMMARY.outcome before treating an empty dataset as an outage.
Agent prompt card
Use
khadinakbar/facebook-user-posts-scraperwithprofileUrls: ["https://www.facebook.com/pacemorby"],maxPostsPerProfile: 3. ReadpostUrl,text,reactionsCount,commentsCount, andprovider. If the job is a Group URL, callfacebook-group-posts-scraperinstead. If you only need follower counts, callfacebook-followers-scraper.
Best results tips
- Prefer profiles that publish publicly (creators, public figures, brand Pages with open timelines).
- Use
resultsLimitas the spend guardrail on multi-profile batches. - Pin
provideronly when diagnosing a specific upstream; leaveautofor production. - Pair timeline posts with Facebook Followers Scraper when you also need page follower/like counts.
Builder's note
Native Facebook HTML for personal timelines is login-walled. The working path is ScrapeCreators GET /v1/facebook/profile/posts (about three posts per credit) with SociaVault GET /v1/scrape/facebook/profile/posts as fallback. Input validation deliberately rejects /groups/, Marketplace, Ads Library, and post permalinks so this SKU stays a clean “user/profile posts” tool and routes Groups / general posts / follower counts to portfolio siblings.
Legal / responsible use
Use only for public Facebook data and lawful marketing, research, or brand-safety workflows. Respect Meta’s terms and applicable privacy laws. Do not use this Actor to access private profiles, scrape people who have not made content public, or build unauthorized contact databases. You are responsible for how you store and process the results.
Support
Open an Issue on the Actor page for bugs or feature requests. Custom enrichment pipelines and private deployments are available on request.