# LinkedIn Profile, Company, Email & Phone Enricher (`datablow/linkedin-profile-enrichment`) Actor

Live LinkedIn data enrichment for people and companies without cookies. Enrich directly from LinkedIn URLs, work/personal emails, or phone numbers with automatic waterfall fallback. Full career, education, company size, and verification.

- **URL**: https://apify.com/datablow/linkedin-profile-enrichment.md
- **Developed by:** [datablow](https://apify.com/datablow) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LinkedIn Profile, Email & Phone Lead Enricher (No Cookies Required)

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com/datablow/linkedin-profile-enrichment)
[![B2B Lead Enrichment](https://img.shields.io/badge/B2B-Lead%20Enrichment-blue)](https://apify.com/datablow/linkedin-profile-enrichment)
[![Zero Ban Risk](https://img.shields.io/badge/Account%20Safety-100%25%20Ban--Proof-brightgreen)](https://apify.com/datablow/linkedin-profile-enrichment)
[![No Cookies Needed](https://img.shields.io/badge/LinkedIn%20Cookies-Not%20Required-success)](https://apify.com/datablow/linkedin-profile-enrichment)

> **The fastest, safest multi-attribute B2B lead enricher for LinkedIn. Reverse-lookup verified LinkedIn profiles from emails, phone numbers, or direct URLs with automatic Google SERP recovery—100% cookie-less & ban-proof.**

Turn incomplete contact lists into rich, decision-maker profiles. Whether you have just an email address (`satya.nadella@microsoft.com`), a direct calling phone number (`+1-425-882-8080`), or a direct LinkedIn URL, this Actor automatically resolves the waterfall, extracts career timelines, verifies employer matches, and outputs clean, structured JSON or CSV.

***

### ⚡ How This Actor Compares

| Feature | This Actor (`datablow`) | Traditional B2B Tools (Apollo / Hunter / Proxycurl) |
| :--- | :---: | :---: |
| **Input Flexibility** | **URL + Email + Phone** | API Only (Locked to Internal DB) |
| **Reverse Email Lookup** | ✅ **Automatic Waterfall** | ✅ Paid Credits |
| **Reverse Phone Lookup** | ✅ **Multi-format (+91, +1, Intl)** | ⚠️ Expensive Add-on |
| **Requires LinkedIn Cookie?** | ❌ **No (100% Optional)** | ❌ No |
| **Account Ban Risk** | 🛡️ **Zero (100% Ban-Proof)** | 🛡️ Zero |
| **Google SERP Snippet Recovery** | ✅ **Yes (Bypasses Authwalls)** | ❌ Stale Cache |
| **Company Auto-Enrichment** | ✅ **Included (Size, HQ, Website)** | ⚠️ Separate API Call |
| **Employer Match Verification** | ✅ **Yes (`email_company_verified`)** | ⚠️ Varies |
| **Webhook / No-Code Ready** | ✅ **n8n, Make, Clay, Zapier** | ⚠️ Custom Code |
| **Pricing / Cost Efficiency** | 💰 **Ultra Low Cost** | 💸 $49–$299+/mo |

***

### 🚀 Key Benefits & Features

#### 1. 🔄 Multi-Attribute Waterfall Resolution

Never lose a lead due to missing data. Provide any single identifier or combination:

- **Direct LinkedIn URL** $\rightarrow$ Scrapes verified live career history, current job, company, and location.
- **Email Address** $\rightarrow$ Decomposes corporate/personal handles, runs search engine dorking, and resolves to the exact profile.
- **Phone Number** $\rightarrow$ Normalizes formats (US `+1`, India `+91`, UK `+44`, international) and reverse searches business indices.
- **Automatic Fallback** $\rightarrow$ If an email has no public match, it automatically cascades to reverse phone matching.

#### 2. 🛡️ 100% Account Safety: Zero Cookie / Login Required

- Traditional LinkedIn scrapers require your personal login cookies (`li_at`), putting your LinkedIn account at risk of permanent restriction or ban.
- This Actor operates in **Guest Mode** with headless Chromium, residential proxy rotation, and Google referrer spoofing. **Your personal LinkedIn account is never connected or put at risk.**

#### 3. 🔍 Google SERP Snippet Authwall Recovery

- LinkedIn frequently blocks anonymous public visitors with a *"Join LinkedIn / Sign In"* login wall for certain non-public profiles.
- Unlike other scrapers that return blank records or error out, this Actor automatically **recovers the indexed Google search snippet** (extracting Full Name, Job Title, Current Employer, Location, Personal Website, and Follower Count) directly from search engine cache!

#### 4. 🏢 Automatic Company Profile Deep-Enrichment

When enriching a person, the Actor can automatically crawl their current employer to append:

- Verified company name & official LinkedIn page
- Employee headcount range (e.g., `10,001+ employees`)
- Industry vertical (e.g., `Software Development`)
- Global Headquarters location & official website URL

#### 5. ✅ Built-in Email Domain Verification

- Automatically checks whether your prospect's email domain matches their current company on LinkedIn (`email_company_verified: true/false`).
- Catch job-changers immediately before wasting cold outreach emails or bounce credits.

***

### 👥 Who is This Actor For?

- **Cold Outbound Agencies & Growth Marketers**: Clean and enrich prospect lists before feeding Apollo, Smartlead, Instantly, or Lemlist.
- **Recruiters & Headhunters**: Turn lists of candidate email addresses and phone numbers into full LinkedIn profiles with verified job titles and tenures.
- **RevOps & CRM Teams**: Keep Salesforce, HubSpot, and Pipedrive contacts enriched with up-to-date titles, companies, and LinkedIn URLs.
- **Clay, n8n & Make Builders**: Plug directly into automated outbound workflows as a reliable, cost-effective waterfall step.

***

### 📊 Extracted Data Fields

#### 👤 Person Profile Fields

```json
{
  "id": "lead_1042",
  "enrichment_status": "SUCCESS",
  "enrichment_source": "EMAIL_RESOLVED",
  "entity_type": "PERSON",
  "url": "https://www.linkedin.com/in/williamhgates",
  "public_identifier": "williamhgates",
  "input_email": "william.gates@gatesfoundation.org",
  "input_phone": "+1-425-882-8080",
  "email_company_verified": true,
  "full_name": "Bill Gates",
  "first_name": "Bill",
  "last_name": "Gates",
  "headline": "Co-chair, Bill & Melinda Gates Foundation",
  "summary": "Co-chair of the Bill & Melinda Gates Foundation...",
  "location": "Seattle, Washington, United States",
  "personal_website": "https://gatesnotes.com",
  "follower_count": 36000000,
  "open_to_work": false,
  "company_name": "Bill & Melinda Gates Foundation",
  "company_linkedin": "https://www.linkedin.com/company/gates-foundation",
  "experiences": [
    {
      "title": "Co-chair",
      "company": "Bill & Melinda Gates Foundation",
      "date_range": "2000 - Present",
      "is_current": true
    }
  ],
  "education": [
    {
      "school": "Harvard University",
      "degree": "Honorary Doctorate",
      "field_of_study": "Law",
      "years": "1973 - 1975"
    }
  ],
  "skills": ["Philanthropy", "Technology", "Global Health"],
  "scraped_at": "2026-09-27T14:30:00.000Z"
}
```

#### 🏢 Company Profile Fields

```json
{
  "entity_type": "COMPANY",
  "url": "https://www.linkedin.com/company/microsoft",
  "universal_name_id": "microsoft",
  "name": "Microsoft",
  "tagline": "We are on a mission to empower every person...",
  "industry": "Software Development",
  "company_size": "231,758 employees",
  "follower_count": 29171382,
  "hq": "Redmond, Washington",
  "website": "https://www.microsoft.com",
  "scraped_at": "2026-09-27T14:30:00.000Z"
}
```

***

### 📥 Simple Input Options

You can supply individual lists or batch upload hundreds of records at once:

```json
{
  "urls": [
    "https://www.linkedin.com/in/williamhgates",
    "https://www.linkedin.com/company/microsoft"
  ],
  "emails": [
    "satya.nadella@microsoft.com",
    "pralayasimha23@gmail.com"
  ],
  "phoneNumbers": [
    "+1-425-882-8080",
    "9052660342"
  ],
  "maxItems": 10,
  "scrapeCompanyDetailsOnPerson": true,
  "liAtCookie": ""
}
```

***

### 🔑 (Optional) How to Get the `li_at` Session Cookie

> **Note:** This step is **100% OPTIONAL**. The Actor works out of the box in **Guest Mode** without any cookies!\
> However, if you wish to unlock private, non-public personal profiles and view hidden career timelines:

1. Open **[linkedin.com](https://www.linkedin.com)** in your browser (Chrome or Edge) while logged into your account.
2. Press **`F12`** (or right-click anywhere $\rightarrow$ **Inspect**).
3. Navigate to the **Application** tab (named **Storage** in Firefox).
4. In the left panel, expand **Cookies** $\rightarrow$ select `https://www.linkedin.com`.
5. Find the row named **`li_at`**, double-click its **Value**, copy it, and paste it into the **`liAtCookie`** field.

***

### 🔌 No-Code Integrations: n8n, Make, Clay & Zapier

Easily trigger this Actor via API or webhooks:

#### 1. **n8n / Make.com**

- Add the **Apify** node $\rightarrow$ Action: `Run Actor`.
- Set Actor: `datablow/linkedin-profile-enrichment`.
- Pass your prospect's `email`, `phone`, or `url`.
- Receive enriched leads in real time and push them directly to Google Sheets, HubSpot, or Salesforce.

#### 2. **Clay.com**

- Add an **HTTP API / Webhook** enrichment step pointing to:\
  `POST https://api.apify.com/v2/acts/datablow~linkedin-profile-enrichment/runs?waitForFinish=120`
- Map the output fields (`full_name`, `company_name`, `headline`) into your Clay table columns.

***

### ❓ Frequently Asked Questions (FAQ)

##### Do I need a LinkedIn account or login credentials?

**No.** By default, the Actor runs completely cookie-less in Guest Mode using residential proxies and stealth headers. Your LinkedIn account is never needed and never at risk.

##### How does email reverse-lookup work?

The Actor decomposes the email local part and corporate domain, generates intelligent vanity permutations, and queries search engine index graphs to discover public profile associations.

##### How does phone number reverse-lookup work?

The Actor normalizes phone numbers into E.164, formatted, and national variations (supporting US `+1`, Indian `+91`, UK `+44`, and global numbers) and searches public business directories to match them to LinkedIn URLs.

##### What happens if a LinkedIn profile hits an authwall?

If LinkedIn shows a login prompt and no session cookie is provided, the Actor automatically recovers the public Google/Bing search snippet, extracting the candidate's name, headline, current employer, location, and follower count so your dataset is never left empty.

***

### 🏷️ Keywords & Search Tags

*LinkedIn scraper, reverse email lookup, reverse phone lookup, LinkedIn profile enrichment without cookies, LinkedIn company scraper, B2B lead enrichment, Apollo alternative, Hunter alternative, Proxycurl alternative, Apify LinkedIn Actor, LinkedIn email finder, no cookies lead scraper, cold outreach data enrichment, n8n LinkedIn enrichment.*

# Actor input Schema

## `urls` (type: `array`):

List of direct LinkedIn URLs (e.g. 'https://www.linkedin.com/in/williamhgates' or 'https://www.linkedin.com/company/microsoft').

## `emails` (type: `array`):

List of B2B corporate or personal email addresses to resolve to LinkedIn profiles (e.g. 'satya.nadella@microsoft.com').

## `phoneNumbers` (type: `array`):

List of phone numbers to reverse search and match to LinkedIn profiles (e.g. '+1-425-882-8080').

## `maxItems` (type: `integer`):

Maximum number of total leads or companies to enrich and push to the dataset.

## `scrapeCompanyDetailsOnPerson` (type: `boolean`):

When enabled, also enriches full company data (industry, size, HQ, website) for the person's current employer.

## `liAtCookie` (type: `string`):

Optional session cookie for 100% full profile access without guest login authwalls. How to fetch: 1) Open linkedin.com in Chrome/Edge while logged in. 2) Press F12 (or Right-click -> Inspect). 3) Go to 'Application' tab -> 'Cookies' -> 'https://www.linkedin.com'. 4) Copy the value of the cookie named 'li\_at' and paste it here.

## `proxyConfiguration` (type: `object`):

Proxy configuration. Uses your account default proxies or residential proxies if configured.

## Actor input object example

```json
{
  "urls": [
    "https://www.linkedin.com/in/williamhgates"
  ],
  "emails": [],
  "phoneNumbers": [],
  "maxItems": 10,
  "scrapeCompanyDetailsOnPerson": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.linkedin.com/in/williamhgates"
    ],
    "emails": [],
    "phoneNumbers": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("datablow/linkedin-profile-enrichment").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.linkedin.com/in/williamhgates"],
    "emails": [],
    "phoneNumbers": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("datablow/linkedin-profile-enrichment").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.linkedin.com/in/williamhgates"
  ],
  "emails": [],
  "phoneNumbers": [],
  "maxItems": 10
}' |
apify call datablow/linkedin-profile-enrichment --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datablow/linkedin-profile-enrichment"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/a7IjdMdQh8weG3jzo/builds/xawtzS4wKuWzc1RN9/openapi.json
