Facebook Groups are great to build a leads database. Reach out to your competitor group members or scrape thematic groups to find prospects.

The only problem is: scraping Facebook groups will get you a lot of bad-quality leads! Groups are filled with students, interns, and other people you don't want to target.

Facebook groups are powerful but group members need to be filtered. Here is my advice: Facebook group members must be a source to find relevant people to contact, but you must not mass mail the entire group! The challenge is to enrich your Facebook leads, segment them, and then contact the relevant prospects.

Facebook is a personal social network and personal data is protected. Some email-finding tools offer to find an email from a Facebook profile but I've found the result to be disappointing. It is easier to use information from the Facebook profile to find LinkedIn profiles. LinkedIn is great for cold messaging and because it's a business social network, lookup services to get email addresses from LinkedIn profiles work great.

Using this step by step guide, you will learn:

Step 1: Extracting leads from Facebook Group members

Facebook is a personal network and doesn't have built-in group members export. You need a third-party tool to export your group members.

Two options:

  • Use cloud extraction services like Phantombuster that run scripts on their servers using your Facebook credentials.
  • Use scripts or extensions inside your web browser to scrape data when you browse Facebook.

The only way to access Facebook group members is through the "New members" listing available on the group "People" tab. Scripts and browser extensions scrape data as you scroll the page, and cloud services do the same by mimicking user behavior in their servers.

New members are listed on the "People" page.
New members are listed on the "People" page.

Facebook combats scraping and has protection to detect automatic scrapers. To avoid being blocked, you need to use a proxy with cloud extraction services. Still, Facebook keeps improving its protection; so be careful with automatic scraping.

In this guide, I show you how to use a web browser script to scrape data as you browse the "People" tab.

Notes
To extract data, the "People" tab must be accessible on the group page. So, the group must be public or you must be a member for private groups.

Export Facebook group members into a CSV file

To extract Facebook group members, just copy-paste the following script into Chrome Developer Console.

Notes
The source code for the Facebook group scraper is available on Github. The script reads API calls done when loading members on the web page to extract members' data.

Open Chrome Developer Console - Keyboard shortcut "Ctrl + Shift + I" (on Windows) or "Cmd + Option + I" (on Mac).
Open Chrome Developer Console - Keyboard shortcut "Ctrl + Shift + I" (on Windows) or "Cmd + Option + I" (on Mac).
Copy-Paste Facebook Group Extractor script into the console tab.
Copy-Paste Facebook Group Extractor script into the console tab.

Scrape Facebook group members profiles

Press 'Enter' with your keyboard to run the script. A button with the text "Download X members" appears in the bottom right on the page.

You can close the Developer Console, your script is active 👍

A new button pop up
A new button pop up

Then, go to the "People" tab from the group page. Facebook displays a list of new members with automatic loading on scroll. Scroll down to load new members.

As you scroll, the script catches Facebook API calls and store the data in memory.

Scroll to scrape Facebook Group Members

Export Facebook members

Click on the "Download x members" button to export the members into a CSV file.

The CSV contains 8 columns:

  • Profile Id: Unique facebook identifier. Multi-digit number.
  • Full Name: First name and last name concatenated.
  • Profile Link: Profile URI in the format https://www.facebook.com/{{username}}. When not available, default to generic URI https://www.facebook.com/profile.php?id={{profile_id}}
  • Bio: Member bio text. Can be a job title, a school name, a city, or it can be empty.
  • Image Src: Profile picture URL.
  • Group Id: Facebook group identifier. Multi-digit number.
  • Group Joining Text: Relative time since user join the group. In the format: "Member since XX".
  • Profile Type: Facebook profile type. Can be "User" or "Page".

Notes
To stop scraping members and to remove the button, just reload the web page.

FAQ

How many members can I extract?

Facebook shows up to 10k members on the "New members" page. Members are sorted by date added. We recommend extracting members periodically and adding them to your existing leads database. See keep your exports up to date with new group members.

How long does it take to scrape group members?

The script scans Facebook API calls as you scroll the members' page. API calls are transparent and each call loads an average of 10 new members. By scrolling for a few minutes, I successfully extracted thousands of members.

Can my account be blocked by Facebook?

The script catches genuine API calls done inside the web page. No extra calls are performed, and no bot clicks are done. Everything happens inside your natural browsing behavior. This script is safer than other scraping applications running in the cloud and using proxy and bots to extract profiles.

That being said, always be careful and don't abuse Facebook. Avoid using fully automated scripts. If you can, use a second Facebook profile that is not your personal one.

Step 2: Find LinkedIn profiles

Do you have a CSV file with a lot of prospects? Great! Now it's time to turn it into a leads database!

Cold messaging on Facebook is spam. Facebook is a social network. I don't want to get business inquiries, and neither do your prospects.

With a prospect name and a company name (or domain), you can search for a LinkedIn profile which can be used for LinkedIn messaging or to get a business email address.

In this guide, you will learn how to enrich your Facebook prospects with their LinkedIn Profile URL.

Create a Datablist collection and import your CSV file

Datablist is perfect to view and edit CSV files and to run actions on your data. In this guide, I'll show you how to use the "LinkedIn Profile Finder" action on your prospects. It takes a name and a keyword and returns a LinkedIn profile URL if found.

First, sign-up on Datablist and create a collection.

Click the "+" button on the sidebar to create a collection. Then, click on "Import CSV/Excel".

Import CSV/Excel file
Import CSV/Excel file

Upload your CSV file, create a property for each CSV column and launch the import. Check our Import Data documentation for a step-by-step process.

Create a property for each column
Create a property for each column

Clean your leads list

First, filter your collection to remove "Page" profiles and keep only leads with "User" profile type.

Click Filters
Click Filters
Filter "Page"
Filter "Page"

Then delete them.

Delete unwanted "Page" leads
Delete unwanted "Page" leads

Then, if you like a minimalist view as I do, disable non-important properties. Hide all but the "Full Name", "ProfileLink" and "Bio" properties.

Manage Properties
Manage Properties
Hide Properties
Hide Properties

Then filter your collection to remove non-professional leads. Use Datablist search feature or filters to look for the keywords "school", "university", "student", "college".

Remove students, interns, etc.
Remove students, interns, etc.

And if you run a local business, filter for bios with your city/country.

Notes
Sometimes Facebook bio is misleading. For students, bio might be "Works at {school name}". Browse your leads and remove all leads with a school name in the bio.

Extract professional information

For group members with only a name and no info about where they work, you have to rely on manual search and enrich the profiles manually. The best way is to search on Google for "{full name} site:linkedin.com/in/" and look at the profiles listed by Google.

Searching for a LinkedIn profile with just a name usually returns homonyms. Look at their profile page, and use the location, job title, photo to find the profile that can be a prospect.

Hopefully, some Facebook profiles have a bio you can use to automatically narrow the profiles.

First, you need to extract keywords from the bio in a new property. Create a "Text" property with the name "Keyword". This property will be used to run Datablist "LinkedIn Profile Finder" (see below).

Create a new property
Create a new property
Keyword Property
Keyword Property

Then filter your Facebook leads database to show only leads with a bio text.

Show only leads with a bio
Show only leads with a bio

Now that you have narrowed it down to show only Facebook lead profiles with a bio, you need to extract from the "Bio" text a keyword to use Datablist "LinkedIn Profile Finder".

Extract Keyword automatically

Facebook generates bio texts with company names, job titles, etc.

Interesting bios look like "Works at XXX", or "Manager at XXX". A simple way to extract a keyword is to search for this pattern and parse the company name after the "at".

Start by filtering your leads for bios with " at ".

Important: Add a space between and after the at. Otherwise, words containing the letters at will appear.

Filter "Bio" texts with " at "
Filter "Bio" texts with " at "

Then, open Datablist Javascript Runner.

Open Javascript Runner
Open Javascript Runner

And copy/paste the following code (replace default script):

function runOnItem(item){
  // Check for bio
  if(!item.bio) return null;

  // Check for "at
  let parts = item.bio.split(' at ')
  if(parts.length===1){ return null }
  return {
    keyword: parts.pop(),
  }
}

This script will write the text after the string "at" to your keyword property

Warning
This script will work only if your properties are named "bio" and "keyword". Use your property names if they are different.
Remove any existing code in the code editor before pasting the javascript code above.

Parse company names
Parse company names

Extract the remaining keywords manually

For the remaining "Bio" texts, you can write other scripts when you find patterns. Otherwise, finish manually. Look for profiles with professional bios and fill the "Keyword" property with differentiating terms. Interesting bios contain the following terms: "works", "founder", "CEO", "marketing", etc. Adapt them with your business and your Facebook language.

Notes
To edit a cell, click on it and press "Enter" to switch to editing mode.

Fill keyword property
Fill keyword property

Run the "LinkedIn Profile Finder" action

"LinkedIn Profile Finder" uses search engines to find LinkedIn profiles automatically. This action is available in the Datablist "Standard" plan.

Sort your collection to show first the leads with a "Keyword" property filled. Then select leads using checkboxes on the left of your items. Datablist Actions panel will appear from the bottom. Select the action "LinkedIn Profile Finder" to open the action configuration drawer.

Important
The "LinkedIn Profile Finder" accuracy is directly proportional to the quality of the keywords.

Select LinkedIn Profile Finder
Select LinkedIn Profile Finder
Map Input Properties and add the "LinkedIn Page" result property to your collection
Map Input Properties and add the "LinkedIn Page" result property to your collection

Run "LinkedIn Profile Finder" by clicking the "Run action" button. This action is limited to 30 lookups at once. Process your Leads Database by chunks of 30 items.

Tips for better leads
LinkedIn is widely used in North America and Europe and less in Asia. To improve your LinkedIn profiles search, target regional groups. For example, look for groups with "European", or countries "French", "Canadian", etc.

Step 3: Update collection with new members

After the first scrape of Facebook group members, keep monitoring new members once in a while and update your Datablist collection.

Datablist lets you define a unicity constraint on any collection property. When "Do not allow duplicate values" option is enabled, duplicate rows will be skipped (or merged) during CSV import.

Enable "Do not allow duplicate values" for your "Profile Id" property. Values are unique for each Facebook profile and don't change.

Add unicity constraint on Profile Id
Add unicity constraint on Profile Id

If you have any feedback on this guide or if you have questions, please contact us.