Facebook Profile Email Scraper
Pricing
from $2.99 / 1,000 results
Facebook Profile Email Scraper
Facebook Profile Email Scraper SD - Facebook Profile Email Scraper is a lead generation tool that extracts leads with public contact emails, bio, follower counts and profile URLs from Facebook profile URLs or usernames - Facebook profile scraper for creator outreach.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
Leads Scraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Facebook Profile Email Scraper turns keywords, or a list of Facebook profile URLs and handles, into a clean dataset of public contact emails and page details. One structured row per account.
There are two ways in. Give this Facebook profile scraper keywords and it goes looking for Facebook pages that publish a contact address, then fetches each one it finds.
Or give it profile URLs or usernames and it fetches exactly the pages you name — a predictable Facebook email finder for outreach lists you already own. Both can be combined in one run.
Read this before you run it. A keyword run does not return pages that merely mention your word. It targets pages that publish a contact address next to it, so most rows arrive with an email already attached.
Each row carries the page name, description and avatar, plus its follower, following and like counts. The follower figure is the rounded one Facebook itself displays, such as 174M; the like count is exact.
Facebook sometimes serves a reduced page instead, and those rows come back without the counts — re-run the failed rows. username and userId stay empty either way.
That honesty matters more than a feature list. Everything below describes what Facebook Profile Email Scraper measurably does, and every withheld field is documented as withheld.
What the Facebook Profile Email Scraper does
Facebook Profile Email Scraper runs in two phases, and the order is the whole design.
Phase 1 — Google harvest, on the GOOGLE_SERP proxy. When keywords are given, Facebook Profile Email Scraper searches Google with an email dork — site:facebook.com photographer "@gmail.com" — expanded across keyword x modifier x address domain, paging up to maxPagesPerKeyword per query.
Each result block yields the page handle and the address published on that page, together, in one request. Google no longer prints the target URL on most layouts, so the handle comes from the site label, the breadcrumb host and path, or a Name (@handle) title.
This is where the volume and most of the addresses come from. Asking Google for pages that already carry an address is one request per ten accounts; fetching every page hoping for one in the description is a request each, and most descriptions have none.
Phase 2 — profile enrichment, on the RESIDENTIAL proxy. Every page found is then fetched for its real profile data — name, description, avatar and whatever else Facebook publishes — and merged into a single row with the address from phase 1. Pages you supply yourself skip phase 1 and start here.
Full URLs, bare handles and @handle forms all normalise to one canonical URL, and duplicates are dropped. Each response is parsed with a regex-first cascade: a regex battery against the raw HTML, then the Facebook-specific parser, then Open Graph and link-preview meta tags.
Matching key names rather than object paths is deliberate. Platforms move those objects between releases, but the key names survive, so Facebook Profile Email Scraper keeps parsing after a layout change.
The Facebook bio email extractor step then reads the display name, description text and any external URL for addresses the harvest did not already have.
Results stream: each account is handed to enrichment the moment the search finds it, so the first rows are saved seconds into a run and keep arriving while the search continues. Each saved row is logged as it is written, naming the handle, address and counts found.
Facebook Profile Email Scraper reads public data only. No login, no cookies, no session, no private API, no official Facebook API, no browser and no JavaScript rendering. If a signed-out visitor cannot see it, this Facebook profile scraper does not collect it.
Browser headers, and what the anonymous view returns
On its first attempt Facebook Profile Email Scraper sends a full browser header set — client hints, a referer, the whole sec-fetch family — exactly as a browser asks for a public page. On Facebook that is what makes the site serve the real profile page instead of a small login stub; a retry falls back to a plainer set.
When that full page arrives you get the page name, its description, the profile picture and the follower, following and like counts. The follower number is the rounded one Facebook prints; the like count is exact.
Facebook sometimes serves a reduced page anyway, and those rows come back without the counts. No handle field and no numeric account id are published to a signed-out visitor either, so username and userId stay "" — the platform's choice, not a defect.
The description sentence is also where many pages publish their business address, which is why a Facebook bio email extractor still works well here.
How the Facebook Profile Email Scraper handles email hygiene
Email extraction is shared with the whole Neuro Data family and is deliberately strict, because a dirty list costs more than a short one.
Facebook Profile Email Scraper undoes obfuscation before matching, so [at], (dot), spaced forms like a @ b, zero-width characters and the full-width @ all resolve. Domain matching is boundary-correct, so @gmail.com never matches inside @gmail.company.
Placeholder locals such as email@, yourname@ and noreply@ are dropped, as are prose words like the@. Genuine role addresses (hi@, hey@, hello@) are kept, because creators really do use them.
Input schema
Every input field the Facebook Profile Email Scraper ships with is listed below. No hidden options.
| Field | Type | Default | Meaning |
|---|---|---|---|
keywords | array | prefilled with example terms | Search terms. The Actor finds matching Facebook pages and scrapes each one. |
location | string | "" | Added to every keyword search, e.g. New York. Keyword search only. |
maxPagesPerKeyword | integer 1-30 | 5 | Google results pages read per query. Raise to find more accounts. Keyword search only. |
expandQueries | boolean | true | Search each keyword in several phrasings (keyword + "email", + "contact", ...). Keyword search only. |
queryModifiers | array | email, contact, business inquiries, collab, booking, dm | Extra words combined with each keyword when expansion is on. |
profileUrls | array | [] | Full Facebook profile URLs. Bare usernames also accepted. |
usernames | array | [] | Handles without the URL. Combined with the list above. |
customDomains | array | [] | Address domains the search asks Google for, and a filter on the results. Empty searches the common free-mail providers and keeps every address found. |
onlyWithEmail | boolean | false | Skip profiles whose public bio contains no address. |
maxProfiles | integer 1-100000 | 100 | Stop after this many profiles are saved. |
maxConcurrency | integer 1-30 | 10 | How many profiles are fetched in parallel, and how many Google searches run at once. Higher is faster; lower it if rows come back blocked. |
proxyGroup | select | RESIDENTIAL | RESIDENTIAL, BUYPROXIES94952 or UNBLOCKER. |
countryCode | string | "" | Two-letter proxy country (US, GB, DE...). Empty for any. |
There is no dataSource input here; that option exists only on the TikTok Actor. Supply at least one of keywords, profileUrls or usernames — a run with none of them stops and tells you to add one.
Example inputs
Starting from keywords, with no list of pages yet:
{"keywords": ["small business", "bakery"],"location": "Austin","maxPagesPerKeyword": 5,"expandQueries": true,"onlyWithEmail": false,"maxProfiles": 250,"maxConcurrency": 10,"proxyGroup": "RESIDENTIAL"}
Starting from pages you already know, or mixing both ways in one run:
{"keywords": ["founder"],"profileUrls": ["https://www.facebook.com/nationalgeographic","cookingwithamira"],"usernames": ["studio.lumen"],"onlyWithEmail": true,"maxProfiles": 250,"countryCode": "US"}
Finding pages from a keyword
Keyword search in the Facebook Profile Email Scraper is a real search, not a filter over URLs you supplied. Give this Facebook email finder a niche, job title or industry and the harvest goes looking for pages in it that publish a contact address.
With expandQueries on, each keyword is combined with every entry in queryModifiers and every address domain, and each combination is paged separately. location narrows the search to one place, and maxPagesPerKeyword sets how deep each query is read.
The harvest runs on the Apify GOOGLE_SERP proxy, the page fetch on the RESIDENTIAL proxy. Neither group can do the other's job — Google is reachable only through GOOGLE_SERP, and Facebook needs residential exit IPs.
Facebook Profile Email Scraper then enriches every page found this way exactly like one you pasted in yourself. Pages you supplied are queued first, then whatever the harvest discovers, and the keyword and query fields record which search produced each row.
Output schema
Every Facebook Profile Email Scraper dataset row carries all of these keys, so your CRM import or spreadsheet mapping never breaks between runs.
| Field | Meaning |
|---|---|
success | True when the profile was fetched and parsed, or an address was found for the account. A blocked page fetch still yields a usable row when the harvest gave an address. |
network | Platform name |
dataSource | Which path produced the profile data: page, api or api+page |
keyword | The keyword that found this account, or null for a supplied URL |
query | The exact Google query that found it, or null |
description | The result snippet Google showed, cleaned of labels and counters |
profileUrl | The canonical profile URL that was requested |
url | The URL actually returned, after redirects |
username | Handle |
fullName | Display/real name as published |
displayName | Handle or title the platform shows |
email | First public email found, or null |
emails | Every public email found, deduplicated |
emailSource | Where the addresses came from: search (the Google harvest), bio (the page itself), bio+search, or null. search is the common value on a keyword run |
bio | Public bio / description text |
followersCount | Followers or subscribers, when published |
followingCount | Accounts followed, when published |
likesCount | Total likes/hearts, when published |
avatarUrl | Profile picture URL |
externalUrl | Link published in the bio, when present |
error | Why a row failed, or null |
scrapedAt | ISO 8601 UTC timestamp |
Here dataSource is always page and secUid is always empty. Fields Facebook does not publish anonymously come back null for counters and flags, or "" for strings.
Example output
A realistic Facebook Profile Email Scraper row from a keyword run, with the counts a full page provides.
{"success": true,"network": "Facebook","dataSource": "page","keyword": "bakery","query": "site:facebook.com bakery contact \"@gmail.com\"","description": "Weeknight recipes from a small Beirut kitchen. Collabs: hello@cookingwithamira.com","profileUrl": "https://www.facebook.com/cookingwithamira","url": "https://www.facebook.com/cookingwithamira","username": "","fullName": "Cooking with Amira","displayName": "Cooking with Amira","email": "hello@cookingwithamira.com","emails": ["hello@cookingwithamira.com", "press@cookingwithamira.com"],"emailSource": "search","bio": "Cooking with Amira. 48,213 likes. Weeknight recipes from a small Beirut kitchen. Collabs: hello@cookingwithamira.com | press@cookingwithamira.com","followersCount": 52000,"followingCount": 34,"likesCount": 48213,"avatarUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-1/example_avatar.jpg","externalUrl": "","error": null,"scrapedAt": "2026-08-31T09:14:52Z"}
followersCount holds the rounded figure Facebook prints, so 52K on the page arrives as 52000, while likesCount is the exact number. When Facebook serves the reduced page instead, those counters stay null rather than being invented.
How to use the Facebook Profile Email Scraper step by step
1. Start from a keyword, or collect your targets. Put a niche, job title or industry into keywords and the harvest finds Facebook pages in it that publish an address. Add a location to narrow it, and raise maxPagesPerKeyword to find more.
2. Or paste your own targets. Put full URLs in profileUrls and bare handles in usernames. Every list is merged and de-duplicated, so keywords and URLs work together.
3. Decide on filtering. Set onlyWithEmail to true for rows that carry an address. customDomains both tells the search which address domains to ask for and filters what is kept.
4. Set the volume. maxProfiles caps the Facebook Profile Email Scraper run. maxConcurrency defaults to 10 and accepts up to 30; lower it if rows come back blocked.
5. Choose a proxy. RESIDENTIAL is the right default. Set countryCode only when you want the page rendered for a specific market.
6. Run and export. Rows appear live. Export to CSV, JSON or XLSX, or pull them from the Apify API into your CRM.
7. Schedule it. Point Facebook Profile Email Scraper at the same keywords on a schedule to catch pages that publish an address later.
Use cases for the Facebook Profile Email Scraper
Creator outreach. Turn a keyword or a shortlist of pages into a contact sheet with Facebook Profile Email Scraper. Because the harvest targets pages that publish an address, a keyword run tends to arrive already usable rather than needing a second pass.
Lead enrichment. You already have company or creator pages in your CRM. Facebook Profile Email Scraper fills the missing email, description and avatar columns.
Local business prospecting. Search restaurant with a location set and the run comes back with the kitchens, gyms and clinics in that city that publish a public inbox — the Facebook lead generation step, not a list to qualify afterwards.
Partnership and PR research. Media teams pull the public description and any published link with Facebook Profile Email Scraper, then judge relevance before writing a pitch.
Competitive and market research. Run Facebook Profile Email Scraper over a category, keep the scrapedAt timestamp, and compare public positioning language over time.
Deduplicating a bought list. Run the Facebook bio email extractor over supplier pages and keep only rows with a real, non-placeholder address.
Limitations
Counts depend on which page Facebook serves. A full page gives the name, description, avatar and the follower, following and like counts; the follower figure is Facebook's own rounded one, the like count exact. A reduced page comes back without those counts, so re-run the failed rows.
No handle or numeric id. Facebook publishes neither to a signed-out visitor, so username and userId are always empty, and postsCount is not published either.
Yield varies, and it is not a promise. The harvest deliberately asks for pages that publish an address, so most rows on a keyword run carry one. How many depends on the platform, the niche and how many accounts in that niche publish an address at all.
A row is still returned when only profile data is available, with email set to null — an accurate result, not a failure. Addresses no longer come only from the description text: the harvest and the page are independent sources, and emailSource says which answered.
The harvest needs the GOOGLE_SERP proxy. It is the only route to Google. A run with keywords and nothing else fails without that proxy group; a run that also has profile URLs logs a warning and carries on with those.
No login, no cookies, no private access. Facebook Profile Email Scraper cannot see friends-only content, hidden contact fields, group members or anything gated behind an account.
No browser rendering. Content injected purely by JavaScript is out of reach, because there is no headless browser in this Facebook profile scraper.
Rate limiting is real. Retries in Facebook Profile Email Scraper use up to four attempts with exponential backoff and a fresh exit IP, and a redirect to a login page counts as rate limiting, not a missing profile.
Free plan cap. Runs on the Apify free plan stop at 100 profiles. Paid plans are uncapped.
Accuracy is a mirror, not a judgement. Facebook Profile Email Scraper reports what the public page says. It cannot verify that a published address is monitored, or that the page belongs to who it claims.
Pricing, limits and resumability
Facebook Profile Email Scraper uses pay-per-event billing: actor-start once per run, then profile-scraped for each saved row, so an empty run costs almost nothing.
Progress is keyed to a hash of your input. A migrated or restarted run resumes where it stopped, while changing the input starts a clean run.
At the end of a run the Facebook Profile Email Scraper log reports counts of ok, blocked, not found and errored profiles, so you can tell an absent page from a throttled one.
FAQ
How does keyword search work?
In two phases. First a Google harvest on the GOOGLE_SERP proxy searches with an email dork — site:facebook.com bakery "@gmail.com" — expanded across your keywords, queryModifiers and address domains, and each result gives back a handle and the address published with it. Then every page found is fetched on the RESIDENTIAL proxy for its real profile data, and the two are merged into one row.
Why does a row have success: true when the page fetch failed?
Because success now means the run produced something usable: the profile was fetched, or an address was found for the account. A page that Facebook declined to serve still yields a row with the email from the harvest, and error records what happened.
Does the Actor send browser headers? Yes. Facebook Profile Email Scraper asks for a public page with a full browser header set on the first attempt, and a plainer one on retry. On Facebook that is what makes the site serve the real profile page rather than a small login stub.
Do profile URLs and usernames still work? Yes, unchanged. Keywords are an additional way in, not a replacement, and both can be combined — supplied pages are queued first, then whatever the harvest discovers.
Does the Facebook Profile Email Scraper return follower stats?
Yes, when Facebook serves its full page: the name, description, avatar and the follower, following and like counts. The follower figure is Facebook's own rounded one, the like count exact.
On the reduced page Facebook sometimes serves instead, those counts come back null. Usernames and numeric ids are never published to a signed-out visitor.
Do I need a Facebook login or cookies? No. Facebook Profile Email Scraper uses no login, no cookies and no session. It reads only what a signed-out visitor sees.
Does it use the official Facebook API? No. There is no official API, no partner API and no private endpoint involved. Facebook Profile Email Scraper fetches public pages over HTTP through the Apify residential proxy.
Can it find emails that are hidden from public view? No. If an address is published on neither the page nor a page Google indexed, this Facebook email finder will not produce it.
Can I give it handles instead of full URLs?
Yes. Bare handles, @handles and full URLs normalise to the same canonical target, and duplicates are removed before fetching.
Does it render JavaScript? No. There is no headless browser here. Facebook Profile Email Scraper fetches HTML and parses it, which keeps runs cheap but puts script-injected content out of reach.
What happens to profiles with no email?
Facebook Profile Email Scraper still saves them with email set to null, unless you enable onlyWithEmail, in which case they are skipped entirely.
How many profiles can one run process?
The free Apify plan caps a run at 100 profiles. Paid plans are uncapped, and maxProfiles accepts up to 100000.
What does it cost?
Billed per event: actor-start once per run, plus profile-scraped for every row saved.
Why are some rows success: false?
Because neither route produced anything: the page fetch failed and no address was found. Usually a deleted page, a URL that is not a profile, or rate limiting. The reason is written into error.
Which proxy should I use?
Start with RESIDENTIAL. Datacenter IPs are blocked quickly on this platform, so the Facebook profile scraper defaults to residential for a reason.
Is there a Facebook Profile Email Scraper equivalent for other platforms? Yes. Twenty-nine sibling Actors run the same engine on other networks, and each one documents exactly which fields its platform publishes.
Related Actors
| Actor | What it collects |
|---|---|
| Facebook Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Facebook |
| Facebook Profile Phone Number Scraper | Phone numbers plus bio and follower counts from Facebook profiles |
| Behance Profile Email Scraper | Emails plus bio and follower counts from Behance profiles |
| Bluesky Profile Email Scraper | Emails plus bio and follower counts from Bluesky profiles |
| Buy Me a Coffee Profile Email Scraper | Emails plus bio and follower counts from Buy Me a Coffee profiles |
| DEV Community Profile Email Scraper | Emails plus bio and follower counts from DEV Community profiles |
| DeviantArt Profile Email Scraper | Emails plus bio and follower counts from DeviantArt profiles |
| Dribbble Profile Email Scraper | Emails plus bio and follower counts from Dribbble profiles |
| Flipboard Profile Email Scraper | Emails plus bio and follower counts from Flipboard profiles |
| GitHub Profile Email Scraper | Emails plus bio and follower counts from GitHub profiles |
| GitLab Profile Email Scraper | Emails plus bio and follower counts from GitLab profiles |
| Gumroad Profile Email Scraper | Emails plus bio and follower counts from Gumroad profiles |
| Hashnode Profile Email Scraper | Emails plus bio and follower counts from Hashnode profiles |
| Hugging Face Profile Email Scraper | Emails plus bio and follower counts from Hugging Face profiles |
| Instagram Profile Email Scraper | Emails plus bio and follower counts from Instagram profiles |
| Kick Profile Email Scraper | Emails plus bio and follower counts from Kick profiles |
| Linktree Profile Email Scraper | Emails plus bio and follower counts from Linktree profiles |
| Mastodon Profile Email Scraper | Emails plus bio and follower counts from Mastodon profiles |
| Mixcloud Profile Email Scraper | Emails plus bio and follower counts from Mixcloud profiles |
| Patreon Profile Email Scraper | Emails plus bio and follower counts from Patreon profiles |
| Pinterest Profile Email Scraper | Emails plus bio and follower counts from Pinterest profiles |
| Snapchat Profile Email Scraper | Emails plus bio and follower counts from Snapchat profiles |
| SoundCloud Profile Email Scraper | Emails plus bio and follower counts from SoundCloud profiles |
| Substack Profile Email Scraper | Emails plus bio and follower counts from Substack profiles |
| Telegram Profile Email Scraper | Emails plus bio and follower counts from Telegram profiles |
| Threads Profile Email Scraper | Emails plus bio and follower counts from Threads profiles |
| TikTok Profile Email Scraper | Emails plus bio and follower counts from TikTok profiles |
| Tumblr Profile Email Scraper | Emails plus bio and follower counts from Tumblr profiles |
| Twitch Profile Email Scraper | Emails plus bio and follower counts from Twitch profiles |
| X Profile Email Scraper | Emails plus bio and follower counts from X profiles |
| YouTube Profile Email Scraper | Emails plus bio and follower counts from YouTube profiles |
| Behance Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Behance |
| Bluesky Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Bluesky |
| Buy Me a Coffee Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Buy Me a Coffee |
| DEV Community Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from DEV Community |
| DeviantArt Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from DeviantArt |
| Dribbble Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Dribbble |
| Flipboard Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Flipboard |
| GitHub Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from GitHub |
| GitLab Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from GitLab |
| Gumroad Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Gumroad |
| Hashnode Profile Email and Phone Number Scraper | Emails, phone numbers and profile details from Hashnode |
Support
Questions, a bug report or a custom build request for the Facebook Profile Email Scraper? Email neurodata.apify@gmail.com.
Please include the run ID and a couple of example profile URLs or keywords. That makes an issue quicker to reproduce and fix.
You are responsible for how you use the collected data. Facebook Profile Email Scraper only reads publicly visible pages; complying with the platform's terms and with data protection law in your jurisdiction remains your obligation.