Facebook Profile & Posts Scraper — No Login, Bulk API
Pricing
from $3.25 / 1,000 results
Facebook Profile & Posts Scraper — No Login, Bulk API
Collect accessible public Facebook profiles and posts with available contacts, activity and filters. No login. Bulk export: JSON, CSV, Excel and API. PPE: from $2.5/1K profile results; start fee, usage extra. Optional webhook delivery.
Pricing
from $3.25 / 1,000 results
Rating
4.2
(3)
Developer
Apivault Labs
Maintained by CommunityActor stats
1
Bookmarked
626
Total users
111
Monthly active users
0.24 hours
Issues response
a day ago
Last modified
Categories
Share
Facebook Profile & Posts Scraper — No Login, Bulk
Scrape public Facebook profiles, business pages and recent posts in real time without a Facebook login, cookies or an API key. Run one URL or a bulk list, use a numeric Facebook ID, or discover relevant pages by keyword and location.
The Actor produces structured profile and post records for lead generation, enrichment, market research, monitoring and automation. It can remember previous public snapshots, measure follower growth, report profile changes and keep unchanged or unqualified rows out of the billable Dataset. Failed, private and filtered inputs have separate non-billable outputs.
For MCP and AI agents, use outputPreset: "compact" for core profile/post fields,
contacts for outreach, monitoring for growth and change signals, or full for
the complete legacy record. Full remains the default for existing API clients.
Three ways to use it
- Profiles / pages — extract public profile, business, audience and contact fields from URLs or Facebook IDs.
- Profiles / pages + recent posts — return the profile plus matching public posts and engagement counts.
- Search by keyword — discover public Facebook pages using keywords and an optional location, then extract their profiles.
- Recurring growth monitor — schedule the same input and compare follower counts, contacts and profile fields with the previous run.
What you get
Profile and page data
- Name, username, numeric Facebook ID, profile type, bio and category
- Followers, audience tier, verification status, locale and gender when public
- Avatar, cover photo and canonical Facebook URL
- Public emails, phones, websites, Instagram, Messenger and WhatsApp links
- Address, opening hours, rating and price range when exposed
- Engagement summary, 0–100 activity score and activity tier
- Best contact channel, outreach pitch and lead recommendations
- Data-completeness score and explicit missing-field list
- Previous snapshot, changed fields, follower delta, growth percentage and growth per day
Recent post data
- Post ID, text, permalink and parent profile/page URL
- Exact UTC publication timestamp
- Reaction, comment and share counts when Facebook exposes them
- Public emails and phones found in the post text
- Inclusive
postsSinceandpostsUntildate filters - Optional case-insensitive post keyword filter
Facebook controls which fields are visible to logged-out visitors, so unavailable/private values can be absent.
Input
Run by URL or Facebook ID
{"mode": "profiles","outputPreset": "compact","profileUrls": ["https://www.facebook.com/NASA","https://www.facebook.com/profile.php?id=100055273847808","100055273847808"]}
Profiles and posts within an exact date range
{"mode": "profilesAndPosts","profileUrls": ["https://www.facebook.com/NASA"],"maxPosts": 50,"postsSince": "2026-08-01","postsUntil": "2026-08-31","postKeyword": "mission"}
Discover pages by keyword and location
{"mode": "search","searchKeywords": ["dentist", "orthodontist"],"searchLocation": "Miami, Florida","maxResultsPerKeyword": 50,"maxResults": 200}
The earlier scrapePosts and sinceDays inputs remain supported for saved Tasks, API clients and existing integrations. For new integrations, prefer mode, postsSince and postsUntil.
Qualified business leads from search
{"mode": "search","searchKeywords": ["dentist", "orthodontist"],"searchLocation": "Miami, Florida","maxResultsPerKeyword": 50,"businessPagesOnly": true,"onlyWithContact": true,"minFollowers": 500,"minActivityScore": 40}
Profiles rejected by these filters are placed in the free FILTERED output, not the billed Dataset.
Scheduled follower and profile-change monitor
{"mode": "profiles","profileUrls": ["https://www.facebook.com/NASA","https://www.facebook.com/SpaceX"],"trackChanges": true,"onlyChanged": true}
The first run creates a baseline. Later runs add followerChange, followerGrowthPercent, followerGrowthPerDay, changedFields and previousCollectedAt. With onlyChanged=true, unchanged profiles are reported in FILTERED and are not billed as Dataset results.
Output
Every successful dataset item contains a stable type field:
profile— profile or page recordpost— recent post record
The Output tab includes dedicated Profiles, Monitoring, Contacts and Posts views. Failed, private or blocked inputs are available through Errors; unchanged and lead-filtered profiles are available through Filtered. Neither is written to the billable result dataset. A Run summary contains discovered, successful, filtered, failed, post and truncated-result counts plus next-run guidance.
Example profile record
{"type": "profile","success": true,"fullName": "NASA","username": "NASA","facebookId": "54971236771","profileUrl": "https://www.facebook.com/NASA","verified": true,"followerCount": 27000000,"category": "Government organization","primaryWebsite": "https://www.nasa.gov","primaryEmail": null,"activityScore": 92,"activityTier": "major"}
Example post record
{"type": "post","success": true,"postId": "1234567890","pageUrl": "https://www.facebook.com/NASA","url": "https://www.facebook.com/NASA/posts/1234567890","text": "Mission update...","createdTimestamp": 1788134400,"createdAt": "2026-08-31T00:00:00Z","reactions": 1400,"comments": 85,"shares": 210}
Automation and integrations
- Apify API — start synchronous or asynchronous runs and export JSON, CSV, Excel or JSONL.
- Apify MCP — expose the Actor as a structured tool to ChatGPT, Claude and other MCP clients through
https://mcp.apify.com. - n8n — use
n8n-nodes-apivault-facebookwith profile, post and search modes. - Webhooks — set
notifyWebhookUrlto POST each successful record to n8n, Make, Zapier or your own endpoint as soon as it is ready. - Schedules and Tasks — save a watchlist and run it repeatedly for audience or public-post monitoring.
MCP and AI agents
Actor name: apivault_labs/facebook-profile-scraper
Connect an MCP-compatible client to the hosted Apify MCP server at https://mcp.apify.com, authorize your Apify account, and add this Actor as a tool. The Actor publishes explicit input, Dataset and output schemas, so agents can discover its arguments and structured results without scraping this README.
Agent decision rules
- Use
mode=profileswhen Facebook URLs or IDs are already known. - Use
mode=profilesAndPostsonly when post records are needed. A profile can legitimately return zero public posts. - Use
mode=searchwithsearchKeywordswhen the agent must discover pages. - Set the run-wide
maxResultscap explicitly to control paid output and agent context size. UsemaxResultsPerKeyword,maxPostsandmaxPostPagesfor mode-specific limits. - Read
summaryfirst. Fetchresultsnext, and readerrorsorfilteredonly when their summary counts are non-zero. - Treat missing fields as unavailable public data, not empty verified facts.
Ready-to-copy agent prompts
Find up to 20 active dental business pages in Austin, Texas with a public contact channel. Use
apivault_labs/facebook-profile-scraperthrough Apify MCP, setmode=search,businessPagesOnly=true,onlyWithContact=true, andminActivityScore=40. Return name, Facebook URL, followers, best contact, activity score, and completeness score.
Monitor these Facebook pages and report only changes since the last run. Set
mode=profiles,trackChanges=true, andonlyChanged=true. Read the run summary first, then show follower deltas and changed fields from the Monitoring view.
Fetch public posts from these pages for the specified date range. Set
mode=profilesAndPosts, a conservativemaxPosts,postsSince, andpostsUntil. Separate profile and post records using thetypefield.
Machine-readable diagnostics
Errors contain type=error, success=false, a stable errorCode, and a human-readable error. Current codes include MISSING_INPUT, INVALID_FACEBOOK_URL, NO_SEARCH_RESULTS, NO_PUBLIC_DATA, FACEBOOK_FETCH_FAILED, and UNKNOWN_ERROR.
Filtered records contain type=filtered, success=false, filterCode, and filterReason. Current filter codes include MIN_FOLLOWERS, MAX_FOLLOWERS, MIN_ACTIVITY_SCORE, VERIFIED_ONLY, BUSINESS_PAGES_ONLY, CONTACT_REQUIRED, and UNCHANGED.
Filtered/error records live outside the paid Dataset. Do not retry MISSING_INPUT or INVALID_FACEBOOK_URL without changing the input. Retry FACEBOOK_FETCH_FAILED only with bounded attempts.
Billing and performance
The Actor uses pay-per-result pricing. Only successful profile and post records are placed in the billed dataset; failed/private inputs are reported separately. Bulk inputs run concurrently, deduplication is enabled by default, and maxResults limits the combined paid profile/post output for the run.
Use fastMode when core fields and throughput matter more than secondary business metadata. Lower maxConcurrency for very small jobs or conservative external webhook endpoints.
For recurring monitoring, enable trackChanges and save the input as an Apify Task with a schedule. Enable onlyChanged after the baseline run to avoid paying again for profiles that did not change. One-off runs leave monitoring off by default.
FAQ
Does it require a Facebook account or cookies?
No. It works with data Facebook exposes publicly to logged-out visitors.
Can I scrape personal profiles and business pages?
Yes, when the requested profile/page is public. Private content is never accessed.
Can I use Facebook IDs instead of URLs?
Yes. Bare numeric IDs and profile.php?id=... URLs are accepted.
Why are some fields empty?
Facebook varies logged-out visibility by page, profile, region and content type. The Actor returns only fields actually exposed publicly.
Are failed inputs charged as results?
No. They are stored separately in the Errors output rather than the successful result dataset.
How should I report a reproducible issue?
Open the Actor's Issues tab and include the public input URL, run ID and the field you expected. Do not post API tokens or private data.