How to Automate Professional Networks Messaging (without Professional Networks’s Messaging API)

March 5, 2024

16 min read

The idea of being able to programmatically message anyone on professional networks, the world's largest social networking site, is quite appealing. But is it possible?

The idea of being able to programmatically message anyone on professional networks, the world's largest professional networking platforming site, is quite appealing.

Unfortunately, while the the platform Messages API does exist, it falls under the Compliance API, and to gain access to the Compliance API, you need to become a member of the Compliance Partner Program, which is quite heavily regulated.

Here's how the platform describes the requirements themselves:

The Compliance Partner Program is a private and paid program where the platform provides access only to companies with use cases that meet our requirements. The requirement being that the organization or its customers should be FINRA / SEC registered. The primary use case should be archiving and monitoring regulated member's (from financial institutions) posts and public correspondence as required for the organization to be compliant with FINRA & SEC regulations.

So if you're not FINRA / SEC registered, don't bother. The main use case should also be for archiving and monitoring as required by FINRA and SEC regulations, not for anything like sales or marketing.

Furthermore, the the platform Messages API has these additional ground rules:

  • Your messages must be tied to specific user actions.

  • Your users must opt-in for messaging.

  • You can't give incentives for opting in to receive messages from you.

  • Your messages must be pure text. No styling of any kind.

The above limitations would rule out about 99% of people, but, if you do happen to be one of 3 people in the world eligible for the the platform Messages API (I'm kind of joking), you can [apply for approval to the Compliance Partner Program here](https://forms.office.com/pages/responsepage.aspx?

On the other hand, if you're in the majority that don't qualify for the Messages API, keep reading:

Alternative solutions to the the platform Messages API

While there are quite a few the platform automation tools designed to unofficially automate various tasks, there are three main the platform automation tools designed entirely for messaging:

1) Dripify

Dripify CRM's homepageAs the name would suggest, Dripify focuses on "drip campaigns" which is just another way of saying complex outreach or if/then-based automation campaigns. Sometimes days, or weeks out, with varying paths possible depending on the prospects' actions (or lack of actions).

And it all functions via a simple web application:

What a Dripify campaign looks like (Source: Dripify)It works quite well overall for the platform messaging automation and integrates with many different applications.

on the platform, you can only message your 1st-degree connections, so you'll need to be connected first to send a message.

Luckily Dripify comes with a way to send connection requests via email to help circumvent what is normally approximately a 100 connection-per-week limit, which definitely comes in handy. Outside of that, it has a limit of 100 messages per day for a free the platform account or 150 messages per day for a paid the platform account.

Dripify's plans range from $59 per user per month to $99 per user per month.

2) Octopus CRM

Octopus CRM's homepageYou could consider Octopus CRM Dripify's little brother in a sense. In fact, I'm honestly not sure if they're not owned by the same company.

But anyway, Octopus CRM does everything Dripify does in a simpler fashion, for less. Granted, it doesn't have as much automation complexity, so you are indeed getting less functionality.

Also, instead of operating via a web application, it operates via a Google Chrome extension:

Octopus CRM's the platform messaging automation dashboardIt supports sending connection requests via email, as well as supporting 100 messages per day on a free the platform account, or 150 per day on a paid the platform account.

Pricing for Octopus CRM ranges from $9.99 per month to $39.99 per month, so quite a bit more affordable than Dripify.

Overall, I think it's a great balance of simplicity and functionality for automating the platform messaging.

3) Expandi

Expandi's homepageEverything with Expandi just works. And you don't have to click around much to find what you need, but you can rest assured that it has all of the complexity you need.

It functions pretty similarly to Dripify and also operates via a web app (no browser extension required):

Expandi's messaging automation dashboardThey advertise 300 connection requests per week and place a limit on the number of messages you can send per day at 100.

Expandi clocks in at the most expensive on this list, starting at a relatively steep $99 per month.

Now that you know the top 3 alternative tools for automating the platform messaging, let's talk about the bad part about doing it this way:

The con about doing the platform messaging automation this way

the platform isn't a fan of automation at all. Here's their official stance on it:

the platform is committed to keeping our members' data safe and our platform free from fraud and abuse. In order to protect our members' privacy and keep the platform a trusted platform for authentic interactions, we don't allow the use of third-party software or browser extensions that scrape, modify the appearance of, or automate activity on the platform's website.

And they're pretty successful at preventing automation on the platform, too.

These the platform automation tools can only circumvent the platform's built-in limitations so well, but at the end of the day, the platform's limitations are difficult to bypass. That's why all of these tools more or less share the same limitations.

It's always going to be a game of cat and mouse automating the platform messaging this way, and any account you automate the platform messaging on will always be at risk. At scale, you'll constantly be rotating the platform accounts.

This is why many opt to add the platform messaging as a touchpoint in their outreach but don't rely on it entirely. There's a reason cold emailing and cold calling are still around, and that's because they still work.

That said, there are different ways to tap into the power of the platform for outreach without having to deal with its messaging limitations…

Let me explain more:

Enriching the platform contacts and taking your outreach off the platform

the platform is the world's largest B2B database, and very useful because of this (particularly for B2B businesses), but there are some inherent flaws in doing outreach on the platform. Particularly at scale.

So, instead of just staying on the platform, confined to the limitations that fundamentally exist on the platform's messaging platform, you can tap into the data contained on the platform, and automate your outreach off-platform. It's kind of the best of both worlds and works quite well.

We can get all of the things we need for outreach from professional networking platforms like:

  • Name

  • Job role

  • Work experience

  • A general prospect description

  • Education history

  • Phone/email

  • Beyond

But it requires quite a bit of patience and knowledge to be able to successfully scrape this data at scale from professional networking platforms, and a rotating rolodex of things like the platform accounts and proxies.

(Note: Curious about the legality of scraping profile data? To keep things short: it's legal if it's public data. You can learn more about that here.)

Many software developers simply don't want to deal with scraping platforms like the platform, even if they have the technical know-how, because they know it's going to be a big headache to keep operational.

the platform definitely goes the extra mile to make a scraper's life painful and intentionally does things like slightly changing web structure all the time to break scrapers. Even if it's obviously not going to do anything other than temporarily break things.

Luckily for you, you don't have to worry about scraping the platform yourself to source the data you need for outreach. We did it for you.

Meet Enrich Layer: a B2B data provider and API

Over here at [Enrich Layer](https://Enrich Layer.com), we've scraped hundreds of millions of user profiles (companies, personal profiles, jobs) with all of the same data points you could expect from professional networking platforms. The dataset we've built with it is called LinkDB.

Then we took that dataset and built a B2B data enrichment API named Enrich Layer with it as well as added additional data sources such as Crunchbase.

Using our different endpoints, you can programmatically pull all of the B2B data you could ever possibly need and use that to build an automated outreach system.

Our different API endpoints

Enrich Layer has many different API endpoints, such as the Person Profile Endpoint, which allows you to enrich any given social media URL, specifically a professional networks profile URL. Or the Company Profile Endpoint, which allows you to get structured data of any given the platform company URL.

For pulling contact information, we have our Personal Contact Number Lookup Endpoint, Personal Email Lookup Endpoint, and our Work Email Lookup Endpoint.

These endpoints, however, only allow you to input a given URL and receive a result back.

So, they work well if you're interested in enriching specified contacts/profiles, but, our Search API (which contains both a Company Search Endpoint, and a Person Search Endpoint), on the other hand, will allow you to search through our entire dataset for a given result.

For the sake of this article, we'll primarily be focusing on the Person Search Endpoint.

Let's put this into practice:

Programmatically searching and extracting data from professional networking platforms

There are a ton of different ways you can use an API to build systems and pull data.

But to keep things simple and pretty universal, in this article, I'll only be using:

  • Python, my programming language of choice

  • A .CSV file

  • An outreach tool

Python is quite easy to use and frequently used for data manipulation so it'll work perfectly here. I chose .CSV as our plain text format for storing data because it's easy and all of these outreach tools support using it as an export/import format.

So, for example, let's say we run a marketing agency that focuses on computer cleaner software companies, so we want to target decision-makers (not gatekeepers), but specifically the founders/co-founders of these companies. That way, our chance of actually closing a deal goes way up.

The following Python script would use our Person Search Endpoint as well as our Personal Contact Number Lookup Endpoint and our Personal Email Lookup Endpoint to search our API for the founders of computer software companies and export their contact information for us:

`import requests import csv

API credentials and endpoint configuration

api_ # Replace with your actual API key contact_phone_ contact_email_

Parameters for the initial search request

search_ 'country': 'US', 'current_role_title': 'founder', 'current_company_industry': 'computer software', 'page_size': '1', 'enrich_profiles': 'enrich', }

Output CSV file and headers configuration

output_ 'the platform_profile_url', 'first_name', 'last_name', 'occupation', 'headline', 'company', 'company_the platform_profile_url', 'city', 'state', 'personal_phone_number', 'personal_email' ]

def fetch_contact_info(api_endpoint, the platform_profile_url): """Fetch personal contact info (phone number or email).""" Social Network_profile_url': the platform_profile_url} if response.status_ 200: if 'personal-contact' in api_endpoint: return ', '.join(data.get('numbers', [])) elif 'personal-email' in api_endpoint: return ', '.join(data.get('emails', [])) else: print(f"Error fetching contact info from {api_endpoint}: , {response.text}") return ”

def extract_company_info(profile): """Extract the most relevant company name and the platform URL from the profile's experiences.""" company_ company_the platform_ []) if experiences: most_recent_ company_ ”) company_the platform_ Social Network_profile_url', ”) return company_name, company_the platform_url

def process_and_write_profiles(writer, result_limit): """Fetch profiles and write their details, including contact info, to the CSV file.""" result_

while url and result_count < result_limit: if response.status_code != 200: print(f"Error fetching profiles: , {response.text}") break for profile in data.get('results', []): if result_count >= result_limit: break

email_ profile['the platform_profile_url']) phone_ profile['the platform_profile_url'])

profile_ {}) first_ ”) last_ ”) ”) ”)

company, company_the platform_ ”) ”)

writer.writerow({ 'the platform_profile_url': profile['the platform_profile_url'], 'first_name': first_name, 'last_name': last_name, 'occupation': occupation, 'headline': headline, 'company': company, 'company_the platform_profile_url': company_the platform_url, 'city': city, 'state': state, 'personal_phone_number': phone_info, 'personal_email': email_info, }) result_count += 1

next_page_ if next_page_url and result_count < result_limit: else: break

with open(output_file,,) as file: writer.writeheader() process_and_write_profiles(writer, 10)

Add desired result limit above

print("Completed fetching professional networks profile data with contact information.") ` Result returned in Pycharm, my Python IDE of choice, when the script hits the specified lead quantityIt's set to generate 10 leads, grabbing the following information from the prospects found in your given search query:

  • professional networks profile URL

  • Full name

  • Occupation

  • Headline of the given profile

  • Company they work for

  • Their companies the platform URL

  • City

  • State

  • Personal phone number

  • Personal email number (to pull work emails on top of personal emails, you'd just need to integrate our Work Email Lookup Endpoint with the script as well)

And then writes it into a .CSV named enriched_profiles_with_contacts.csv in the same folder as script is ran in:

Exported results from our Python script(Note: To receive an API key for testing, you can click here to create your account.)

It's important to note that our Search API supports Boolean operators as well, so you can use AND,ORandNOT to refine your search results.

So, if for some reason you wanted exclusively founders instead of founders and co-founders (which the above query would search for), you could change it to 'current_role_title': 'founder NOT co-founder' accordingly, instead of 'current_role_title': 'founder'.

Additionally, to change the quantity of the amount of leads generated, just change the quantity at the end of the script where it says process_and_write_profiles(writer, 10).

We now have a way to programmatically search for and extract contact information

Nice e have a .CSV full of our desired prospects' contact information ready for outreach. We just have to actually reach out.

(Note: To enrich a given profile, without searching, you'd use our Person Profile Endpoint. You can export the results in a very similar fashion. You can check out our docs here.)

To do so, we'll use an outreach tool:

Turning B2B data into automated outreach

We'll use Reply.io in this example as they work quite well (and they're a customer of ours), but there are several other automated outreach tools available, too.

Reply.io's homepageAnyway, using that same .CSV from earlier, we can import every single contact and data point we gathered earlier into Reply.io and create an outreach sequence.

First, click "People" and then "New import" and then finally "Import from CSV" on Reply.io's dashboard:

Reply.io's import processThen map the according data in our .CSV to variables within Reply.io – you can also create any custom variables you'd like for importing variables that don't already exist within the platform:

Mapping our variables within Reply.ioNow all you have to do is click "Sequences" and "New sequence" and build out your desired outreach automation campaign:

Reply.io's sequencesYou can build it out until your hearts content, combining email, text, etc (Reply.io supports the platform messaging as well):

Reply.io's sequence builderUsing any of the variables that we imported that you'd like:

Repy.io's message editorNot bad utomating your the platform outreach really is that simple.

But let me show you another old-school option as well:

The barebones alternative option for cold emailing

If you want to focus solely on cold email outreach using profile data, you could use a tool like Sendy, which is a simple self-hosted email automation tool. I've used it for years, and as a company, Enrich Layer has also used it.

Sendy's homepageIt costs $69 one time and integrates with AWS SES, which costs $0.10 per 1,000 emails. You can also use it with any other email relay out there.

We published an A-Z guide on using Sendy for cold emailing here, so I won't get too in-depth on this article, but it's quite easy to use.

The only con is the importation system, but you could use the following script to import your .CSV using the Sendy API after configuring your custom fields in Sendy (which we explain how to do in the guide).

`//-------------------- EDIT HERE -----------------------// $sendy_; $api_; $list_; $csv_;
//------------- STOP EDITING HERE --------------------// ini_set('auto_detect_line_endings',TRUE); $file_ "r"); $

while ( eof($file_handle) ) sleep(5); // Throttling requests to avoid overloading Sendy or your server }

echo htmlspecialchars($line_of_text[1], ENT_QUOTES, 'UTF-8'); echo '<br>'; }

fclose($file_handle); curl_close($ch); //------------------------------------------------------// Just create animportfolder in your Sendy installation, createindex.php` within that, and copy and paste the above script, adding your Sendy API information at the top (it's available in your Sendy settings).

Then upload your .CSV in that same folder and go to YourSendyInstall.com/import/index.php and all of your list will be imported with the according data points (it may take a while depending on your quantity of leads, let it run).

Then from there on, you can automatically cold email your new leads

See? You didn't need a the platform Messages API anyway

You can do all of your outreach on your own.

from professional networking platforms messaging to cold emailing, to texting and beyond. You can do it all, programmatically, with Enrich Layer in combination with your cold emailing or outreach tool of choice.

Unfortunately, it may not be as you imagined, officially through the the API, but it's certainly still possible to tap into the vast B2B database that the platform offers and automate outreach with it.

You could even further improve on the ideas displayed here in this article, automating this process even more, such as integrating our API directly with other outreach solutions APIs, requiring no need to upload a .CSV or anything similar.

You'll just need to weigh out the pros and cons of the platform automation and decide what outreach setup is right for you.

Create your account

If you're ready to level up your outreach and tap into an excessive amount of rich B2B data, you can click here to create your account today.

It's free and you'll start with 10 credits to test out a few basic actions. Then you can opt for a pay-as-you-go plan and top up as little as $10, or select a subscription. For more information on our pricing, you can view this page here.

Thanks for reading, and here's to better outreach P.S. Have any questions about our API or about how we can help your the platform outreach process? Send us an email over to "[email protected]" and we'll be glad to help.