# Topic-Based Lead Prospecting (`cag_ai-actors/topic-based-lead-prospecting`) Actor

Given a topic, find the people currently researching it (person-level, not companies). Discovers new people by topic, unlike B2B Account Intent Finder (companies only) or B2B Buyer Intent Enrichment (enriches people you already know).

- **URL**: https://apify.com/cag\_ai-actors/topic-based-lead-prospecting.md
- **Developed by:** [CAG Signals](https://apify.com/cag_ai-actors) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $150.00 / 1,000 topic lead founds

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?

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

## Topic-Based Lead Prospecting

Give it a topic — anything from Delivr.ai's 19,500+ topic taxonomy — and get back the people currently researching it, ranked by intent strength, with resolved email and LinkedIn where available. This is **lead discovery**: finding new people you didn't already know about, not enriching a list you already have.

**Contains person-level PII.** Output can include a plaintext email address and LinkedIn profile URL for each lead, alongside a hashed-email (HEM) match key.

### Which tool should I use?

We publish Delivr.ai-powered intent tools:

| Tool | Question it answers |
|---|---|
| **Topic-Based Lead Prospecting** (this one) | "Who is researching this topic right now?" — discovers new people, by topic. |
| **B2B Account Intent Finder** | Same idea, but at the company level — finds companies, not people, researching a topic. |
| **B2B Buyer Intent Enrichment** | "What is this specific person/company (that I already know) researching?" — enriches known contacts, doesn't discover new ones. |
| **[Company Intent Signals](https://apify.com/cag_ai-actors/company-intent-signals)** | "What is this company (whose domain I already have) researching?" — company-level intent for a known account, not this Actor's job. |

If you already have a company domain — or you want company-level intent rather than people discovered by topic — use [Company Intent Signals](https://apify.com/cag_ai-actors/company-intent-signals) instead. If you already have a list of known contacts to enrich, use B2B Buyer Intent Enrichment. If you want companies rather than individuals, use B2B Account Intent Finder. Use this Actor when you want a fresh list of individual leads for a topic you care about.

### Input

```json
{
  "topicId": "Marketing Automation",
  "maxResults": 100,
  "minScore": "high",
  "dryRun": false
}
```

You can also pass a topic ID directly: `"topicId": "4eyes_503588"`.

- `topicId` (required) — a Delivr.ai topic **name** (resolved to exactly one active B2B taxonomy match) or a `4eyes_` topic ID (passed through). Search hits are not auto-picked; 0 or 2+ exact name matches fail with a candidate list and are not charged.
- `maxResults` — caps how many leads are fetched and charged for (default 100).
- `minScore` / `minPercScore` — optional intent-strength filters.
- `dryRun` — set `true` to see how many billable leads exist for this topic, with no charge and no leads returned. Use this to size a run before committing spend.

Each dataset item echoes `resolvedTopicId` and, when the input was a name, `resolvedTopicName`.

### Output

One dataset item per lead: `hem` (hashed email match key), `score`, `perc_score`, and — when Delivr.ai has them on file — the resolved `seen_email` and `linkedin_url`. Resolution isn't guaranteed for every lead; LinkedIn coverage in particular is roughly 40%.

### Pricing

Pay-per-event: one `topic-lead-found` charge per lead returned. A `dryRun` request is never charged. Topic-name resolution uses the unbilled Taxonomy API and does not charge. Set `ACTOR_MAX_TOTAL_CHARGE_USD` on the run to cap total spend.

# Actor input Schema

## `topicId` (type: `string`):

Delivr.ai topic name or ID. Example: Marketing Automation or 4eyes\_503588. Names resolve to exactly one active B2B taxonomy match (case-insensitive exact name, not the first search hit). Values starting with 4eyes\_ are passed through as IDs.

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

Maximum number of leads to fetch and charge for in this run.

## `minScore` (type: `string`):

Only return leads at or above this intent tier. Leave unset for all tiers.

## `minPercScore` (type: `integer`):

Only return leads with a percentile score at or above this value (0-99).

## `dryRun` (type: `boolean`):

If true, returns the number of billable leads available for this topic without returning any leads or charging.

## Actor input object example

```json
{
  "topicId": "Marketing Automation",
  "maxResults": 100,
  "dryRun": false
}
```

# Actor output Schema

## `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 = {
    "topicId": "Marketing Automation"
};

// Run the Actor and wait for it to finish
const run = await client.actor("cag_ai-actors/topic-based-lead-prospecting").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 = { "topicId": "Marketing Automation" }

# Run the Actor and wait for it to finish
run = client.actor("cag_ai-actors/topic-based-lead-prospecting").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 '{
  "topicId": "Marketing Automation"
}' |
apify call cag_ai-actors/topic-based-lead-prospecting --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cag_ai-actors/topic-based-lead-prospecting"
        }
    }
}

```

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/MYZMk8bJsKQu6VN9H/builds/wRuvzkPcc5V8QQhng/openapi.json
