# Sales Call List Generator (`x.com/sales-call-list-generator`) Actor

Automatically discover businesses, extract contact information, and generate high-quality sales call lists from websites using AI-powered data extraction.

- **URL**: https://apify.com/x.com/sales-call-list-generator.md
- **Developed by:** [Girma Wakeyo](https://apify.com/x.com) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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

### What does Sales Call List Generator do?

**Sales Call List Generator** scans company websites, directory pages, and public landing pages to find sales-ready contact details such as email addresses, phone numbers, source pages, company names, and a simple lead score. Try it with a list of target company URLs or public business directories, then use the Apify platform to schedule runs, call the Actor by API, monitor failures, rotate proxies when needed, and send results to integrations.

This Actor is useful when you already have a target market or seed list and need a structured dataset for outreach preparation. It follows likely contact, about, team, sales, support, and location pages so you can collect the highest-value public contact pages without manually opening every website.

### Why use Sales Call List Generator?

Sales teams, founders, agencies, and revenue operations teams can use this Actor to turn source URLs into a cleaner call list. It helps with prospect research, territory planning, account enrichment, partner sourcing, and quick validation of public contact information before an outbound campaign.

Because the Actor outputs a normalized Apify dataset, developers can plug the results into a CRM workflow, data warehouse, Google Sheets, Make, Zapier, or a custom API consumer. No-code users can run it from the Apify Console and download the results directly.

### How to use Sales Call List Generator

1. Open the Actor on Apify and go to the Input tab.
2. Add one or more company websites, directory URLs, or landing pages to `startUrls`.
3. Keep `Discover contact pages` enabled if you want the Actor to follow contact-related links.
4. Adjust `Maximum pages` and `Maximum concurrency` based on how broad the crawl should be.
5. Run the Actor and wait for the dataset to appear in the Output tab.
6. Export the results or connect the dataset to your preferred sales workflow.

### Input

The Input tab contains these main fields:

```json
{
    "startUrls": [{ "url": "https://example.com" }],
    "maxRequestsPerCrawl": 50,
    "maxConcurrency": 3,
    "requestDelaySecs": 1,
    "discoverContactPages": true,
    "crawlSameDomainOnly": true,
    "maxLinksPerPage": 20,
    "includePagesWithoutContacts": false,
    "useApifyProxy": false
}
````

Use `startUrls` for the pages you want to scan. Increase `maxRequestsPerCrawl` for larger sites, and keep `crawlSameDomainOnly` enabled when you want to avoid unrelated third-party links. Enable `useApifyProxy` only if your Apify account has proxy access and the target websites require it.

### Output

The Actor saves each lead candidate to the default dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
[
    {
        "companyName": "Example Company",
        "sourceUrl": "https://example.com/contact",
        "pageTitle": "Contact Example Company",
        "pageDescription": "Contact the Example Company sales team.",
        "emails": ["sales@example.com"],
        "phoneNumbers": ["+1 415 555 0123"],
        "website": "https://example.com",
        "leadScore": 100,
        "contactPage": true,
        "contactForm": true,
        "contactFormCount": 1,
        "extractedAt": "2026-07-05T00:00:00.000Z"
    }
]
```

### Data table

| Field              | Description                                                                        |
| ------------------ | ---------------------------------------------------------------------------------- |
| `companyName`      | Best detected company or site name.                                                |
| `sourceUrl`        | Page where the contact details were found.                                         |
| `pageTitle`        | Browser title of the source page.                                                  |
| `pageDescription`  | Meta description from the source page, when available.                             |
| `emails`           | Unique public email addresses detected on the page.                                |
| `phoneNumbers`     | Unique plausible phone numbers detected on the page.                               |
| `website`          | Origin of the source page.                                                         |
| `leadScore`        | Score from 0 to 100 based on email, phone, contact form, and contact-page signals. |
| `contactPage`      | Whether the source URL looks like a contact-related page.                          |
| `contactForm`      | Whether the page contains a likely contact, sales, or support form.                |
| `contactFormCount` | Number of likely contact forms detected on the page.                               |
| `extractedAt`      | Timestamp when the record was extracted.                                           |

### Pricing / Cost estimation

How much does it cost to scrape sales contact data? Cost depends on the number of pages opened, page weight, proxy usage, and concurrency. Small runs with dozens of pages should usually fit within modest compute usage, while broad crawls across many websites will cost more.

Start with the free Apify tier or a small `maxRequestsPerCrawl` value to estimate cost for your target sites. If the first run produces enough leads, keep the limit low. If the sites are large, increase the page limit gradually and monitor run duration.

### Tips or Advanced options

Use focused `startUrls` for the best results. A company homepage plus `discoverContactPages` is often enough, but a direct contact or locations URL can be more accurate. Keep `requestDelaySecs` above zero for courteous crawling and lower block rates.

Set `includePagesWithoutContacts` to `true` only when you want audit records for pages that were scanned but did not contain contact information. Use `maxLinksPerPage` to prevent one large navigation menu from expanding the crawl too far.

### FAQ, disclaimers, and support

Is it legal to scrape contact data? Public web scraping can be legal, but you are responsible for following applicable laws, website terms, privacy rules, and outreach regulations in your jurisdiction. Do not use this Actor to collect sensitive personal data or to contact people unlawfully.

Why are some companies missing emails or phone numbers? Some websites hide contact details behind forms, images, scripts, or anti-bot systems. This Actor detects likely contact forms, but it only extracts email addresses and phone numbers that are present in public text or contact links.

For bugs, feature requests, or custom extraction needs, use the Actor Issues tab on Apify. Custom solutions can add CRM formatting, stricter validation, site-specific selectors, enrichment APIs, or domain-specific scoring.

# Actor input Schema

## `startUrls` (type: `array`):

Websites, directory pages, or company pages to scan for sales contact details.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of pages to open during one run.

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

How many pages can be processed at the same time.

## `requestDelaySecs` (type: `integer`):

Delay in seconds between requests to the same website.

## `discoverContactPages` (type: `boolean`):

Follow contact, about, sales, team, location, and support links found on the start pages.

## `crawlSameDomainOnly` (type: `boolean`):

Only follow discovered links that belong to the same domain as the current page.

## `maxLinksPerPage` (type: `integer`):

Maximum number of contact-related links to enqueue from each page.

## `includePagesWithoutContacts` (type: `boolean`):

Save pages even when no email address or phone number is found.

## `proxyConfiguration` (type: `object`):

Proxy settings for anti-bot protection. Defaults to Residential Proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "maxRequestsPerCrawl": 50,
  "maxConcurrency": 3,
  "requestDelaySecs": 1,
  "discoverContactPages": true,
  "crawlSameDomainOnly": true,
  "maxLinksPerPage": 20,
  "includePagesWithoutContacts": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `salesLeads` (type: `string`):

No description

## `dataset` (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 = {
    "startUrls": [
        {
            "url": "https://apify.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("x.com/sales-call-list-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 = { "startUrls": [{ "url": "https://apify.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("x.com/sales-call-list-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 '{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ]
}' |
apify call x.com/sales-call-list-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=x.com/sales-call-list-generator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sales Call List Generator",
        "description": "Automatically discover businesses, extract contact information, and generate high-quality sales call lists from websites using AI-powered data extraction.",
        "version": "0.0",
        "x-build-id": "dEocxbk0WSuuKa7rl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/x.com~sales-call-list-generator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-x.com-sales-call-list-generator",
                "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/x.com~sales-call-list-generator/runs": {
            "post": {
                "operationId": "runs-sync-x.com-sales-call-list-generator",
                "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/x.com~sales-call-list-generator/run-sync": {
            "post": {
                "operationId": "run-sync-x.com-sales-call-list-generator",
                "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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Company or directory URLs",
                        "type": "array",
                        "description": "Websites, directory pages, or company pages to scan for sales contact details.",
                        "default": [
                            {
                                "url": "https://apify.com"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxRequestsPerCrawl": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of pages to open during one run.",
                        "default": 50
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many pages can be processed at the same time.",
                        "default": 3
                    },
                    "requestDelaySecs": {
                        "title": "Delay between same-domain requests",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Delay in seconds between requests to the same website.",
                        "default": 1
                    },
                    "discoverContactPages": {
                        "title": "Discover contact pages",
                        "type": "boolean",
                        "description": "Follow contact, about, sales, team, location, and support links found on the start pages.",
                        "default": true
                    },
                    "crawlSameDomainOnly": {
                        "title": "Stay on the same domain",
                        "type": "boolean",
                        "description": "Only follow discovered links that belong to the same domain as the current page.",
                        "default": true
                    },
                    "maxLinksPerPage": {
                        "title": "Maximum discovered links per page",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of contact-related links to enqueue from each page.",
                        "default": 20
                    },
                    "includePagesWithoutContacts": {
                        "title": "Include pages without contacts",
                        "type": "boolean",
                        "description": "Save pages even when no email address or phone number is found.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for anti-bot protection. Defaults to Residential Proxies.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
