Retrieve LinkedIn Profiles for Prospects
Overview
Use Apollo API to find prospects who match your search criteria, then enrich those people to retrieve their LinkedIn profile URLs.
This tutorial shows how to:
- Find sales leaders at a specific company with the people API search endpoint.
- Pass the returned Apollo person IDs to the bulk people enrichment endpoint.
- Retrieve the
linkedin_urlfor each matched person.
CreditsWhile People API search doesn't consume credits, bulk people enrichment may use credits based on the data returned and the enrichment options enabled. Check out Apollo API pricing and credits for details.
1: Find Sales Leaders at a Company
To find people in sales leadership roles at Northstar Labs:
- Call the people API search endpoint:
POST https://api.apollo.io/api/v1/mixed_people/api_search- Add the following query parameters:
| Parameter | Value for this Example | Notes |
|---|---|---|
person_titles | ["sales", "revenue"] | Add each title keyword as a separate string in the array. |
include_similar_titles | true | Includes people with related job titles. |
person_seniorities | ["c_suite", "head", "director", "manager"] | Filters people by the seniority of their current role. |
q_organization_domains_list | ["northstarlabs.example"] | Filters people by the domain of their current employer. |
per_page | 5 | Sets the number of results returned per page. Enter an integer from 1 to 100. |
- Add the following keys and values to the header of your request:
- Content-Type:
application/json - Cache-Control:
no-cache - x-api-key: Enter your Apollo API key.
- Content-Type:
cURL Request
The following shows the example as a cURL request:
curl --request POST \
--url 'https://api.apollo.io/api/v1/mixed_people/api_search?person_titles[]=sales&person_titles[]=revenue&include_similar_titles=true&person_seniorities[]=c_suite&person_seniorities[]=head&person_seniorities[]=director&person_seniorities[]=manager&q_organization_domains_list[]=northstarlabs.example&per_page=5' \
--header 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--header 'accept: application/json' \
--header 'x-api-key: YOUR_API_KEY'Postman Request
As an example, here's how the request can be formatted in Postman. If you prefer to pass parameters via the body of the request, use the raw option instead of form-data.
Response Details
A successful request returns a 200 response status and JSON data similar to the following response:
{
"total_entries": 5,
"people": [
{
"id": "690b88979047af00018964d6",
"first_name": "Leona",
"last_name_obfuscated": "Va***z",
"title": "Chief Revenue Officer",
"last_refreshed_at": "2026-01-27T15:32:57.645+00:00",
"has_email": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_direct_phone": "Yes",
"organization": {
"name": "Northstar Labs",
"has_industry": true,
"has_phone": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_zip_code": true,
"has_revenue": true,
"has_employee_count": true
}
},
{
"id": "61a511f96d769100019865b3",
"first_name": "Owen",
"last_name_obfuscated": "Be***t",
"title": "Head of Sales",
"last_refreshed_at": "2026-01-22T14:56:15.000+00:00",
"has_email": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_direct_phone": "Maybe: please request direct dial via people/bulk_match",
"organization": {
"name": "Northstar Labs",
"has_industry": true,
"has_phone": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_zip_code": true,
"has_revenue": true,
"has_employee_count": true
}
},
{
"id": "67fd9513c9c77600013a8e0d",
"first_name": "Imani",
"last_name_obfuscated": "Ro***s",
"title": "Director of Sales",
"last_refreshed_at": "2026-01-15T17:46:16.444+00:00",
"has_email": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_direct_phone": "Yes",
"organization": {
"name": "Northstar Labs",
"has_industry": true,
"has_phone": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_zip_code": true,
"has_revenue": true,
"has_employee_count": true
}
},
{
"id": "60f1b124338c3000015197a5",
"first_name": "Theo",
"last_name_obfuscated": "Ma***n",
"title": "Revenue Operations Director",
"last_refreshed_at": "2026-01-16T14:49:42.627+00:00",
"has_email": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_direct_phone": "Maybe: please request direct dial via people/bulk_match",
"organization": {
"name": "Northstar Labs",
"has_industry": true,
"has_phone": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_zip_code": true,
"has_revenue": true,
"has_employee_count": true
}
},
{
"id": "65a91ce35b3e6e00016a6b9a",
"first_name": "Nadia",
"last_name_obfuscated": "Ha***n",
"title": "Sales Manager",
"last_refreshed_at": "2026-01-17T03:20:18.000+00:00",
"has_email": false,
"has_city": true,
"has_state": true,
"has_country": true,
"has_direct_phone": "Yes",
"organization": {
"name": "Northstar Labs",
"has_industry": true,
"has_phone": true,
"has_city": true,
"has_state": true,
"has_country": true,
"has_zip_code": true,
"has_revenue": true,
"has_employee_count": true
}
}
]
}The following table details some key elements of the API response:
| Element | Description |
|---|---|
total_entries | The total number of people who match the search criteria. |
id | The Apollo person ID. Use this value to enrich the person and retrieve their LinkedIn profile URL. |
first_name | The person's first name. |
last_name_obfuscated | An obfuscated version of the person's last name. |
title | The person's current job title. |
organization | Availability indicators for data about the person's current employer. |
People API search returns limited person and organization data. It doesn't return the LinkedIn profile URL in the search response.
2: Retrieve the LinkedIn Profile URLs
Use the Apollo person IDs returned by people API search to retrieve complete person profiles.
To enrich the five people returned in the previous example:
- Call the bulk people enrichment endpoint:
POST https://api.apollo.io/api/v1/people/bulk_match- Add a
detailsarray to the request body. Include oneidfor each person you want to enrich.
{
"details": [
{
"id": "690b88979047af00018964d6"
},
{
"id": "61a511f96d769100019865b3"
},
{
"id": "67fd9513c9c77600013a8e0d"
},
{
"id": "60f1b124338c3000015197a5"
},
{
"id": "65a91ce35b3e6e00016a6b9a"
}
]
}- Add the following keys and values to the header of your request:
- Content-Type:
application/json - Cache-Control:
no-cache - x-api-key: Enter your Apollo API key.
- Content-Type:
cURL Request
The following shows the example as a cURL request:
curl --request POST \
--url 'https://api.apollo.io/api/v1/people/bulk_match?reveal_personal_emails=false&reveal_phone_number=false' \
--header 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--header 'accept: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '{
"details": [
{
"id": "690b88979047af00018964d6"
},
{
"id": "61a511f96d769100019865b3"
},
{
"id": "67fd9513c9c77600013a8e0d"
},
{
"id": "60f1b124338c3000015197a5"
},
{
"id": "65a91ce35b3e6e00016a6b9a"
}
]
}'Response Details
A successful request returns a 200 response status and a matches array containing the enriched person profiles:
{
"status": "success",
"error_code": null,
"error_message": null,
"total_requested_enrichments": 5,
"unique_enriched_records": 5,
"missing_records": 0,
"matches": [
{
"id": "690b88979047af00018964d6",
"first_name": "Leona",
"last_name": "Valdez",
"name": "Leona Valdez",
"linkedin_url": "https://www.linkedin.com/in/leona-valdez",
"title": "Chief Revenue Officer",
"organization": {
"name": "Northstar Labs",
"primary_domain": "northstarlabs.example"
}
},
{
"id": "61a511f96d769100019865b3",
"first_name": "Owen",
"last_name": "Bennett",
"name": "Owen Bennett",
"linkedin_url": "https://www.linkedin.com/in/owen-bennett",
"title": "Head of Sales",
"organization": {
"name": "Northstar Labs",
"primary_domain": "northstarlabs.example"
}
},
{
"id": "67fd9513c9c77600013a8e0d",
"first_name": "Imani",
"last_name": "Roberts",
"name": "Imani Roberts",
"linkedin_url": "https://www.linkedin.com/in/imani-roberts",
"title": "Director of Sales",
"organization": {
"name": "Northstar Labs",
"primary_domain": "northstarlabs.example"
}
},
{
"id": "60f1b124338c3000015197a5",
"first_name": "Theo",
"last_name": "Martin",
"name": "Theo Martin",
"linkedin_url": "https://www.linkedin.com/in/theo-martin",
"title": "Revenue Operations Director",
"organization": {
"name": "Northstar Labs",
"primary_domain": "northstarlabs.example"
}
},
{
"id": "65a91ce35b3e6e00016a6b9a",
"first_name": "Nadia",
"last_name": "Hassan",
"name": "Nadia Hassan",
"linkedin_url": "https://www.linkedin.com/in/nadia-hassan",
"title": "Sales Manager",
"organization": {
"name": "Northstar Labs",
"primary_domain": "northstarlabs.example"
}
}
]
}Use the linkedin_url value from each object in the matches array to access the person's LinkedIn profile.
| Element | Description |
|---|---|
id | The Apollo person ID submitted in the enrichment request. |
name | The person's complete name. |
linkedin_url | The URL for the person's LinkedIn profile. |
title | The person's current job title. |
organization | Details about the person's current employer. |
Updated 8 days ago
Whatβs Next
Test the people API search endpoint and build your own prospect search.