Fresh Data Is Here for Person, Company & Employee Search API Endpoints Learn more

How To Find Anyone With An Advanced LinkedIn People Search
Unlock The Skills To Find Anyone

/ proxycurl

How To Find Anyone With An Advanced LinkedIn People Search

So you need to find someone. Maybe you're recruiting, maybe you're looking for sales leads, or maybe you're looking for funding for your startup - or startup founders you yourself can fund.

There are two approaches you might take:

  1. Search on LinkedIn
  2. Search on Google (this will probably take you to LinkedIn)

So we'll go straight to the source and walk through how to search on LinkedIn using its rich suite of Advanced Search options. Here's what we'll cover:

  • Search people by name
  • Search people by name and company
  • Search people by name and location
  • Search people by role and company
  • Search people by role and location

After this, we'll also take a look at a couple automated tools - whether or not you're a developer, we have a solution you can use!

Let’s get searching!

We’ll be using some known names and companies to demonstrate the different search tasks.

Search people by name

Say you’re a startup founder, and you spoke to a cool person at a casual tech event. You had a great conversation and after the event you wanted them on board your statup, but you have no info except their full name. So you go to LinkedIn and search.

  1. Search: ryan reynolds

You skim through the search results, “Nope, none of these look like the guy I met”.
Note: Remember to filter by People on top.

  1. Improve the search with quotation marks: “ryan reynolds”

You skim through the list, and oh you found the guy you met! Now you can connect with him on LinkedIn and message him there.
Note: by wrapping your search term with "", you managed to narrow the results by a lot. In this case, from 1200 to 767 results (circled in red).

Search people by name and company

At another conference, you heard an amazing woman on stage. You remembered her name, and vaguely remembered where she said she works. So you went onto LinkedIn and search.

  1. Search: amy hood

You saw the first result and it looked like the person you saw on stage. But you wanted to be more sure.

  1. Add company name to the search: amy hood microsoft

There, you’re sure it’s her now, and you found out she’s Microsoft CFO.

Interestingly, when company name is added in the search, additional info appears in the search results directly (highlighted in red box), whereas there was nothing in previous search results.

Search people by name and location

Now you're a journalist, and you recently read something about a woman with a last name of "Elbakyan" from Kazakhstan who is touted the Robin Hood of Science. Her works are highly priased by scientists, researchers, and students. You want to interview her.

  1. Search: elbakyan

Nothing that looks like the person you're looking for.

  1. Search: elbakyan , and filter by Kazakhstan

You filter by location Kazakhstan for narrower scope. Bingo.

Search people by role and company

In this scenario, you're a recruiter looking to hire software engineers who are from Apple. Let's search LinkedIn.

  1. Search: “software engineer” AND apple

Well, that was easy.

Search people by role and location

You work in a venture capital firm, and you want to invest in tech startups based in Silicon Valley. So you start searching for founders on LinkedIn.

  1. Search: tech AND founder and filter by location

You've gotten quite a good list out of the box. But you realize there are some investors included in the results - not what you're looking for (highlighted in red box).

  1. Exclude investors with NOT operator, and search one of the following:
    • NOT investor AND (tech AND founder)
    • NOT investor AND tech AND founder

Both work the same in this case; the NOT is only applied to the first clause, and AND is associative.

The results returned are now much more precise! You can start your outreach.

You’ve found your lead, what’s next?

Now that you've found your lead, it's highly likely you will send a connection request to them on LinkedIn, and once they accepted you can then message them within LinkedIn itself. But let's be honest, how often do you yourself open your LinkedIn messages, not mentioning to reply people? Will your contact really get back to you?

It would be great if you can find their emails or contact numbers, but this info is nowhere to be found in their profiles.

This is an even bigger chore if you need to contact dozens or even hundreds of them for recruitment, lead generation, or any other reason.

Beware: LinkedIn search limit

To make it all worse, after a few dozens of clicks on people’s profiles and sending of connection requests later, LinkedIn blocks you.

There’s no clear number for the limit, but LinkedIn does impose a monthly limit of free searches. Some guess that the limit is 1000 profiles a month because the accessible results are limited to only 100 pages (of 10 results each) despite there being more results (about 33,000 results).

Search thousands of profiles at once & get contact info

If you are searching for just a dozen of people or specific people once in a while, you can very well do it manually. What if you need to do a mass outreach of hundreds or thousands of people, or you need to automate your searches on regular basis?

And what if you want a better system for contacting people than LinkedIn messaging or InMail?

Using Proxycurl APIs, you can bypass LinkedIn's limit, search at scale, and automate your searches. Let's replicate the searches we did above with code.

In each case there will be two steps:

  1. Search or look up a list of LinkedIn URLs.
  2. Use the one of the Contact API endpoints to get the contact information we want.

First, let's take a look at step 1.

Searching people by various criteria

Search people by name

We'll use the Person Search Endpoint:

import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

person_endpoint = 'https://nubela.co/proxycurl/api/search/person'
params = {
    'page_size': '100',
    'last_name': 'reynolds',
    'first_name': 'ryan',
    'country': 'US',
}
response = requests.get(person_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))

Look people up by name and company

This time, we'll use the Person Lookup Endpoint:

import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/resolve'
params = {
    'company_domain': 'microsoft',
    'first_name': 'amy',
    'last_name': 'hood',
    'similarity_checks': 'include',
}
response = requests.get(api_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))

Search people by name and location

Back to the Person Search Endpoint:

import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

person_endpoint = 'https://nubela.co/proxycurl/api/search/person'
params = {
    'last_name': '(?i)(\\belbakyan\\b)',
    'country': 'KZ',
    'page_size': '1',
}
response = requests.get(person_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))

Search people (employees) by role and company

This time, instead of the Person Search Endpoint, we'll use the Employee Search Endpoint:

import json, os, requests

api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company/employee/search'
params = {
    'linkedin_company_profile_url': 'https://www.linkedin.com/company/apple/',
    'keyword_regex': '(i?)software engineer',
    'enrich_profiles': 'enrich',
    'page_size': '100',
}
response = requests.get(api_endpoint, params=params, headers=headers)
print(json.dumps(response.json(), indent=2))

Search people by role and location

And finally, back to the Person Search Endpoint:

import json, os, requests
api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

person_endpoint = 'https://nubela.co/proxycurl/api/search/person'
params = {
    'country': 'US',
    'page_size': '1',
    'city': 'Seattle|Los Angeles',
    'region': 'United States',
    'current_role_title': '(?i)founder',
}
response = requests.get(person_endpoint, params=params, headers=headers)
result = response.json()
print(json.dumps(result, indent=2))

Getting contact information

Now we have our LinkedIn URLs, and we can get contact information of the right people.

Get a phone number

You can get a phone number using the Personal Contact Number Endpoint. Phone numbers won't always be available, but if the result is empty, you won't be billed.

import json, os, requests

api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-contact'
params = {
    'linkedin_profile_url': 'https://www.linkedin.com/in/amyhood1/',
}
response = requests.get(api_endpoint, params=params, headers=headers)
print(json.dumps(response.json(), indent=2))

Get an email address

For this use case, we have the Work Email Lookup Endpoint. This one works a bit differently from the rest, as it prints results not to your application code, but to a webhook URL that you provide. webhook.site is a great place to test this.

Here's an example:

import json, os, requests

api_key = os.environ['PROXYCURL_API_KEY']
headers = {'Authorization': 'Bearer ' + api_key}

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/email'
params = {
    'linkedin_profile_url': 'https://www.linkedin.com/in/amyhood1/',
    'callback_url': 'https://webhook.site/d94554b5-f239-4e8b-903f-225d84258157',
}
response = requests.get(api_endpoint, params=params, headers=headers)
print(json.dumps(response.json(), indent=2))

The response will look like this:

{
  "email_queue_count": 0
}

But what you really care about are the results at the webhook URL (which contains an additional hash beyond the public one printed here). In this case it looks like this:

{
  "email": null,
  "status": "email_not_found",
  "profile_url": "https://www.linkedin.com/in/amyhood1"
}

So, we didn't get billed for this request, as no emails were provided.

Sapiengraph is a non-coder-friendly alternative

Confused by this much code? There's a good chance that Sapiengraph is just the right tool for you. With Sapiengraph, you can search for people within your spreadsheets without involving software engineers.

These are the Google Sheet formulas to find the people you needed to find from above:

=SG_LOOKUP_PERSON("Amy", "Microsoft", "Hood")

=SG_EMPLOYEES("https://www.linkedin.com/company/apple/",300,"software engineers","current")

After you found the profile URLs, grab their contact numbers and email addresses using the Personal Contact Number Lookup Formula and Personal Email Lookup.

Sign up for a new account and follow the onboarding steps to install the add-on to get started.

Sapiengraph was launched in early July 2023 - so if it's missing features you want to see, let us know! We have a lot on our roadmap still, and we always want to know what customers want the most. Send us an email at [email protected] and tell us what you think so far!

Steven Goh | CEO
Share:

Subscribe to our newsletter

Get the latest news from Proxycurl

Featured Articles

Here’s what we’ve been up to recently.