# Job Posts to Buyer Emails - Hiring Intent Leads (9 ATS Boards) (`george.the.developer/job-posts-to-buyer-emails`) Actor

Turn job posts from Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio, Teamtailor and Workday into buyer leads: buyer persona, named decision maker and SMTP verified work email as CRM ready rows. No cookies.

- **URL**: https://apify.com/george.the.developer/job-posts-to-buyer-emails.md
- **Developed by:** [George Kioko](https://apify.com/george.the.developer) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Job Posts to Buyer Emails

Turn public job posts into B2B buyer leads. A company hiring for a role is a company spending money on that area, so a live job opening is one of the cleanest buying signals you can get. This actor reads those openings and works out the buyer persona for each one. Where the company exposes its people publicly, it also finds the named decision maker and a work email, verified as far as SMTP where possible. Every row is a CRM ready lead built on a real hiring signal. No cookies, no logins.

### Why a job post is a buying signal

A company hiring a Salesforce admin is a Salesforce buyer. A company hiring a RevOps lead is investing in revenue tooling. A company hiring three SDRs is scaling outbound and needs everything that supports outbound. The job opening tells you what they are buying and when. Most lead lists sell you a name and an email with no reason to reach out. This one sells you the reason first, then the person, then the way to contact them.

### How it works

```mermaid
flowchart LR
    A[Company domains + role keywords] --> B[Scan public ATS job boards]
    B --> C{Matching live opening?}
    C -- no --> X[Skip company]
    C -- yes --> D[Job signal: proof of intent]
    D --> E[Map the buyer persona for that role]
    E --> F[Find the named decision maker]
    F --> G[Generate work email candidates]
    G --> H[SMTP verify the email]
    H --> I[CRM ready lead row]
````

### What each lead row contains

- **companyDomain** and the **job trigger** (the exact opening that proves intent)
- **buyerPersona** (the function that owns the purchase: revenue, marketing, recruiting, engineering, operations)
- **contactName** and **contactTitle** (the named decision maker)
- **email** and **emailStatus** (candidate, MX valid, or SMTP verified)
- **confidence** score and the **jobUrl** so every row is auditable

### Input

- **companies**: company domains to inspect, such as acme.com.
- **roleKeywords**: the job triggers that prove buying intent, such as hubspot, revops, sdr, salesforce, or data engineer.
- **location**: optional location filter.
- **freshnessDays**: only keep openings posted within this window, so signals are current.
- **buyerPersonaMode**: auto map the buyer, or force a function.

### Output example

```json
{
  "companyDomain": "acme.com",
  "jobTitle": "Senior RevOps Manager",
  "buyerPersona": "revenue",
  "contactName": "Dana Ruiz",
  "contactTitle": "VP Revenue Operations",
  "email": "dana.ruiz@acme.com",
  "emailStatus": "smtp-verified",
  "confidence": 0.86,
  "jobUrl": "https://boards.greenhouse.io/acme/jobs/123"
}
```

### Pricing

This is buyer intent data, not a generic email dump, so it is priced for the outcome. You pay for what the pipeline actually delivers, and only for the good stuff.

| Event | Price | What you get |
|-------|-------|--------------|
| Run started | $0.02 | Charged once when valid input is accepted |
| Qualified job signal | $0.02 | A live opening proving hiring intent |
| Decision maker contact | $0.05 | A named buyer matched to the signal |
| Candidate work email | $0.04 | A work email candidate or MX valid business email |
| Verified work email | $0.15 | A work email with positive SMTP verification |

A verified buyer email tied to a live hiring signal is worth many times a scraped address with no context, which is why it sits well above generic email finders. A clean run only bills the signals and contacts it truly finds.

### Use cases

1. **Timed outbound**: reach a buyer in the same week they start hiring for the thing you sell.
2. **Account based marketing**: feed intent qualified accounts and named contacts into your ABM lists.
3. **Competitive selling**: a company hiring for a rival tool is a company you can win.

### What makes it different

- **Intent first**: every row comes with the job opening that justifies the outreach.
- **No cookies or logins**: it reads public ATS boards and company pages.
- **Honest email status**: a candidate email and an SMTP verified email are labelled differently, so you know exactly what you are sending to.

### FAQ

**Where do the job posts come from?** Public applicant tracking boards and company career pages, the same pages anyone can open in a browser.

**Do you guarantee every email?** No. Emails are labelled candidate, MX valid, or SMTP verified, and you only pay the premium rate for the ones that pass SMTP verification.

**Can I filter by buyer function?** Yes, set buyerPersonaMode to revenue, marketing, recruiting, engineering, or operations.

# Actor input Schema

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

Company domains to inspect, such as acme.com or stripe.com.

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

Job keywords that prove the trigger, such as hubspot, revops, sdr, salesforce, data engineer, or recruiter.

## `location` (type: `string`):

Optional location substring to match in job locations.

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

Only keep jobs posted or updated within this many days.

## `buyerPersonaMode` (type: `string`):

Use auto mapping or force a buyer function.

## `maxContactsPerCompany` (type: `integer`):

Maximum buyer contacts to return per matched job.

## `maxJobsPerCompany` (type: `integer`):

Maximum matching job signals to expand per company.

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

Safety cap for domains processed in one run.

## `atsBoardUrls` (type: `object`):

Optional map of company domain to exact public ATS board URL, for example {"acme.com":"https://boards.greenhouse.io/acme"}.

## `seedContacts` (type: `array`):

Optional existing contacts from LinkedIn, CRM, or another Apify actor. Each contact can include companyDomain, name, title, email, and sourceUrl.

## `demoMode` (type: `boolean`):

Use built-in demo fixtures instead of live web requests.

## Actor input object example

```json
{
  "companies": [
    "acme.com"
  ],
  "roleKeywords": [
    "hubspot",
    "revops"
  ],
  "freshnessDays": 30,
  "buyerPersonaMode": "auto",
  "maxContactsPerCompany": 2,
  "maxJobsPerCompany": 10,
  "maxCompanies": 25,
  "demoMode": 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 = {
    "companies": [
        "acme.com"
    ],
    "roleKeywords": [
        "hubspot",
        "revops"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("george.the.developer/job-posts-to-buyer-emails").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 = {
    "companies": ["acme.com"],
    "roleKeywords": [
        "hubspot",
        "revops",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("george.the.developer/job-posts-to-buyer-emails").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 '{
  "companies": [
    "acme.com"
  ],
  "roleKeywords": [
    "hubspot",
    "revops"
  ]
}' |
apify call george.the.developer/job-posts-to-buyer-emails --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=george.the.developer/job-posts-to-buyer-emails",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Job Posts to Buyer Emails - Hiring Intent Leads (9 ATS Boards)",
        "description": "Turn job posts from Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio, Teamtailor and Workday into buyer leads: buyer persona, named decision maker and SMTP verified work email as CRM ready rows. No cookies.",
        "version": "1.0",
        "x-build-id": "FnVnxYAkpq2sLQeGo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/george.the.developer~job-posts-to-buyer-emails/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-george.the.developer-job-posts-to-buyer-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/george.the.developer~job-posts-to-buyer-emails/runs": {
            "post": {
                "operationId": "runs-sync-george.the.developer-job-posts-to-buyer-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/george.the.developer~job-posts-to-buyer-emails/run-sync": {
            "post": {
                "operationId": "run-sync-george.the.developer-job-posts-to-buyer-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "companies"
                ],
                "properties": {
                    "companies": {
                        "title": "Company Domains",
                        "type": "array",
                        "description": "Company domains to inspect, such as acme.com or stripe.com.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "roleKeywords": {
                        "title": "Role Keywords",
                        "type": "array",
                        "description": "Job keywords that prove the trigger, such as hubspot, revops, sdr, salesforce, data engineer, or recruiter.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location Filter",
                        "type": "string",
                        "description": "Optional location substring to match in job locations."
                    },
                    "freshnessDays": {
                        "title": "Freshness Days",
                        "minimum": 1,
                        "maximum": 365,
                        "type": "integer",
                        "description": "Only keep jobs posted or updated within this many days.",
                        "default": 30
                    },
                    "buyerPersonaMode": {
                        "title": "Buyer Persona Mode",
                        "enum": [
                            "auto",
                            "revenue",
                            "marketing",
                            "recruiting",
                            "engineering",
                            "operations",
                            "finance"
                        ],
                        "type": "string",
                        "description": "Use auto mapping or force a buyer function.",
                        "default": "auto"
                    },
                    "maxContactsPerCompany": {
                        "title": "Max Contacts Per Company",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum buyer contacts to return per matched job.",
                        "default": 2
                    },
                    "maxJobsPerCompany": {
                        "title": "Max Jobs Per Company",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum matching job signals to expand per company.",
                        "default": 10
                    },
                    "maxCompanies": {
                        "title": "Max Companies",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Safety cap for domains processed in one run.",
                        "default": 25
                    },
                    "atsBoardUrls": {
                        "title": "ATS Board URLs",
                        "type": "object",
                        "description": "Optional map of company domain to exact public ATS board URL, for example {\"acme.com\":\"https://boards.greenhouse.io/acme\"}."
                    },
                    "seedContacts": {
                        "title": "Seed Contacts",
                        "type": "array",
                        "description": "Optional existing contacts from LinkedIn, CRM, or another Apify actor. Each contact can include companyDomain, name, title, email, and sourceUrl.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "companyDomain": {
                                    "title": "Company domain",
                                    "type": "string",
                                    "description": "Company domain this contact belongs to."
                                },
                                "name": {
                                    "title": "Name",
                                    "type": "string",
                                    "description": "Contact full name."
                                },
                                "title": {
                                    "title": "Title",
                                    "type": "string",
                                    "description": "Contact job title."
                                },
                                "email": {
                                    "title": "Email",
                                    "type": "string",
                                    "description": "Optional known work email."
                                },
                                "sourceUrl": {
                                    "title": "Source URL",
                                    "type": "string",
                                    "description": "Optional evidence URL for this contact."
                                }
                            }
                        }
                    },
                    "demoMode": {
                        "title": "Demo Mode",
                        "type": "boolean",
                        "description": "Use built-in demo fixtures instead of live web requests.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
