# Local Business Lead Finder AI Outreach Engine API (`shahabuddin38/local-business-lead-finder-ai-outreach-engine-api`) Actor

Find local business leads and generate outreach messages that help you get clients,  detect weak profiles like low reviews or missing websites, and generate ready-to-send outreach messages. Score opportunities, identify pain points, and contact high-converting leads faster with AI-powered outreach.

- **URL**: https://apify.com/shahabuddin38/local-business-lead-finder-ai-outreach-engine-api.md
- **Developed by:** [Shahab Uddin](https://apify.com/shahabuddin38) (community)
- **Categories:** Lead generation, SEO tools, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

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

## Local Business Lead Finder & AI Outreach Engine API

This Actor is a Google Maps lead finder, local business lead generation API, and AI outreach generator for agencies that sell local SEO, Google Business Profile optimization, website design, review growth, and technical SEO services.

It helps you find local businesses with visible gaps such as no website, low review count, weak rating, missing contact details, incomplete profiles, and basic website SEO issues. It also enriches leads with publicly visible business emails, contact pages, and social links so the output is stronger than a basic local scraper. The output is designed for agency prospecting, cold outreach preparation, CRM imports, and manual sales review.

### No Coding Needed

You do not need to integrate this API into your website.

Just enter:

1. Business keyword  
2. Location  
3. Number of leads  

Then click **Run**.

The Actor gives you a ready dataset with:

- local business leads
- pain points
- opportunity scores
- emails when found
- outreach messages
- WhatsApp/call scripts

You can download the results as CSV, Excel, JSON, or use the Apify API only if you want automation.


### Search-Friendly Positioning

The README is optimized around buyer-intent long-tail phrases that fit the product naturally:

- `google maps lead finder`
- `local business lead generation api`
- `local seo lead generation`
- `google business profile audit tool`
- `ai outreach generator for agencies`
- `website design leads finder`
- `business email finder`
- `local business email extractor`
- `email discovery API`
- `contact enrichment`
- `AI outreach leads`

### What This Actor Does

- Finds local businesses by `keyword`, `location`, `country`, `language`, and result limit.
- Collects public business data such as name, category, address, phone, website, rating, reviews, maps URL, status, and coordinates when available.
- Scans public business websites for visible emails, contact pages, and social links without paid enrichment APIs.
- Detects sales triggers like no website, low reviews, weak rating, missing HTTPS, missing title or meta description, missing schema, broken pages, slow sites, and incomplete public profiles.
- Scores each lead with `opportunityScore`, `leadQualityScore`, `priorityScore`, `opportunityLevel`, `contactReadiness`, and email-quality signals.
- Recommends the best offer angle: GBP optimization, local SEO, website design, review growth, citation building, technical SEO, or speed optimization.
- Recommends the best outreach channel and drafts outreach for email, follow-up email, WhatsApp, and cold calls.
- Saves a non-billable run summary to `OUTPUT.json`.

### Best Fit Users

- Local SEO agencies
- Google Business Profile agencies
- Web design freelancers
- Lead generation services
- Cold outreach teams
- Consultants selling marketing services to local businesses

### Input Schema

Required inputs:

- `keyword`: business niche such as `roofing contractors`, `plumbers`, `dentists`, or `HVAC companies`
- `location`: city, metro area, state, or region such as `Dallas, TX`

Optional inputs:

- `country`: expands the discovery query and fallback geocoding
- `language`: language hint for public search requests
- `maxResults`: maximum billable leads to keep after scoring and deduplication
- `minOpportunityScore`: filter out weak opportunities
- `includeWebsiteSeoCheck`: run lightweight website checks
- `includeCompetitorGap`: calculate nearby review and rating gaps
- `includeAiOutreach`: try AI-written drafts before using rule-based templates
- `includeEmailDiscovery`: scan websites for public business emails
- `emailScanDepth`: number of internal pages to scan per website
- `maxWebsitesToEnrich`: max websites to scan for email enrichment per run
- `emailMxCheck`: optionally validate extracted email domains with MX lookups
- `includeSocialLinks`: extract visible social profile links
- `preferBusinessEmails`: prioritize role-based business emails like `info@` and `contact@`
- `outreachService`: force the offer angle or leave it on `auto`
- `tone`: outreach voice, such as `friendly` or `professional`

Example input:

```json
{
  "keyword": "roofing contractors",
  "location": "Dallas, TX",
  "country": "United States",
  "language": "en",
  "maxResults": 50,
  "minOpportunityScore": 60,
  "includeWebsiteSeoCheck": true,
  "includeCompetitorGap": true,
  "includeAiOutreach": true,
  "includeEmailDiscovery": true,
  "emailScanDepth": 1,
  "maxWebsitesToEnrich": 25,
  "emailMxCheck": false,
  "includeSocialLinks": true,
  "preferBusinessEmails": true,
  "outreachService": "auto",
  "tone": "friendly"
}
````

### Output Schema

The Actor now defines input, dataset, key-value store, and output schema files in `.actor/` so the contract is explicit in Apify Console and API integrations.

Dataset output:

- Billable lead rows are pushed to the default dataset
- Row `type` is one of `local_business_lead`, `high_opportunity_lead`, or `outreach_ready_lead`
- Dataset views include `leads`, `email`, `outreach`, and `painPoints`

Key-value store output:

- The non-billable report is saved under the `OUTPUT` key
- The report includes target context, summary counts, top pain points, top leads, recommendations, and limitations

Output schema links:

- `leadResults`: default dataset with the `leads` view selected
- `emailResults`: default dataset with the `email` view selected
- `outreachResults`: default dataset with the `outreach` view selected
- `summaryReport`: the `OUTPUT` record in the default key-value store

### Email Discovery & Contact Enrichment

The actor can scan publicly visible business websites to find business emails, contact pages, and social links. It scores email quality and recommends the best outreach channel for each lead.

What it adds to each lead row:

- `emails`
- `primaryEmail`
- `hasEmail`
- `emailQuality`
- `socials`
- `contactPages`
- `enrichment`
- `recommendedOutreachChannel`
- `contactAction`

This helps position the actor as a:

- `business email finder`
- `local business email extractor`
- `email discovery API`
- `contact enrichment` tool
- `AI outreach leads` workflow

### Example Dataset Row

```json
{
  "type": "outreach_ready_lead",
  "businessName": "Dallas Roofing Pros",
  "category": "Roofing contractor",
  "keyword": "roofing contractors",
  "location": "Dallas, TX",
  "address": "123 Main St, Dallas, TX 75201",
  "phone": "+1 214-555-0198",
  "primaryEmail": "info@dallasroofingpros.com",
  "hasEmail": true,
  "website": "https://dallasroofingpros.com",
  "googleMapsUrl": "https://www.google.com/maps/place/Dallas+Roofing+Pros",
  "rating": 3.8,
  "reviewCount": 18,
  "opportunityScore": 85,
  "opportunityLevel": "high",
  "leadQualityScore": 80,
  "contactReadiness": "email_ready",
  "detectedPainPoints": [
    "Low review count",
    "Missing meta description"
  ],
  "recommendedService": "Google Business Profile Optimization",
  "recommendedOutreachChannel": "email",
  "contactAction": "Send email",
  "emailSubject": "Quick idea for your Google visibility",
  "shortEmail": "Hi Dallas Roofing Pros, I noticed your profile has fewer reviews than stronger nearby competitors. Would it be useful if I sent a quick free audit? If this is not relevant, feel free to ignore this.",
  "followUpEmail": "Hi Dallas Roofing Pros, just following up on my earlier note with a few practical local visibility fixes. If this is not relevant, feel free to ignore this.",
  "whatsappMessage": "Hi Dallas Roofing Pros, I noticed a few local visibility gaps and can send a quick audit if helpful.",
  "coldCallOpener": "Hi, is this the right person for local marketing at Dallas Roofing Pros?",
  "priorityScore": 83,
  "reason": "This business has only 18 reviews while nearby competitors average 89+, which means they are likely losing customers compared to nearby competitors. This creates a strong opportunity for Google Business Profile Optimization.",
  "source": "google_local_html"
}
```

### Example OUTPUT.json

```json
{
  "target": {
    "keyword": "roofing contractors",
    "location": "Dallas, TX",
    "country": "United States"
  },
  "scanDate": "2026-05-04T16:20:00.000Z",
  "summary": {
    "totalBusinessesFound": 50,
    "billableLeadsReturned": 25,
    "highOpportunityLeads": 12,
    "outreachReadyLeads": 18,
    "averageOpportunityScore": 73,
    "topRecommendedServices": [
      "Google Business Profile Optimization",
      "Review Growth Campaign"
    ]
  },
  "emailEnrichment": {
    "websitesScanned": 20,
    "leadsWithEmail": 11,
    "leadsWithBusinessEmail": 8,
    "leadsWithSocialLinks": 13,
    "averageEmailQualityScore": 72,
    "topEmailDomains": [
      "dallasroofingpros.com",
      "gmail.com"
    ]
  },
  "topPainPoints": [
    "Low review count",
    "Missing meta description"
  ],
  "topLeads": [
    {
      "businessName": "Dallas Roofing Pros",
      "opportunityScore": 85,
      "recommendedService": "Google Business Profile Optimization"
    }
  ],
  "recommendations": {
    "bestServiceToSell": "Google Business Profile Optimization",
    "bestOutreachChannel": "Email first",
    "suggestedDailyOutreachVolume": 20,
    "nextSteps": [
      "Prioritize email-ready leads first because they are the fastest to launch into personalized outreach."
    ]
  },
  "limitations": [
    "Only publicly visible business data is collected."
  ]
}
```

### Opportunity Scoring

The actor builds an `opportunityScore` from common local-business sales triggers:

- no website
- low review count
- rating below 4.0
- broken or slow website
- missing basic SEO elements
- weak profile completeness

Opportunity labels:

- `high`
- `medium`
- `low`

### Outreach Generation

If `GEMINI_API_KEY` is available, the actor can lightly polish outreach tone while keeping the same core sales structure. If no Gemini key is configured or the request fails, it falls back to rule-based messaging.

Generated outreach fields:

- `emailSubject`
- `shortEmail`
- `followUpEmail`
- `whatsappMessage`
- `coldCallOpener`

Recommended contact-routing fields:

- `recommendedOutreachChannel`
- `contactAction`

The messaging is intentionally short, pain-point focused, opt-out friendly, and avoids deceptive claims or guaranteed ranking promises.

### Billing Notes

- Only dataset lead rows are billable
- Email enrichment is included inside the same lead rows and does not create extra dataset rows
- `OUTPUT.json` is non-billable
- Summary and recommendation records stay in the default key-value store

### Limitations

- Only publicly visible business information is collected
- No private personal data is collected
- Website checks are lightweight and not a replacement for a full SEO audit
- Email discovery only uses publicly visible website content and never hallucinates emails
- Public discovery sources can be rate-limited or incomplete
- If live discovery fails for the default QA input, rows may use `source: "sample_prefill_for_qa"` only for Apify QA prefill

### FAQ

#### Is this only a Google Maps scraper?

No. Discovery is only the first layer. The Actor also scores pain points, recommends services, checks website basics, estimates competitor gaps, and drafts outreach.

#### Can I use it without an AI key?

Yes. Rule-based outreach still works without `GEMINI_API_KEY`.

#### Where is the summary report stored?

The summary report is saved as `OUTPUT.json` in the default key-value store under the `OUTPUT` key.

# Actor input Schema

## `keyword` (type: `string`):

Business type or niche to search for in local results.

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

City, metro area, state, or region to search in.

## `country` (type: `string`):

Country used to expand the local search query and fallback geocoding.

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

Language hint used when requesting public search results.

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

Maximum number of billable lead rows to keep after scoring and deduplication.

## `minOpportunityScore` (type: `integer`):

Only keep businesses whose calculated opportunity score meets or exceeds this value.

## `includeWebsiteSeoCheck` (type: `boolean`):

Run a lightweight website check for HTTPS, title tag, meta description, schema, response time, and crawlability signals.

## `includeCompetitorGap` (type: `boolean`):

Compare each lead with nearby discovered businesses to estimate rating and review gaps.

## `includeAiOutreach` (type: `boolean`):

If enabled and an AI key is available, the actor will try AI-written outreach before falling back to rule-based templates.

## `includeEmailDiscovery` (type: `boolean`):

Scan business websites for publicly visible business emails.

## `emailScanDepth` (type: `integer`):

Number of internal pages to scan from each website.

## `maxWebsitesToEnrich` (type: `integer`):

Maximum websites to scan for emails per run.

## `emailMxCheck` (type: `boolean`):

Optional MX/domain validation for extracted emails.

## `includeSocialLinks` (type: `boolean`):

Extract visible social media profile links.

## `preferBusinessEmails` (type: `boolean`):

Prioritize role/business emails like info@, contact@, sales@, and support@.

## `outreachService` (type: `string`):

Force the offer you want outreach to pitch, or leave it on auto to match the detected pain points.

## `tone` (type: `string`):

Tone preference for generated outreach drafts.

## Actor input object example

```json
{
  "keyword": "roofing contractors",
  "location": "Dallas, TX",
  "country": "United States",
  "language": "en",
  "maxResults": 50,
  "minOpportunityScore": 60,
  "includeWebsiteSeoCheck": true,
  "includeCompetitorGap": true,
  "includeAiOutreach": true,
  "includeEmailDiscovery": true,
  "emailScanDepth": 1,
  "maxWebsitesToEnrich": 25,
  "emailMxCheck": false,
  "includeSocialLinks": true,
  "preferBusinessEmails": true,
  "outreachService": "auto",
  "tone": "friendly"
}
```

# Actor output Schema

## `leadResults` (type: `string`):

All billable lead rows in the default dataset. In Apify Console this opens the dataset with defined views.

## `outreachResults` (type: `string`):

Dataset view focused on generated outreach drafts and core contact fields.

## `emailResults` (type: `string`):

Dataset view focused on extracted emails, social links, and contact-enrichment details.

## `summaryReport` (type: `string`):

The non-billable OUTPUT report stored in the default key-value store.

# 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 = {
    "keyword": "roofing contractors",
    "location": "Dallas, TX",
    "country": "United States"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahabuddin38/local-business-lead-finder-ai-outreach-engine-api").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 = {
    "keyword": "roofing contractors",
    "location": "Dallas, TX",
    "country": "United States",
}

# Run the Actor and wait for it to finish
run = client.actor("shahabuddin38/local-business-lead-finder-ai-outreach-engine-api").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 '{
  "keyword": "roofing contractors",
  "location": "Dallas, TX",
  "country": "United States"
}' |
apify call shahabuddin38/local-business-lead-finder-ai-outreach-engine-api --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Local Business Lead Finder AI Outreach Engine API",
        "description": "Find local business leads and generate outreach messages that help you get clients,  detect weak profiles like low reviews or missing websites, and generate ready-to-send outreach messages. Score opportunities, identify pain points, and contact high-converting leads faster with AI-powered outreach.",
        "version": "0.4",
        "x-build-id": "zU4DEmhCcG6ki7EyR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahabuddin38~local-business-lead-finder-ai-outreach-engine-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahabuddin38-local-business-lead-finder-ai-outreach-engine-api",
                "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/shahabuddin38~local-business-lead-finder-ai-outreach-engine-api/runs": {
            "post": {
                "operationId": "runs-sync-shahabuddin38-local-business-lead-finder-ai-outreach-engine-api",
                "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/shahabuddin38~local-business-lead-finder-ai-outreach-engine-api/run-sync": {
            "post": {
                "operationId": "run-sync-shahabuddin38-local-business-lead-finder-ai-outreach-engine-api",
                "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": [
                    "keyword",
                    "location"
                ],
                "properties": {
                    "keyword": {
                        "title": "Business Keyword",
                        "type": "string",
                        "description": "Business type or niche to search for in local results."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, metro area, state, or region to search in."
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Country used to expand the local search query and fallback geocoding.",
                        "default": "United States"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "es",
                            "fr",
                            "de",
                            "it",
                            "pt",
                            "ur",
                            "hi",
                            "ar"
                        ],
                        "type": "string",
                        "description": "Language hint used when requesting public search results.",
                        "default": "en"
                    },
                    "maxResults": {
                        "title": "Maximum Leads",
                        "minimum": 5,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of billable lead rows to keep after scoring and deduplication.",
                        "default": 50
                    },
                    "minOpportunityScore": {
                        "title": "Minimum Opportunity Score",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Only keep businesses whose calculated opportunity score meets or exceeds this value.",
                        "default": 50
                    },
                    "includeWebsiteSeoCheck": {
                        "title": "Check Website SEO Basics",
                        "type": "boolean",
                        "description": "Run a lightweight website check for HTTPS, title tag, meta description, schema, response time, and crawlability signals.",
                        "default": true
                    },
                    "includeCompetitorGap": {
                        "title": "Include Competitor Gap Snapshot",
                        "type": "boolean",
                        "description": "Compare each lead with nearby discovered businesses to estimate rating and review gaps.",
                        "default": true
                    },
                    "includeAiOutreach": {
                        "title": "Use AI For Outreach Drafts",
                        "type": "boolean",
                        "description": "If enabled and an AI key is available, the actor will try AI-written outreach before falling back to rule-based templates.",
                        "default": true
                    },
                    "includeEmailDiscovery": {
                        "title": "Discover Business Emails",
                        "type": "boolean",
                        "description": "Scan business websites for publicly visible business emails.",
                        "default": true
                    },
                    "emailScanDepth": {
                        "title": "Email Scan Depth",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Number of internal pages to scan from each website.",
                        "default": 1
                    },
                    "maxWebsitesToEnrich": {
                        "title": "Max Websites To Enrich",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum websites to scan for emails per run.",
                        "default": 25
                    },
                    "emailMxCheck": {
                        "title": "Enable MX Check",
                        "type": "boolean",
                        "description": "Optional MX/domain validation for extracted emails.",
                        "default": false
                    },
                    "includeSocialLinks": {
                        "title": "Extract Social Links",
                        "type": "boolean",
                        "description": "Extract visible social media profile links.",
                        "default": true
                    },
                    "preferBusinessEmails": {
                        "title": "Prefer Business Emails",
                        "type": "boolean",
                        "description": "Prioritize role/business emails like info@, contact@, sales@, and support@.",
                        "default": true
                    },
                    "outreachService": {
                        "title": "Service to Sell",
                        "enum": [
                            "auto",
                            "GBP Optimization",
                            "Local SEO",
                            "Website Design",
                            "Review Growth",
                            "Technical SEO",
                            "Citation Building"
                        ],
                        "type": "string",
                        "description": "Force the offer you want outreach to pitch, or leave it on auto to match the detected pain points.",
                        "default": "auto"
                    },
                    "tone": {
                        "title": "Outreach Tone",
                        "enum": [
                            "friendly",
                            "professional",
                            "direct",
                            "soft"
                        ],
                        "type": "string",
                        "description": "Tone preference for generated outreach drafts.",
                        "default": "friendly"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
