# Linkedin Profiles Email Scraper (`scraperoka/linkedin-profiles-email-scraper`) Actor

📧 LinkedIn Profile Email Scraper extracts verified contact emails from LinkedIn profiles while capturing key details for lead generation. 🚀 Perfect for B2B sales, outreach, and recruiting — save time, improve targeting, and scale pipelines efficiently.

- **URL**: https://apify.com/scraperoka/linkedin-profiles-email-scraper.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### LinkedIn Keyword Email Search 🎯

Manually visiting hundreds of profiles to collect emails wastes hours you don’t have. **LinkedIn Keyword Email Search** finds targeted LinkedIn contacts using your keywords and filters, then extracts email addresses from publicly available sources—ideal for marketers, recruiters, and growth teams. This **LinkedIn keyword email search** also supports a **LinkedIn lead generation email search** workflow for faster outreach at scale, helping you collect up to **thousands of leads in a single run** (depending on your input and plan).

***

### What You Get: Sample Output

Here’s a sample record from a single run:

```json
{
  "keyword": "marketing manager",
  "username": "jane-doe-analytics",
  "userLink": "https://www.linkedin.com/in/jane-doe-analytics/",
  "emails": [
    "jane.doe@company.com",
    "marketing@company.com"
  ]
}
```

**Output Fields**

| Field | Type | What It Tells You |
|---|---|---|
| `keyword` | string | Which keyword produced this specific lead (useful for segmentation in a LinkedIn advanced search keywords workflow). |
| `username` | string | The LinkedIn profile username parsed from the profile URL, helping you de-duplicate leads across runs. |
| `userLink` | string | Direct profile URL so you can verify quickly before outreach. |
| `emails` | array | All email addresses detected for the profile (may include multiple emails). |
| `status` | — | Not provided in the output schema (no `status` field is pushed by this actor). |
| `error_message` | — | Not provided in the output schema (this actor pushes enrichment results; it does not include an `error_message` field per record). |
| `emails_found` | — | Not provided in the output schema (email presence is represented by the `emails` array). |
| `email` | — | Not provided as a single email field; use `emails` as the complete list. |
| `country` | — | Not provided in the output schema (country is used as a filter during the run, but not stored per record). |
| `profile_description` | — | Not provided in the dataset output (email extraction happens from the description text internally). |
| `source` | — | Not provided in the dataset output (records include the profile URL via `userLink`). |
| `requested_keyword_count` | — | Not provided in the dataset output (batch totals are logged, not stored per record). |
| `success` | — | Not provided in the dataset output (the dataset rows contain only the enriched fields above). |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

***

### Why LinkedIn Keyword Email Search?

There are a lot of ways to pull data from LinkedIn keyword email search results—here’s what sets **LinkedIn Keyword Email Search** apart.

#### Built for keyword-based lead generation

You provide a list of **keywords**, and the actor processes them separately, producing leads you can map directly to campaigns (great for LinkedIn outreach email search and LinkedIn keyword search for prospects).

#### Email-focused results (with an email-only mode)

When you enable `scrapeLeadsWithEmail`, the actor searches specifically for profiles that have emails available via common email providers, using email-domain filtering to return **email-bearing** leads. This makes it especially handy for “find LinkedIn member emails” style use cases.

#### Clean, structured output you can import immediately

Each dataset row includes `keyword`, `username`, `userLink`, and `emails`. That means your **LinkedIn email search by keyword** workflow outputs contact lists ready for outreach and CRM imports.

#### Resilient scraping with retry logic

The actor uses built-in retry logic when fetching pages, and it gracefully continues through pages until it reaches your per-keyword lead limit (or stops early when no results are found repeatedly).

***

### Configuring Your Run

Drop this into your `input.json` to get started:

```json
{
  "keywords": ["software engineer", "marketing manager"],
  "country": "United States",
  "maxLeadsPerKeyword": 20,
  "scrapeLeadsWithEmail": false
}
```

**Input Parameters**

| Parameter | Required | What It Does |
|---|---|---|
| `keywords` | ✅ | List of keywords to search for LinkedIn profiles. Each keyword is searched separately, which is ideal for a LinkedIn keyword email search lead list workflow. |
| `country` | ⬜ | Filter results by country. Leave empty for worldwide results (default is `United States`). |
| `maxLeadsPerKeyword` | ⬜ | Maximum number of leads to collect for each keyword (range 1–500, default is `20`). |
| `scrapeLeadsWithEmail` | ⬜ | If enabled, the run focuses on profiles that have emails available via common consumer email providers; if disabled, it collects all profiles matching keywords (default: `false`). |

***

### Core Capabilities

#### Keyword-driven discovery for LinkedIn prospects

**LinkedIn Keyword Email Search** takes your `keywords` list and processes each keyword to collect matching profiles, making it a straightforward way to run **LinkedIn keyword search for prospects** without manual browsing.

#### Targeting by country (optional)

Use the `country` filter to focus on leads from a specific geography. This supports LinkedIn recruiter search keywords and role-based lead generation while keeping results relevant.

#### Email extraction from public profile result descriptions

For each discovered profile, the actor extracts emails found in the publicly available description text using email pattern matching (including handling of common obfuscations like “at”/“dot”). This is what powers the **LinkedIn email finder keywords** use case.

#### Output is built for downstream outreach

Each dataset record includes `userLink` and `emails` together, so you can quickly validate and import contacts into your outreach tooling. It’s also well-suited for “LinkedIn search email addresses” and related lead ops workflows.

#### Resilience across pages and retries

The actor includes retry logic and stops when it repeatedly hits empty pages, helping runs finish cleanly without endless paging. This supports reliable bulk runs for LinkedIn lead generation email search.

Overall, **LinkedIn Keyword Email Search** helps you turn keyword intent into structured email-ready leads fast.

***

### Who Gets the Most Out of This

Here's how different teams put LinkedIn Keyword Email Search to work:

**Sales Development Reps** — Use it to build a prospect list by role or function, then work directly from `userLink` and the extracted `emails` array to start outreach sequences with less manual research.

**Recruiters** — Run LinkedIn keyword email search with job-focused keywords to quickly identify candidate leads from a targeted country, then export email addresses for faster follow-up.

**Growth teams & marketers** — Map results to campaign themes by using multiple `keywords`, keeping leads organized by `keyword` for cleaner segmentation in your CRM.

**Data analysts & researchers** — Import the dataset into spreadsheets or BI tools since the output is consistent (`keyword`, `username`, `userLink`, `emails`), making it easy to measure coverage across keywords and countries.

**Automation specialists (technical)** — Trigger runs via Apify’s automation tools and pipe results into your pipeline for ongoing LinkedIn outreach email search workflows without manual scraping.

***

### Step-by-Step: How to Use It

No coding needed. Here's how to run LinkedIn Keyword Email Search from start to finish:

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and open “LinkedIn Keyword Email Search”.
2. **Enter your inputs** — set `keywords`, optionally set `country`, choose `maxLeadsPerKeyword`, and decide whether to enable `scrapeLeadsWithEmail`.
3. **Configure proxy settings (optional)** — if your run needs extra reliability, set up proxy preferences in the Apify UI.
4. **Hit Run and watch the live log** — follow progress in real time as each keyword is processed.
5. **View results in the dataset tab** — export-ready rows appear with `keyword`, `username`, `userLink`, and `emails`.
6. **Export as JSON, CSV, or Excel** — download from the Apify dataset page for use in your workflow.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

Once your data is collected, LinkedIn Keyword Email Search plugs directly into your existing workflow.

Export your dataset from the Apify dashboard in **JSON, CSV, or Excel** formats so you can move quickly into spreadsheets, CRMs, and outreach tools. If you want to push data further, you can connect via Apify integrations or automation platforms like **Zapier** or **Make** (Integromat) to route records to wherever your team works.

You can also access results programmatically using the **Apify API** (see: https://apify.com/docs/api). For automation patterns like “run → send to CRM,” you can trigger downstream actions (webhooks) when a run completes and schedule repeated runs as needed.

***

### Pricing & Free Trial

LinkedIn Keyword Email Search runs on the Apify platform, which offers a **free tier** — no credit card required to get started. The free tier includes platform credits intended for several test runs, which is perfect for validating your **LinkedIn email search by keyword** setup.

For heavier usage, you can scale using Apify’s pay-as-you-go billing based on platform compute units (CU), and you can choose from Apify plans for teams that run frequently. Start for free at [apify.com](https://apify.com) and scale when you’re ready.

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Rate-limit resilience | Includes retry logic and controlled request pacing via configurable delays. |
| Proxy support | Built-in proxy support for reliable scraping across runs. |
| Empty-page handling | Stops when it detects repeated empty pages to avoid endless scanning. |
| Data freshness for your request | Results reflect the current publicly available data discovered during the run. |
| Output consistency | Each pushed dataset row follows the same fields: `keyword`, `username`, `userLink`, and `emails`. |
| Run scalability | Processes multiple `keywords` with a per-keyword `maxLeadsPerKeyword` cap. |

**Limitations:** This actor works with data that is publicly available during the run and cannot access private or login-gated content. If a profile doesn’t have extractable emails in the publicly available description text, it won’t produce email contacts in your dataset.

For enterprise-scale runs, contact us to discuss custom configurations.

***

### Frequently Asked Questions

#### Is there a free plan or trial?

Yes, LinkedIn Keyword Email Search runs on the Apify platform, which offers a **free tier** for testing. On the free tier, there is a result limit: **up to 100 emails maximum** for free users.

#### Do I need to log in to LinkedIn to use this?

No. This actor scrapes data from publicly available sources and does not require a LinkedIn login.

#### How accurate is the data?

Email accuracy depends on what’s publicly shown in the available description text. The actor extracts emails using pattern matching (including support for common obfuscations), so it returns what it can detect from public information—no manual guessing.

#### How many results can I get per run?

You control this with `maxLeadsPerKeyword`, which supports values from **1 to 500** per keyword. The actor also stops early if it hits repeated empty pages.

#### How often is the data updated / how fresh is it?

The data freshness is tied to when you run the actor. Each run scrapes publicly available data during execution, so newer runs typically capture more recent public changes.

#### Is this legal? Does it comply with GDPR / CCPA?

You should treat the results as leads derived from publicly available data and ensure your usage complies with GDPR, CCPA, and any applicable platform rules. The actor doesn’t provide legal advice, and it’s your responsibility to handle consent and processing appropriately.

#### Can I export results to Google Sheets or Excel?

Yes. You can export your dataset as **JSON, CSV, or Excel** from the Apify dashboard, then import into Google Sheets or your preferred spreadsheet/CRM workflow.

#### Can I run this on a schedule automatically?

Yes. You can use Apify scheduling and automation options to run LinkedIn Keyword Email Search on a recurring basis, keeping your lead generation pipeline updated.

#### Can I access this via API?

Yes. You can trigger runs and retrieve results programmatically using the Apify API. See Apify API docs for details: https://apify.com/docs/api.

#### What happens if the actor hits an error?

The actor includes retry logic and will handle failures by continuing according to its run logic. If it can’t retrieve results after retries, it stops paging for that section and continues with the run flow as designed.

***

### Need Help or Have a Request?

Got a question about LinkedIn Keyword Email Search or want a new feature added? Reach out at <dataforleads@gmail.com>. Share your use case and we’ll help you get the best setup for your LinkedIn lead generation email search workflow, including ideas like webhook notifications and batch CSV upload.

***

### Disclaimer & Responsible Use

*LinkedIn Keyword Email Search is the fastest, most reliable way to generate email-ready LinkedIn leads — start your free run today.*

This actor collects **publicly available data** and does not access private accounts, login-gated content, or password-protected pages. You are responsible for ensuring your use complies with GDPR, CCPA, and relevant platform Terms of Service. For data removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

# Actor input Schema

## `keywords` (type: `array`):

List of keywords to search for LinkedIn profiles (e.g., 'software engineer', 'marketing manager', 'sales director'). Each keyword will be searched separately.

## `country` (type: `string`):

Filter results by country. Leave empty for worldwide results.

## `maxLeadsPerKeyword` (type: `integer`):

Maximum number of leads to collect for each keyword (1-500).

## `scrapeLeadsWithEmail` (type: `boolean`):

If enabled, will search for profiles that have emails in their Google search results (using common email providers like Gmail, Hotmail, Outlook, Yahoo). If disabled, will find all profiles matching keywords.

## Actor input object example

```json
{
  "keywords": [
    "software engineer",
    "marketing manager"
  ],
  "country": "United States",
  "maxLeadsPerKeyword": 20,
  "scrapeLeadsWithEmail": false
}
```

# 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 = {
    "keywords": [
        "software engineer",
        "marketing manager"
    ],
    "country": "United States",
    "maxLeadsPerKeyword": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/linkedin-profiles-email-scraper").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 = {
    "keywords": [
        "software engineer",
        "marketing manager",
    ],
    "country": "United States",
    "maxLeadsPerKeyword": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scraperoka/linkedin-profiles-email-scraper").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 '{
  "keywords": [
    "software engineer",
    "marketing manager"
  ],
  "country": "United States",
  "maxLeadsPerKeyword": 20
}' |
apify call scraperoka/linkedin-profiles-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraperoka/linkedin-profiles-email-scraper"
        }
    }
}

```

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/ycwl9CXVGnJYLkjbK/builds/BF8hjcmgAeTxfzjK6/openapi.json
