# Company Website Lead Enricher (`peroxo/company-website-lead-enricher`) Actor

Extract public company names, contact details, legal identifiers, and social links from company websites.

- **URL**: https://apify.com/peroxo/company-website-lead-enricher.md
- **Developed by:** [Michael Beetz](https://apify.com/peroxo) (community)
- **Categories:** Business, Marketing, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 enriched domains

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Company Website Lead Enricher

Extract public B2B lead details from company websites and domains. Provide a list of websites and the Actor returns structured company identity, contact, legal, social, and evidence fields that can be exported as JSON or CSV.

### What it does

For each website, the Actor fetches the homepage and prioritizes likely company information pages such as contact, about, imprint/impressum, legal, privacy, and support pages. It then extracts best-effort structured fields:

- Company or site name
- Legal company name when available
- Public email addresses
- Public phone numbers
- Postal address from structured data or legal pages
- Social profile links: LinkedIn, Facebook, Instagram, X/Twitter, YouTube, TikTok, GitHub
- VAT / tax IDs and registration numbers when visible
- Source pages used as evidence
- Optional evidence snippets for found contact/legal fields
- Confidence score and warnings

### Common use cases

- Enrich a CRM list from known domains
- Build a lightweight B2B prospecting dataset
- Collect public contact channels for partner, sales, or recruiting research
- Audit whether websites expose clear contact and legal information
- Convert a spreadsheet of company domains into structured JSON/CSV

### Input

```json
{
  "websites": [
    "https://www.apify.com",
    "example.com"
  ],
  "maxPagesPerWebsite": 6,
  "includePageTextSnippets": true,
  "requestTimeoutSecs": 20,
  "maxWebsites": 100
}
```

#### Input fields

| Field | Type | Description |
| --- | --- | --- |
| `websites` | array of strings | Company homepages or bare domains to enrich. |
| `maxPagesPerWebsite` | integer | Maximum pages to fetch per website. Higher values can find more contact/legal pages but take longer. |
| `includePageTextSnippets` | boolean | Include short snippets showing where contact/legal values were found. |
| `requestTimeoutSecs` | integer | HTTP timeout for each fetched page. |
| `maxWebsites` | integer | Safety limit for large input lists. |

### Output

Each dataset item represents one input website:

```json
{
  "input": "https://www.apify.com",
  "canonicalUrl": "https://apify.com/",
  "domain": "apify.com",
  "companyName": "Apify",
  "legalName": null,
  "emails": ["hello@apify.com"],
  "phones": [],
  "address": null,
  "socialLinks": {
    "linkedin": ["https://www.linkedin.com/company/apify"]
  },
  "vatIds": [],
  "registrationNumbers": [],
  "sourcePages": ["https://apify.com/"],
  "confidence": 0.66,
  "warnings": []
}
```

#### Output fields

| Field | Description |
| --- | --- |
| `input` | Original website/domain from the input. |
| `canonicalUrl` | Final fetched homepage URL after normalization and redirects. |
| `domain` | Registered domain. |
| `companyName` | Best-effort public company or site name. |
| `legalName` | Legal company name found in structured data or legal/imprint pages. |
| `emails` | Public email addresses found on fetched pages. |
| `phones` | Public phone numbers found on fetched pages. |
| `address` | Best-effort postal address object or raw address string. |
| `socialLinks` | Public social/profile links grouped by platform. |
| `vatIds` | VAT/tax identifiers found on legal pages. |
| `registrationNumbers` | Company registration numbers found on legal pages. |
| `sourcePages` | URLs fetched and used for extraction. |
| `evidence` | Optional snippets showing where values were found. |
| `confidence` | 0-1 score based on how many useful signals were extracted. |
| `warnings` | Fetch/parsing warnings, if any. |

### Data and compliance notes

This Actor extracts only publicly available information from websites you provide. It does not bypass logins, paywalls, CAPTCHAs, private APIs, or access controls. Website structures vary, so results are best-effort and should be reviewed before compliance decisions or outreach campaigns.

### Tips for best results

- Use company homepages, not search result pages.
- Increase `maxPagesPerWebsite` for sites with separate legal/contact pages.
- Enable `includePageTextSnippets` when you need evidence for CRM review.
- Export the dataset as CSV for spreadsheets or as JSON for automation workflows.

# Actor input Schema

## `websites` (type: `array`):

Company homepages or bare domains to enrich, for example https://example.com or example.com.

## `maxPagesPerWebsite` (type: `integer`):

Maximum number of pages to fetch per website. The Actor prioritizes homepage plus contact, about, imprint, privacy, and legal pages.

## `includePageTextSnippets` (type: `boolean`):

Include short evidence snippets for extracted contact details. Disable this for smaller outputs.

## `requestTimeoutSecs` (type: `integer`):

HTTP timeout for each fetched page.

## `maxWebsites` (type: `integer`):

Stop after this many input websites to cap spend on large input lists.

## Actor input object example

```json
{
  "websites": [
    "https://www.apify.com",
    "example.com"
  ],
  "maxPagesPerWebsite": 6,
  "includePageTextSnippets": true,
  "requestTimeoutSecs": 20,
  "maxWebsites": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with one structured enrichment item per input website.

## `resultsCsv` (type: `string`):

Dataset exported as CSV for spreadsheets and CRMs.

# 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 = {
    "websites": [
        "https://www.apify.com",
        "example.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("peroxo/company-website-lead-enricher").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 = { "websites": [
        "https://www.apify.com",
        "example.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("peroxo/company-website-lead-enricher").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 '{
  "websites": [
    "https://www.apify.com",
    "example.com"
  ]
}' |
apify call peroxo/company-website-lead-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,peroxo/company-website-lead-enricher"
        }
    }
}
```

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/qN8ziSRRYQdSo2MGp/builds/HfD4KfGess8ktssG2/openapi.json
