# Ai Outreach Lead Generator (`samiullah07/ai-outreach-lead-generator`) Actor

AI Outreach Lead Generator finds live tech and AI-friendly job postings across Remotive, Jobicy and Arbeitnow then generates personalized email and LinkedIn outreach for each role. Ideal for AI freelancers and small agencies who want steady, targeted leads without manual job research or copywriting.

- **URL**: https://apify.com/samiullah07/ai-outreach-lead-generator.md
- **Developed by:** [Sami Ullah](https://apify.com/samiullah07) (community)
- **Categories:** Automation, Lead generation, Jobs
- **Stats:** 12 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

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

## AI Outreach Lead Generator

Turn live job postings into ready-to-send cold outreach emails and LinkedIn DMs for your AI and engineering services in a single run.

This Actor searches multiple public job APIs (Remotive, Jobicy, Arbeitnow), extracts key details for each role, and uses an LLM to generate personalized outreach you can plug directly into your CRM, email tool, or LinkedIn workflow. \[web:74]\[web:107]\[web:109]

### Why use this Actor?

- **Multi-source coverage**: Pulls roles from Remotive, Jobicy, and Arbeitnow so you are not dependent on a single board. \[web:74]\[web:107]\[web:109]
- **AI-native outbound**: Every job becomes a structured lead with tailored email copy and LinkedIn DMs focused on LLM agents, data pipelines, and automation.
- **Fast lead lists**: Configure once, run, and export a dataset of ready-to-contact companies in minutes.

### Input configuration

The Actor uses an input schema, so you can configure it from Apify Console without code. Key fields:

- **Role keywords** (`keywords`, required, array of strings)\
  Example: `["LLM", "AI engineer", "automation", "data engineer"]`\
  Used to filter job titles and descriptions from all sources. \[web:79]

- **Locations** (`locations`, optional, array of strings)\
  Example: `["US", "UK", "Remote"]`.\
  Leave empty to search all locations the APIs return. \[web:74]

- **Max number of jobs** (`max_results`, required, integer)\
  Total number of unique leads to generate outreach for, after merging and deduplication across sources.\
  Default: `10`.

- **Remote only** (`remote_only`, optional, boolean)\
  When supported by the API, restricts results to remote roles.\
  Default: `true`.

- **Seniority level filter** (`seniority`, optional, string)\
  Free-text filter such as `"junior"`, `"mid"`, `"senior"` applied in your own post-processing.

- **Outreach language** (`language`, optional, string)\
  Language for generated outreach (currently optimized for English).\
  Default: `"English"`.

- **Job sources** (`job_sources`, optional, array of strings)\
  Choose which APIs to use:
  - `"remotive"` – Remote-friendly tech jobs. \[web:74]
  - `"jobicy"` – Curated remote jobs feed. \[web:107]
  - `"arbeitnow"` – Aggregated jobs from multiple ATS-powered career pages. \[web:109]\
    Default: `["remotive"]`.

The Actor also expects the secret environment variable **`GROQ_API_KEY`** to be set, used for calling the Groq LLM API that generates outreach content.

### Output

Each lead is stored as one item in the default dataset with at least:

- `type`: `"lead"`
- `source`: `"remotive" | "jobicy" | "arbeitnow"`
- `keyword`: keyword that matched
- `location`: location string from the job listing
- `company_name`
- `job_title`
- `job_url`
- `snippet`: short text snippet from the description
- `summary`: 2–3 sentence explanation of why this is a promising AI/automation lead
- `emails`: list of objects with `subject` and `body` for cold emails
- `linkedin_messages`: list of short DM texts

Example item:

{
"type": "lead",
"source": "jobicy",
"keyword": "engineer",
"location": "Remote, Europe",
"company\_name": "Example Labs",
"job\_title": "Senior AI Engineer",
"job\_url": "https://example.com/jobs/123",
"snippet": "We are looking for an engineer to build AI-powered features...",
"summary": "...",
"emails": \[
{ "subject": "...", "body": "..." }
],
"linkedin\_messages": \[
{ "message": "..." }
]
}

The last dataset item is a `run_metadata` record summarizing the run:

- `type`: `"run_metadata"`
- `total_leads`: number of outreach leads generated
- `keyword_used`, `locations_used`, `generated_at`

Use the **Dataset** tab to inspect items and the **Export** button to download JSON, CSV, or Excel. \[web:38]

### How to use

1. Open the Actor in Apify and go to the **Input** tab.
2. Fill in:
   - 3–5 **role keywords** that match the work you want (e.g., LLM, AI agent, data engineer).
   - Optional **locations** (or leave empty for global).
   - **Max number of jobs** (start with 5–10 while testing).
   - Choose one or more **job sources** (Remotive, Jobicy, Arbeitnow).
3. Click **Start** and wait for the run to finish.
4. Open **Output → All outreach leads** or **Storage → Dataset** to review the generated leads and outreach copy.
5. Export as CSV/JSON and plug into your email tool, CRM, or LinkedIn workflow. \[web:83]

For best results, lightly edit the generated messages to match your voice and portfolio before sending.

### Notes and limitations

- Job availability depends on the external APIs; some queries or locations may yield few or no results. \[web:74]\[web:107]\[web:109]
- This Actor focuses on outbound sales for AI/data/automation services and is not a general job-application tool.
- Always respect job-board terms and anti-spam regulations when using the generated outreach.

# Actor input Schema

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

Job title or skill keywords to match, e.g. \['LLM', 'AI', 'machine learning', 'data engineer', 'Full stack web developer'].

## `locations` (type: `array`):

Geographic filters such as \['US', 'Canada', 'Remote']. Leave empty to search all.

## `max_results` (type: `integer`):

Maximum number of matching job posts to process.

## `remote_only` (type: `boolean`):

If enabled, include only remote jobs where supported by the source.

## `seniority` (type: `string`):

Optional seniority filter such as 'junior', 'mid', 'senior'. Leave empty for any.

## `language` (type: `string`):

Language for the generated outreach messages, e.g. 'English' or 'Spanish'.

## `job_sources` (type: `array`):

Which job sources to use.

## `required_tech_keywords` (type: `array`):

Only keep jobs whose description contains at least one of these terms, e.g. \['Python','TypeScript','AWS']. Leave empty to keep all.

## `exclude_company_keywords` (type: `array`):

Drop jobs where the company name or description contains any of these terms, e.g. \['recruitment','agency'].

## `campaign_name` (type: `string`):

Optional label stored with each lead, e.g. 'US LLM agencies Dec 2025'.

## `your_name` (type: `string`):

Used to personalize email and DM signatures.

## `max_leads_per_source` (type: `integer`):

Upper limit of leads to keep from each job source before merging.

## `skip_llm_if_no_snippet` (type: `boolean`):

If enabled, leads without a description/snippet will be dropped before outreach generation.

## Actor input object example

```json
{
  "keywords": [
    "LLM",
    "AI agent",
    "machine learning",
    "data engineer",
    "Full stack web developer",
    " prompt engineer",
    "AI researcher"
  ],
  "locations": [
    "Remote"
  ],
  "max_results": 10,
  "remote_only": true,
  "seniority": "",
  "language": "English",
  "job_sources": [
    "remotive"
  ],
  "required_tech_keywords": [],
  "exclude_company_keywords": [],
  "campaign_name": "",
  "your_name": "",
  "max_leads_per_source": 20,
  "skip_llm_if_no_snippet": true
}
```

# Actor output Schema

## `allLeads` (type: `string`):

Every job with its generated email and LinkedIn message.

# 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": [
        "LLM",
        "AI agent",
        "machine learning",
        "data engineer",
        "Full stack web developer",
        " prompt engineer",
        "AI researcher"
    ],
    "locations": [
        "Remote"
    ],
    "required_tech_keywords": [],
    "exclude_company_keywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("samiullah07/ai-outreach-lead-generator").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": [
        "LLM",
        "AI agent",
        "machine learning",
        "data engineer",
        "Full stack web developer",
        " prompt engineer",
        "AI researcher",
    ],
    "locations": ["Remote"],
    "required_tech_keywords": [],
    "exclude_company_keywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("samiullah07/ai-outreach-lead-generator").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 '{
  "keywords": [
    "LLM",
    "AI agent",
    "machine learning",
    "data engineer",
    "Full stack web developer",
    " prompt engineer",
    "AI researcher"
  ],
  "locations": [
    "Remote"
  ],
  "required_tech_keywords": [],
  "exclude_company_keywords": []
}' |
apify call samiullah07/ai-outreach-lead-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=samiullah07/ai-outreach-lead-generator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZZB2ft3h42i6FKdXn/builds/pDh2aQN2am1fnPBSL/openapi.json
