Facebook Profile & Posts Scraper — No Login, Emails & Phones
Pricing
from $3.25 / 1,000 results
Facebook Profile & Posts Scraper — No Login, Emails & Phones
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
900
Total users
119
Monthly active users
0.24 hours
Issues response
14 days 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.
Workflows
- 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.
Turn public Facebook observations into a useful workflow
Choose the record you need before requesting enrichment. A Facebook page scraper can provide a public business snapshot, while a Facebook post scraper adds a separate set of content records. These outputs support qualification and research; an audience count alone does not establish an active business, a reachable decision-maker or permission to contact someone.
| Goal | Starting workflow | Important distinction |
|---|---|---|
| Public page inventory | profiles with compact output | A page record can have missing contact fields |
| Business contact research | contacts plus explicit qualification | Public contact presence is not verified deliverability |
| Content research | profilesAndPosts with a small maxPosts | Profile and post records are separate Dataset items |
| Audience monitoring | trackChanges with a stable watchlist | The first observation creates a baseline |
Start with a single public page
{"mode": "profiles","profileUrls": ["https://www.facebook.com/NASA"],"outputPreset": "compact","maxResults": 1,"maxConcurrency": 1,"enrichEmailViaGoogle": false,"maxRetries": 0}
Inspect the profile identity and coverage before enlarging the watchlist. Disabling extra email enrichment keeps the initial request focused; it does not remove the source availability constraints.
Review available business contact context
{"mode": "profiles","profileUrls": ["https://www.facebook.com/NASA"],"outputPreset": "contacts","onlyWithContact": true,"enrichEmailViaGoogle": false,"maxResults": 1}
A filter rejection belongs in FILTERED. It is not a scraper failure, and it does not prove that the organization has no contact channel elsewhere. Review identity and relevance before a CRM handoff.
Read a small recent-post sample
{"mode": "profilesAndPosts","profileUrls": ["https://www.facebook.com/NASA"],"maxPosts": 2,"maxPostPages": 1,"outputPreset": "compact","enrichEmailViaGoogle": false}
The profile can add a row alongside the posts. maxPosts is not a global invoice cap or proof that all posts within a date range were enumerated. Preserve type and the publication timestamp when exporting.
Create an explicit monitoring baseline
{"mode": "profiles","profileUrls": ["https://www.facebook.com/NASA"],"outputPreset": "monitoring","trackChanges": true,"onlyChanged": false,"enrichEmailViaGoogle": false}
Use a consistent watchlist for later comparisons. A first baseline contains no measured historical growth. With onlyChanged enabled later, unchanged observations can produce zero billed Dataset rows.
Cost and quality checks for Facebook data
Current result rates per 1,000 records are $4 Free, $3.75 Bronze, $3.50 Silver, $3.25 Gold, $3 Platinum and $2.50 Diamond. Each delivered profile or post is a record; a profile plus two posts can mean three result events. Startup is $0.00005 per GB, minimum one event, with platform resources additional. Three Free-tier result events are $0.012 before startup and resource usage. Refer to the current Pricing tab and the run's settled events.
Compact, contacts and monitoring presets shape the output; selecting fewer columns does not by itself lower the per-record tariff. Filters can reduce paid records but still require source requests. A search result ceiling cannot promise contact coverage or remove login walls. Start with one known public URL, then widen a working workflow only as needed.
When joining data to a CRM, keep the numeric Facebook ID or canonical URL as an identity key and retain the collection date. Handle profile and post records separately, and review Errors, FILTERED and the run summary before counting successful leads. A private or unavailable field is unknown, not zero. Activity scores and lead recommendations are derived aids, not evidence of purchase intent or a guaranteed business opportunity.
Is follower growth a live analytics feed? No. It compares saved public observations. Changes in source visibility, sparse baselines and unavailable counts affect interpretation.
Can the Actor retrieve private profiles or all historical posts? Public visibility and bounded discovery still apply. Output limits and a successful run status do not establish an exhaustive historical archive.
n8n and developer integrations
Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.
- n8n community node: n8n-nodes-apivault-facebook. Install package name
n8n-nodes-apivault-facebookin a self-hosted n8n instance that permits community packages. - Python client and examples: GitHub.
- n8n source and usage: GitHub.
- n8n source and usage: GitHub.
These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.