# B2B People Search with Emails & Phones (`aidenix/people-search`) Actor

Find B2B decision-makers by title, seniority, location, company industry, size, tech stack — plus timing filters: new in role, alumni of a company, engaged with its LinkedIn posts, GitHub languages. Work emails, personal emails and phones, with why each person matched.

- **URL**: https://apify.com/aidenix/people-search.md
- **Developed by:** [Aidenix Data](https://apify.com/aidenix) (community)
- **Categories:** Lead generation, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 person returneds

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

## B2B People Search with Emails & Phones

**Find the people who are ready to buy — not just the ones with the right title.**

Search hundreds of millions of professional profiles by role, company and timing, and get work emails, personal emails and phones in the same row. Every person comes with a one-line reason why they matched.

### What makes it different

Most lead finders filter by title, country and company size. This one adds the filters that tell you *when* to reach out:

| Filter | Why it matters |
|---|---|
| **Started the role within N days** | New leaders re-pick vendors in their first 90 days |
| **Used to work at X** | Alumni of a competitor's customer already know the category |
| **Engaged with LinkedIn posts of X** | People who liked or commented on a competitor's or partner's posts |
| **Talks about a topic** | Their likes, comments and posts mention it |
| **Ready to move** | In the role 30%+ longer than their usual tenure |
| **Writes code in (GitHub)** | Developers by the languages of their public code |
| **Company website uses** | Tech stack: HubSpot, Salesforce, Shopify… |
| **Last funding round since** | Fresh budget |

Plus the classics: job title, seniority, department, decision-maker flag, person's country/state/city, skills, company industry, size, HQ country, hiring now, founded year, employer domain, exclusion list.

### Output

One row per person: name, title, seniority, department, company, company website and LinkedIn, person's LinkedIn, location, **work email at the current employer**, all known work emails, personal emails, phones, months in role, usual tenure, and **why matched**.

### Example

`titles: ["vp sales"]`, `countries: ["United States"]`, `industries: ["Software Development"]` — 27,300 people match; in a sample of 25, all 25 had a contact, 22 a work email at their current company and 13 a phone.

### Data and compliance

- Profiles come from a monthly professional-profile snapshot; `profile_as_of` shows its date. Not real time.
- Contacts come only from professional sources. Leaked databases and consumer files are never used.
- People who asked to be removed are excluded. People can opt out at any time.
- Emails are not SMTP-verified here. Run them through our [Email Intel](https://apify.com/aidenix/email-intel) actor before sending.
- Need the companies themselves — size, revenue, tech stack, hiring? [Company Data Enrichment](https://apify.com/aidenix/company-data-enrichment).
- You are responsible for using the data lawfully (CAN-SPAM, GDPR legitimate interest, local rules).

### Pricing

**The first 100 people on your account are free** — try any filters before you pay.

After that, **$0.01 per person returned** ($10 per 1,000). Empty searches and errors are free. Set a spending limit on the run and the actor stops when it is reached.

# Actor input Schema

## `titles` (type: `array`):

Words in the current job title, any of. Example: vp sales, head of growth, cto.

## `levels` (type: `array`):

Management level.

## `departments` (type: `array`):

Department of the current role, any of.

## `decision_makers` (type: `boolean`):

Only people flagged as decision-makers in their company.

## `countries` (type: `array`):

Full English country names. Example: United States, Germany, United Kingdom.

## `states` (type: `array`):

Example: California, Texas.

## `cities` (type: `array`):

City where the person lives. Example: Austin, London.

## `skills` (type: `array`):

Any of. Example: salesforce, python.

## `programming_languages` (type: `array`):

Languages of the person's public GitHub code. Example: Rust, Go, TypeScript.

## `industries` (type: `array`):

LinkedIn industry names. Example: Software Development, Financial Services, Hospitals and Health Care.

## `company_size_min` (type: `integer`):

Minimum employees at the current company.

## `company_size_max` (type: `integer`):

Maximum employees at the current company.

## `company_countries` (type: `array`):

Country of the company headquarters. Example: United States.

## `technologies` (type: `array`):

Technologies detected on the company website, any of. Example: HubSpot, Salesforce, Shopify.

## `company_hiring` (type: `boolean`):

Only companies with open job postings.

## `funded_since` (type: `string`):

YYYY or YYYY-MM. Example: 2025-06.

## `founded_after` (type: `integer`):

Only companies founded in this year or later. Example: 2018.

## `domains` (type: `array`):

Current employer website. Example: stripe.com.

## `companies` (type: `array`):

Company page slug or URL. Example: stripe or https://www.linkedin.com/company/stripe.

## `exclude_domains` (type: `array`):

Skip people at these companies — your customers, your own team.

## `new_in_role_days` (type: `integer`):

New leaders re-pick vendors in their first 90 days. Counted from the profile snapshot date.

## `past_companies` (type: `array`):

Alumni of a company (LinkedIn slug or URL) who have left — e.g. ex-customers of a competitor. Current staff are excluded.

## `overdue_only` (type: `boolean`):

Only people in their role 30%+ longer than their usual tenure.

## `likes_posts_of` (type: `array`):

Company or person slug. People who liked, shared or commented on their posts. Example: hubspot.

## `engages_with_topics` (type: `array`):

Their LinkedIn likes, comments and posts mention the topic. Example: kubernetes, revops.

## `maxResults` (type: `integer`):

How many people to return. Each person is one paid result.

## `onlyWithContacts` (type: `boolean`):

Skip people with no work email, personal email or phone.

## Actor input object example

```json
{
  "titles": [
    "vp sales",
    "head of sales"
  ],
  "decision_makers": false,
  "countries": [
    "United States"
  ],
  "industries": [
    "Software Development"
  ],
  "company_hiring": false,
  "overdue_only": false,
  "maxResults": 25,
  "onlyWithContacts": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `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 = {
    "titles": [
        "vp sales",
        "head of sales"
    ],
    "countries": [
        "United States"
    ],
    "industries": [
        "Software Development"
    ],
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("aidenix/people-search").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 = {
    "titles": [
        "vp sales",
        "head of sales",
    ],
    "countries": ["United States"],
    "industries": ["Software Development"],
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("aidenix/people-search").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 '{
  "titles": [
    "vp sales",
    "head of sales"
  ],
  "countries": [
    "United States"
  ],
  "industries": [
    "Software Development"
  ],
  "maxResults": 25
}' |
apify call aidenix/people-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aidenix/people-search"
        }
    }
}
```

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/cWvfePasaQdUrqHQm/builds/fk8mzMgIge6rlRKm9/openapi.json
