Facebook Page Lead Scraper avatar

Facebook Page Lead Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Facebook Page Lead Scraper

Facebook Page Lead Scraper

Extract targeted business leads from Facebook pages using the Facebook Page Lead Scraper. Collect page names, descriptions, emails, websites, phone numbers, follower counts, and page links automatically. Ideal for B2B outreach, marketing research, and prospect discovery.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

0

Monthly active users

11 days ago

Last modified

Share

Facebook Page Lead Scraper ๐Ÿ“˜

Find public Facebook Pages โ€” businesses, studios, clinics, shops, agencies, non-profits โ€” for any keyword, and pull the contact email those Pages publish about themselves.

This actor is deliberately narrow: it targets business / organisation Pages only. Personal profiles, Groups, Marketplace listings, Events, Reels, Watch videos and Facebook's own help/ads/developer pages are all filtered out, so what lands in your dataset is a Page you can actually contact.


๐Ÿ”ฌ Where the email actually comes from (read this first)

We think you deserve to know exactly what is happening, so here it is, plainly.

Stage 1 โ€” Discover Pages. The actor runs a site:facebook.com keyword search through the Apify GOOGLE_SERP proxy (with Brave Search as a top-up source). Google no longer puts the destination URL in the result link โ€” every organic link is now an opaque /goto?url=CAESโ€ฆ wrapper whose payload is encrypted. The real URL is nonetheless still shipped inside the same page, in Google's inline JSON data island, as a ["<url>","<title>","<snippet>"] triple. The actor recovers the URL from there, and falls back to a raw-document URL sweep and then to Brave's direct links.

Stage 2 โ€” Open the Page and read its own contact info. Every discovered Page is then fetched for real through the RESIDENTIAL proxy, at https://www.facebook.com/<page>/about_contact_and_basic_info โ€” the Page's public About โ†’ Contact info tab. The actor parses Facebook's embedded data payload and takes the value of the Page's own email field (the one the Page owner typed into their Contact info), together with the Page's real name, category and description.

That is where emailSource: "facebook_page_contact_info" comes from, and it is the source for the large majority of rows.

Fallbacks, clearly labelled. If a Page publishes no email field, the actor tries any address rendered in the Page's own visible text (facebook_page_text), and finally the search-result snippet (search_snippet) โ€” which is itself Google's index of that same public About text. Every row tells you which one it used in the emailSource column.

What does NOT work โ€” tested live, reported honestly.

SurfaceResult
www.facebook.com/<page> with a normal desktop browser user-agentโŒ HTTP 400 "Sorry, something went wrong" โ€” identical from a plain IP and through a residential proxy
m.facebook.com / mbasic.facebook.com / web.facebook.com with a desktop user-agentโŒ Same HTTP 400; mbasic also answers a login wall to mobile user-agents
graph.facebook.com/<page> (unauthenticated Graph API)โŒ HTTP 403 โ€” a token is required, there is no anonymous route
graph.facebook.com/v20.0/oembed_pageโš ๏ธ HTTP 200 but returns only an embed snippet โ€” no contact data
facebook.com/plugins/page.php (Page plugin)โš ๏ธ HTTP 200 but renders a like-box only โ€” no contact data
Google's <cite> breadcrumbโŒ Useless for Facebook โ€” Google renders a social card whose <cite> slot holds a follower count, not a URL
Bing site:facebook.comโŒ Ignores the site filter and returns unrelated hosts
DuckDuckGo (html / lite)โŒ Answers HTTP 202 block pages from every network tested

The one thing that does work is a crawler-shaped user-agent on www.facebook.com, which is what this actor uses. No row is ever fabricated. If a keyword yields nothing, the run log says so and the dataset stays empty.


Extractable Data Table ๐Ÿ“Š

FieldDescription
networkThe Facebook host the result was matched on (facebook.com)
keywordThe keyword that surfaced this Page
pageNameThe Page's own name, cleaned of Facebook's " | City ST" suffix
titleThe Page's og:title (falls back to the search-result title)
descriptionThe Page's public description โ€” likes/follower counts and its own bio text
urlCanonical Page URL, normalised from locale (it-it.) and mobile (m.) mirrors
emailThe public contact email
emailSourcefacebook_page_contact_info ยท facebook_page_text ยท search_snippet

Every one of those fields is always populated on every row โ€” a candidate that cannot fill them all is skipped rather than emitted with a blank.

Key Features ๐Ÿš€

  • โญ Real two-stage pipeline โ€” discover Pages, then open each Page and read its published Contact info
  • โญ Page-only focus โ€” 40+ path rules reject Groups, personal profiles, Marketplace, Events, Reels, Watch, Stories, hashtags and Facebook's own utility pages
  • โญ Survives Google's /goto link obfuscation via inline-JSON URL recovery, with a raw sweep and Brave Search as backups
  • โญ Locale-aware โ€” it-it.facebook.com, es-la.facebook.com, m., mbasic. and web. mirrors are all normalised to one canonical Page URL, so you never get the same Page twice
  • โญ Domain filtering โ€” keep only @gmail.com, only your own corporate domain, or everything
  • โญ Bandwidth-aware โ€” Page documents are streamed and cut off as soon as the contact block has been read, roughly a third of a full download
  • โญ Honest logging โ€” the run log reports how many Pages were seen, fetched, and where each email came from

How to use it ๐Ÿงญ

  1. โœ… Enter one or more Keywords (e.g. fitness studio, dental clinic, wedding photographer)
  2. โœ… Optionally set a Location to narrow results to one city or region
  3. โœ… Optionally set an Email Domains Filter (@gmail.com by default; clear it to accept every domain)
  4. โœ… Set Maximum Leads per Keyword
  5. โœ… Click Start โ€” leads stream into the dataset as they are found
  6. โœ… Export to CSV, Excel, JSON or feed the dataset straight into your CRM via the Apify API

Advanced settings (all optional) let you pin the discovery source, turn the Page-fetch stage off for faster/cheaper snippet-only runs, and control search depth.

Use Cases ๐ŸŽฏ

Lead Generation โ€” build targeted outreach lists of local businesses that publish a contact address on their Page. Marketing Campaigns โ€” reach studios, clinics, shops and agencies in a specific niche and city. Business Networking โ€” find collaborators, suppliers and partners by category. Market Research โ€” map how many Pages exist for a keyword in a region and how they describe themselves.

Input Parameters ๐Ÿงฉ

{
"keywords": ["fitness studio"],
"platform": "Facebook",
"location": "",
"emailDomains": ["@gmail.com"],
"maxEmails": 20,
"engine": "legacy",
"discoveryEngine": "auto",
"fetchPageDetails": true,
"maxSearchPages": 8,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
InputDescription
keywordsRequired. Keywords used to find relevant Pages
platformPlatform to scrape (Facebook)
locationOptional city/region filter
emailDomainsKeep only emails on these domains; empty = all domains
maxEmailsMaximum leads per keyword (default 20)
engineProcessing engine (legacy)
discoveryEngineauto (default), google or brave
fetchPageDetailsOpen each Page's About tab (default true)
maxSearchPagesHow deep to page through search results (default 8)
proxyConfigurationProxy used for Page fetching; Google always uses GOOGLE_SERP

Output Format ๐Ÿ“ค

[
{
"network": "facebook.com",
"keyword": "fitness studio",
"title": "Hive Fitness Studio | Wilkesboro NC",
"description": "Hive Fitness Studio, Wilkesboro. 834 likes ยท 1 talking about this ยท 232 were here. Fitness Redefined. We are a private personal training studio in Wilkesboro, NC offering expert-led small group...",
"url": "https://www.facebook.com/trainwithhive/",
"email": "hivefitnessstudio@gmail.com",
"pageName": "Hive Fitness Studio",
"emailSource": "facebook_page_contact_info"
}
]

This actor reads only publicly available information โ€” Pages that anyone can view logged-out, and the contact details a Page owner deliberately published for the public to use. It never logs in, never touches private profiles, and never accesses data behind an authentication wall.

  • โš–๏ธ Comply with Facebook's terms of service when using the results
  • โš–๏ธ Only use data that is publicly available; never attempt to reach private information
  • โš–๏ธ Do not use extracted addresses for spam or unethical marketing
  • โš–๏ธ Respect GDPR/CAN-SPAM and the data-protection law of your region, including opt-out handling
  • โš–๏ธ Do not resell or redistribute the extracted data without authorisation
  • โš–๏ธ Use the tool for legitimate business purposes only

FAQ โ“

Where does the email come from? From the Page's own public About โ†’ Contact info section in most cases; from the Page's visible text or the search snippet otherwise. The emailSource column always tells you which.

Why do some keywords return few leads? Because only a fraction of Pages publish an email at all, and the default filter narrows it further to @gmail.com. Clear the domain filter, drop the location, or raise maxSearchPages to widen the net.

Does it scrape private profiles? No. Personal profiles are explicitly filtered out โ€” that is a different actor's job โ€” and nothing behind a login is ever accessed.

Can I get more than the email? The Page name, category-rich description, canonical URL and source label come with every row today.

Will it invent data if it finds nothing? Never. An empty result is reported as an empty result.

Support and feedback

  • Bug reports: Open a ticket in the repository Issues section
  • Custom features: Contact our enterprise support team Lead: dev.scraperengine@gmail.com