# Leads Scraper ✅ $1/1k with EMAILS ✅ Apollo | LinkedIn Profile (`peakydev/leads-scraper-ppe`) Actor

✅  - Cheap ways to Extract leads with verified ☎️ Mobile  ✅ Work & Personal Emails.  Similar to Apollo, ZoomInfo, Lusha, LinkedIn | Google Maps

- **URL**: https://apify.com/peakydev/leads-scraper-ppe.md
- **Developed by:** [Peaky Dev](https://apify.com/peakydev) (community)
- **Categories:** Lead generation
- **Features:** Limited permissions
- **Stats:** 18,109 total users, 666 monthly users, 100.0% runs succeeded, 398 bookmarks
- **User rating**: 3.98 out of 5 stars

## Pricing

from $0.10 / actor start

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 🔍 Leads Finder (Emails guaranteed)

Get unlimited leads per run, with emails and direct dials included, from our database of over 210M professionally sourced leads, licensed from a third-party data provider and refreshed every two weeks.

🔥 The Actor automatically tracks your progress across runs and **continues from your last page**, so you get clean, non-redundant data every time.
<br>

***

**⚡ What’s New?**

- Work emails (100% coverage - data updated bi-weekly)
- Phone number coverage (20% currently)

***

### HOW TO USE THE ACTOR

**Tweak your filters ✨** to find your target audience (data is similar to Apollo).

**Use the same filters ☑️** - Once you're okay with the results, generate a JSON file of that exact filter, paste it in the Actor JSON input and start run.

***

> **🤝 Support:** peaky@leadlance.io

***

### 📈 Performance

- Unlimited leads per run including **email**.
- Robust **Filters** to narrow your search
- **Full Email and phone enrichment**
- **LinkedUrl** for both the individual and their organization
- 🔥 Actor tracks your progress across runs and **continues from your last page**, skipping leads you already received.
- 🔍 Market Analysis Ready: Ideal for agencies that support lead generation, competitive analysis, and market research efforts.

### 📚 Where the Data Comes From

- The leads come from **our own database**. Nothing is scraped when you run the Actor.
- The data is **licensed from a third-party data provider** and professionally sourced, then refreshed every two weeks.
- It is business contact data (names, job titles, companies and work contact details), handled in line with the GDPR.

***

### 📌 Best Practices

- **Start with Fewer Filters**: Begin with 2–3 essential filters and add more gradually.
- **Broaden the Location:** Try searching by country instead of state if you’re not getting matches.
- **Remove strict filters**: Avoid strict filters like Company Domain or Departments if you're getting no results.
- **Check for Typos**: Ensure spelling is correct as small typos can yield zero results.
- **Save high performing Searches**: When a search gives good results, save it for future use or reference
- If a run stops before all your leads are delivered, check the Logs for a detailed report or open an issue.

***

### 👀 Progress Tracking

The actor remembers your progress **for each set of filters** you use. Run the exact same filters again with **Start Page left empty**, and it doesn't start over from the first page. It picks up right where your last run stopped and carries on from the next page.

Want to choose where to begin instead? Enter a **Start Page**. Each page holds 100 results, so page 11 starts at lead 1,001. A Start Page you enter always wins over saved progress, and your next run with empty Start Page continues from where that run ended. To start a search over from the beginning, enter 1.

- Saved progress is kept for 90 days, after which it resets automatically.
- Changing any filter counts as a new search and starts at page 1.
- Free plan runs don't save progress, so enter the next page yourself (e.g., if you reached page 10, enter 11). The end of each run tells you which page to enter.
- Aborting a run can leave your saved progress a little behind where the run actually got to.

  <br>

### Run Policy:

> - **Minimum Charge**: Each run requires a minimum of `100` leads. If fewer than 100 are found, you’ll still be charged for 100. To avoid this, make sure you use filters that are not too narrow.
>
> - **Paid Apify User**: As low as $1 for every 1k leads the Actor finds. Check Pricing to learn more.
>
> - **Free Apify User Limit**: Free users can extract only `100` leads. Upgrade to paid Apify plan to enjoy premium features.
>
> - **Timeout**: It takes `5` mins to pull 1k leads. Configure your run limit accordingly

#### Sample Input

- These are sample input you can use

```Javascript
{
  "personTitle": ["ceo", "marketing manager"],
  "excludeTitle": ["intern", "assistant"],
  "firstName": "John",
  "lastName": "Smith",
  "department": ["Technology", "Sales - Marketing"],
  "excludeDepartment": ["Other"],
  "seniority": ["owner", "c_suite", "vp"],
  "excludeSeniority": ["intern", "entry"],
  "personCountry": ["United States"],
  "personState": ["California", "Texas"],
  "companyCountry": ["United States", "Germany"],
  "companyState": ["California", "Illinois"],
  "companyZip": ["90210", "94105"],
  "industry": ["Software", "Financial Services"],
  "webKeywords": ["AI", "automation"],
  "companyDomain": ["apify.com", "apple.com"],
  "totalResults": 1000
}
```

<br>

### 📦 Sample Output

Each lead is saved in a well structured format in the Apify dataset.
<br>

### ⚠️ Disclaimer

- While the actor does its best to retrieve email addresses for each lead, some leads may not include an email due to data availability.
- Use responsibly and in compliance with all applicable laws, regulations, and governing policies. We assume no liability for misuse/abuse

<br>

### 🤝 Support

Need help? Contact us directly at peaky@leadlance.io or open an issue on the "Issues" tab.

***

# Actor input Schema

## `totalResults` (type: `integer`):

Total number leads to fetch per run

## `startPage` (type: `integer`):

Leave this empty to continue from where your last run with the same filters stopped (a new search starts at page 1). Enter a page number to start there instead. Each page holds 100 results, so page 11 starts at lead 1,001. Free plan runs don't remember progress, so enter the next page yourself (e.g., if you reached page 10, enter 11).

## `companyMode` (type: `boolean`):

When enabled, the Actor returns company leads only and does not return individual employee leads

## `firstName` (type: `string`):

Filter by a person's first name.

## `lastName` (type: `string`):

Filter by a person's last name.

## `personTitle` (type: `array`):

Titles like marketing, manager, ceo, cfo etc

## `excludeTitle` (type: `array`):

Titles to exclude from results, e.g. intern, assistant.

## `seniority` (type: `array`):

Filter individuals by their current job seniority level.

## `excludeSeniority` (type: `array`):

Seniority levels to exclude from results.

## `department` (type: `array`):

Filter individuals by their department.

## `excludeDepartment` (type: `array`):

Departments to exclude from results.

## `companyEmployeeSize` (type: `array`):

Employee size ranges.

## `personCountry` (type: `array`):

The country of the person.

## `personState` (type: `array`):

The company state using full name codes. One per line

## `excludePersonCountry` (type: `array`):

Leave out people located in these countries.

## `excludePersonState` (type: `array`):

Leave out people located in these states. One per line

## `companyCountry` (type: `array`):

The country where the company operates.

## `excludeCompanyCountry` (type: `array`):

Leave out companies located in these countries.

## `companyState` (type: `array`):

The company state using full name. One per line

## `excludeCompanyState` (type: `array`):

Leave out companies in these states. One per line

## `companyCity` (type: `array`):

The city using full name. One per line

## `excludeCompanyCity` (type: `array`):

Leave out companies in these cities. One per line

## `companyZip` (type: `array`):

Enter postal codes

## `excludeCompanyZip` (type: `array`):

Leave out companies with these postal codes

## `industry` (type: `array`):

Specify one or more industries to filter companies.

## `excludeIndustry` (type: `array`):

Leave out companies in these industries.

## `webKeywords` (type: `array`):

Keywords related to the company

## `excludeWebKeywords` (type: `array`):

Leave out companies tagged with these keywords

## `sicCodes` (type: `array`):

Enter 4 digit SIC codes of the targeted company (one per line) e.g 4011

## `excludeSicCodes` (type: `array`):

Enter 4 digit SIC codes of companies to leave out (one per line)

## `revenue` (type: `array`):

Revenue range of the company

## `companyDomain` (type: `array`):

Company domain or website names. Max 100 e.g github.com

## `maxPerCompany` (type: `integer`):

How many exployees to return per comapny domain

## Actor input object example

```json
{
  "totalResults": 1000,
  "companyMode": false
}
```

# Actor output Schema

## `leads` (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 = {
    "totalResults": 1000,
    "companyMode": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("peakydev/leads-scraper-ppe").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 = {
    "totalResults": 1000,
    "companyMode": False,
}

# Run the Actor and wait for it to finish
run = client.actor("peakydev/leads-scraper-ppe").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 '{
  "totalResults": 1000,
  "companyMode": false
}' |
apify call peakydev/leads-scraper-ppe --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,peakydev/leads-scraper-ppe"
        }
    }
}
```

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/T1XDXWc1L92AfIJtd/builds/3fO6W3jayxb0VDtLH/openapi.json
