# Hiring Intent Lead Scraper — Verified Decision-Maker Email (`qualifyops/hiring-intent-leads-verified-email`) Actor

Hiring-intent lead generation: turn a LinkedIn job search into companies hiring now, the decision-maker to pitch, and a verified deliverable email. SMTP-checked, no bounces. B2B leads with buying intent for cold email and sales. Pay only per verified lead.

- **URL**: https://apify.com/qualifyops/hiring-intent-leads-verified-email.md
- **Developed by:** [QualifyOps](https://apify.com/qualifyops) (community)
- **Categories:** Lead generation, Business
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 verified leads

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/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

### Hiring-Intent Leads — Verified Decision-Maker Email (Send-Ready)

**You give:** a public LinkedIn job-search URL (a role + location) — your ideal-customer profile.
**You get:** one **CRM-ready row per hiring company** with a **verified decision-maker email**, marked **SEND\_NOW** or **SKIP** — so you email only addresses that will actually land.
**You pay:** **only for verified `SEND_NOW` leads.** Companies with no verifiable email are free.

Companies that are hiring are companies that are spending. This Actor finds them the moment the job goes live, resolves the person who owns the budget, **verifies their email is deliverable**, and hands you a row you can paste straight into your sequencer.

***

#### Why "verified" is the whole point

Raw scrapers hand you guessed addresses and you eat the bounces. Bounces wreck your domain reputation and your open rates. Here, every `SEND_NOW` email has been through:

> syntax → MX record → **live SMTP mailbox check** → catch-all detection → confidence score

Only addresses that a real mail server **accepts** and that are **not catch-all** are marked `SEND_NOW`. Everything else is `SKIP` with a reason — never a silent guess.

#### What each row gives you

| Column | Meaning |
|---|---|
| `action` | **SEND\_NOW** (verified deliverable) or **SKIP** (with reason) |
| `company` | The hiring company |
| `verified_email` | The deliverable decision-maker address (only on SEND\_NOW) |
| `decision_maker` / `decision_maker_role` | Who it reaches (name when public, always the target role) |
| `confidence` | 0–1 deliverability confidence |
| `why_now` | The commercial reason they're hiring (your opener) |
| `roles_hiring` | The open roles that triggered the signal |
| `evidence_url` | The live job post — proof, not a guess |

#### How it works

1. Pulls fresh hiring signals from the public LinkedIn job market (proven upstream scraper).
2. Groups them into **one record per company** and classifies the hiring signal (sales / marketing / engineering / ops / new-site / clinical expansion).
3. Extracts the company's **public** contacts and picks the best route to the decision-maker for that signal.
4. **Verifies the email** via a dedicated deliverability check.
5. Returns SEND\_NOW-first rows. **You are charged only for verified SEND\_NOW leads.**

#### Honest by design

- We **never invent** `first.last@company.com` and label it verified. We only propose addresses a company actually exposes publicly, then verify them.
- Catch-all domains (which accept everything and confirm nothing) are marked `SKIP`, not passed off as deliverable.
- Every lead carries the evidence job URL so you can audit the signal.

#### For agents & automation

Call it via the Apify API/MCP. One run returns deduped, verified, CRM-ready rows. Schedule it for a recurring verified-lead feed into your CRM or sequencer.

***

*Input: paste a LinkedIn job-search URL for your ICP. Optional: role keyword filter, freshness window, max companies, `sendNowOnly` to return verified leads only.*

# Actor input Schema

## `jobSearchUrls` (type: `array`):

One or more public LinkedIn job-search result URLs describing your ideal customer (role + location).

## `maxJobs` (type: `integer`):

Upper bound on raw job rows requested from the upstream scraper. Start small (10–25) for a fast first run, then raise it.

## `roleKeywords` (type: `array`):

Only keep jobs whose title contains one of these keywords.

## `freshnessDays` (type: `integer`):

Only keep jobs posted within this many days.

## `maxCompanies` (type: `integer`):

Return only the top N companies by opportunity score. Start small (3–5) for a fast first run, then raise it.

## `sendNowOnly` (type: `boolean`):

If on, SKIP rows are omitted and you get only verified, send-ready leads.

## `verifyDeliverability` (type: `boolean`):

Run the SMTP deliverability check (recommended). Off = candidate emails without verification.

## `verifierActorId` (type: `string`):

Store validator used for the SMTP check. Default is a proven high-volume validator.

## `requestTimeoutSecs` (type: `integer`):

How long to wait for each company web page.

## `maxPagesPerSite` (type: `integer`):

Pages scanned per company site for public contacts.

## `maxConcurrency` (type: `integer`):

How many company sites to scan in parallel.

## Actor input object example

```json
{
  "jobSearchUrls": [
    {
      "url": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Australia"
    }
  ],
  "maxJobs": 10,
  "roleKeywords": [],
  "freshnessDays": 30,
  "maxCompanies": 3,
  "sendNowOnly": false,
  "verifyDeliverability": true,
  "verifierActorId": "michael.g/email-verifier-validator",
  "requestTimeoutSecs": 10,
  "maxPagesPerSite": 2,
  "maxConcurrency": 5
}
```

# 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 = {
    "jobSearchUrls": [
        {
            "url": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Australia"
        }
    ],
    "maxJobs": 10,
    "roleKeywords": [],
    "freshnessDays": 30,
    "maxCompanies": 3,
    "requestTimeoutSecs": 10,
    "maxPagesPerSite": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("qualifyops/hiring-intent-leads-verified-email").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 = {
    "jobSearchUrls": [{ "url": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Australia" }],
    "maxJobs": 10,
    "roleKeywords": [],
    "freshnessDays": 30,
    "maxCompanies": 3,
    "requestTimeoutSecs": 10,
    "maxPagesPerSite": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("qualifyops/hiring-intent-leads-verified-email").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "jobSearchUrls": [
    {
      "url": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Australia"
    }
  ],
  "maxJobs": 10,
  "roleKeywords": [],
  "freshnessDays": 30,
  "maxCompanies": 3,
  "requestTimeoutSecs": 10,
  "maxPagesPerSite": 2
}' |
apify call qualifyops/hiring-intent-leads-verified-email --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=qualifyops/hiring-intent-leads-verified-email",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/1YmZNO4QPZw8YTjHJ/builds/IhFe3mtUhZ4MUoskV/openapi.json
