How To Automatically Track LinkedIn Job Changes

Picture this: the decision-maker of a hard-won account you've nurtured is transitioning to new a Fortune 500 company. This shift presents both an opportunity and a challenge.

The opportunity? Engaging with a familiar decision-maker in a new, potentially lucrative setting.

The challenge? The void left at the previous company and the need to identify the new decision-maker to replace the one you developed a relationship with.

Either way, to navigate these waters, you'll need to know as soon as possible when that job changes, and be able to refresh the data you had on both the old and new decision-maker.

That job change created a prime buying window, and time is ticking to take advantage of it before your competitors do.

In this article, we will show you how you can track job changes at scale within your organization.

And I don't just want you to take my word for it. Most articles lead with fluff. This one's different.

It's important I show you that we know what we're talking about right away, so, if you click here, you can see job change tracking in action.

Specifically, you'll see a sample list of Software Engineers, CEOs, and VPs who just changed jobs in the last week -- and we will keep updating this weekly.

Think about it

When you started your last job, didn't you have a desire to leave a quick good impression? Many people think that way.

If you can find a decision-maker when they first change jobs, you're finding an ideal buying window. Finding someone at the right time leads to way less convincing, and much more selling.

Tracking job changes can also help decrease churn when you proactively monitor your accounts for your key contact leaving, as well as identify new internal account expansion opportunities and buying windows.

But, the problem is:

  1. It's not easy to track job changes.
  2. It's not easy to automatically reflect those changes.
  3. It's especially not easy to do this at scale with thousands of contacts in your CRM.

Our goal is to change that for you -- it's important for your organization to be able to track job changes, and it shouldn't be hard.

By the end of this article, you'll walk away being able to automatically track job changes.

How is it possible to track job changes?

There are a couple of different ways of doing it to varying levels of success. The gold standard is to track for employment changes on LinkedIn.

Here at Proxycurl, we adhere to the gold standard by scraping LinkedIn.

Of course, with something like job changes, the data needs to be freshly scraped.

The logistics of doing this come with a lot of headaches that are unappealing for many businesses.

For starters, LinkedIn does not want to give out its data and doesn't even really provide API access.

Sales Navigator isn't quite the ideal solution, either; yet, LinkedIn certainly remains the number one source of tracking job changes.

Almost everyone keeps an up-to-date LinkedIn profile, and they almost always quickly update it when they've accepted a new position.

Anyways, since LinkedIn understands the value of their data and puts a steep (or even unobtainable) price on it; that means you have to scrape it.

Scraping LinkedIn

Scraping LinkedIn is hard and scraping LinkedIn at scale requires a dedicated and experienced team of data scientists and software engineers.

I'm not going to get into the exact specifics of how we do it here at Proxycurl (it's very nerdy, complex, and boring). But, I will say it requires a very sophisticated setup to continuously scrape millions of LinkedIn public profiles -- different IPs, devices, and so on. Captcha solvers, the whole thing.

The thing about tracking job changes though is it only helps you if it's fresh and accurate. That means you have to keep scraping for job changes.

Data freshness is important, so it's not like you can just buy large datasets one-off and be set for something like tracking job changes.

So, rather than dealing with the pain of building data science and web crawling teams to scrape data, most businesses opt to outsource that to other data providers, like Proxycurl, so we deal with the headache of continuously obtaining fresh and rich data for you.

You just have to focus on implementing that data in your business.

The three requirements your job tracking application needs

1) As close to real-time tracking as you can get

You need to know as soon as possible when a decision-maker changes for the best results.

Remember, if we know about this, other people know about this. Other people are going to be waiting, and you need to be the one to get there first.

2) Automated updates

It's important to automate everything we can so that everything "just works" and doesn't cause headaches.

Your sales team should be able to access rich and accurate information ASAP with no headaches being involved.

3) Notifications sent when a major decision-maker changes

We need to do more than just automatically update job changes.

You, or someone at your organization need to be notified in a timely manner when a key decision-maker changes so that you can be the first to take action.

How other job tracking applications work

Lusha provides the ability to prospect with specific filters, one of them being job changes with the minimum interval being 60 days:

How Lusha does job tracking

Seamless.AI only allows you to track job changes by uploading a .CSV and then it pulls job history for you:

Uploading a .CSV on Seamless.AI

UserGems comes the closest to successfully pulling it off in my opinion:

UserGems example

They advertise the following with their job tracking feature:

What UserGems advertises in terms of job tracking

And also advertise a "95% match rate and provide email addresses with less than 5% bounce rate."

It's very likely all of these solutions rely on LinkedIn for job tracking.

Implementing job change monitoring at scale

Now that you have an understanding of the different job tracking methods out there and how they usually work, let me present you with a new solution...

Let's say you have a Salesforce CRM with 1000 organizations and their relevant contacts; totaling around 3000 contacts.

In order to be able to track these contacts for job changes, we'll need to be able to monitor their LinkedIn.

First, in order to track their LinkedIn, we must know their LinkedIn profile URL.

Luckily for you, almost everyone has a LinkedIn, and a lot of CRMs store this information; however, some don't.

In that case:

My CRM doesn't provide LinkedIn profile URLs, what do I do?

Don't worry. Proxycurl provides the capability to correlate a person with their LinkedIn Profile URL.

If your CRM doesn't provide you with a LinkedIn profile URL, you can use other identifying factors to look up their LinkedIn profile URL.

  • It is likely that you have a name and the company name of prospects in your CRM, and if you do, you can use our Person Lookup Endpoint to fetch a LinkedIn Profile URL.

You can see the example below where we try to correlate Bill Gates with his LinkedIn Profile URL:

import requests
  
api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/resolve'
params = {
    'company_domain': 'gatesfoundation.org',
    'first_name': 'Bill',
    'similarity_checks': 'include',
    'enrich_profile': 'enrich',
    'location': 'Seattle',
    'title': 'Co-chair',
    'last_name': 'Gates',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=headers)

See the example below where we try to correlate Daniel, an ex-employee of Proxycurl with his LinkedIn Profile URL:

import requests
 
api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/resolve/email'
params = {
    'lookup_depth': 'deep',
    'email': 'danial@nubela.co',
    'enrich_profile': 'enrich',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=headers)

With a Software Engineer, you can automate the trivial lookup process.

Monitoring job changes with a LinkedIn profile URL

After you have your list of LinkedIn profile URLs, we can use our Person Profile Endpoint to monitor it for job changes.

The important part is to use this endpoint with the use_cache=if-recent parameter to fetch a fresh profile no older than 29 days.

On a high level, job changes are tracked in the following manner:

  1. Build a database of profile data that is to be compared with for changes. To do so, make one sweep through the list of profile URLs with the Person Profile Endpoint -- using the use_cache=if-recent parameter and then store the state in a database.
  2. Periodically, make another sweep through the list of profile URLs with the Person Profile Endpoint again with the same use_cache=if-recent parameter and compare the fresh profile data with the older profile in the database. You will want to look out for differences in the experiences (work history) list of objects. The first object is the current place of employment. If the title and/or the company_linkedin_profile_url has changed, then it means this profile has had a job change in the last 29 days.

With Python code, this is how it can be done:

import requests

api_key = 'YOUR_API_KEY'
headers = {'Authorization': 'Bearer ' + api_key}
api_endpoint = 'https://nubela.co/proxycurl/api/v2/linkedin'
params = {
    'linkedin_profile_url': 'https://linkedin.com/in/johnrmarty/',
    'use_cache': 'if-recent'
}
response1 = requests.get(api_endpoint,
                        params=params,
                        headers=headers)


# 30 days later, repeat the request
response2 = requests.get(api_endpoint,
                        params=params,
                        headers=headers)
                        
# check for title differences in both profiles
if response1.json()['experiences'][0]['title'] != response2.json()['experiences'][0]['title']:
    pass # do something, there is a job title change!
   
if response1.json()['experiences'][0]['company_linkedin_profile_url'] != response2.json()['experiences'][0]['company_linkedin_profile_url']:
    pass # do something, there is a company change!

Create your Proxycurl account

We'd love to help you grow with richer, fresher, and more accurate data.

To get started monitoring job changes at scale, you can click right here to create your Proxycurl account.

If you have any questions about how we can help you enrich your company's data please feel free to reach out to us at "hello@nubela.co".

But this article isn't over yet...

Over here at Proxycurl besides showing you a demo of job tracking working using our API, and telling you how your business could implement job tracking at scale using our API...

We also wanted to give you an easy, and hands-on way to do job tracking that anyone could do.

Introducing our FREE Chrome Extension to track Job Changes

To make job tracking even easier for you, we're releasing a Chrome extension under the Sapiengraph brand, designed to do just that. This Chrome Extension will be FREE.

This extension will:

  1. Fetch and parse profile data each time a user visits a LinkedIn profile.
  2. Periodically check profiles for job changes.
  3. Inject a "Monitor for job change" button onto LinkedIn profiles. When clicked, the profile is marked for monitoring.
  4. Store profile data for persistent monitoring.
  5. Send Chrome notifications to users when a monitored profile changes jobs.

I wish I could give you access right now, but unfortunately, all I can tell you to do is to:

Stay tuned

With our upcoming Chrome extension (slated to be released sooner than you expect), you'll have an easy and hands-on way to track job changes that will require zero coding from you.

Best of all: it's free.

To be the first to beta-test our free Chrome extension and get real-time notifications about job changes right in your browser, enter your email below:

Enter your first name:


Enter your email:

HP

We're excited about the products we're developing like Proxycurl and Sapiengraph, and we invite you to be a part of our journey.

Talk soon!