# Website Contact & Email Scraper (`scrapers_lat/website-contacts-scraper`) Actor

Turn a list of company websites into contacts. For each site, extract public emails, phone numbers, LinkedIn, Twitter, Facebook and Instagram profiles and the business address. Perfect for enriching lead lists. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/website-contacts-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.25 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Website Contact & Email Scraper

> Turn a list of company websites into contacts. For each site this actor reads the homepage plus the contact, about and team pages and pulls out public emails, phone numbers, social profiles and the business address. The enrichment layer for any lead list.

**📥 [Input](https://apify.com/scrapers_lat/website-contacts-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/website-contacts-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/website-contacts-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/website-contacts-scraper/examples)**


![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Contacts](https://img.shields.io/badge/Data-Emails%20%26%20Contacts-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>Emails & phones</strong><br>from every site</td>
<td align="center"><strong>Social profiles</strong><br>LinkedIn, X, Facebook, Instagram</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
</tr></table>

<br>

### What you get

Give it a list of websites and get one clean contact record per site, ready to drop into a CRM or a spreadsheet:

- **website** and **domain**: the site that was enriched
- **emails**: every public email found across the pages, de-duplicated
- **phones**: public phone numbers, normalized
- **linkedin**, **twitter**, **facebook**, **instagram**, **youtube**: the company's social profiles
- **addresses**: the business address when it is published on the site (best effort)
- **pagesScanned**: exactly which pages the contacts were pulled from
- **observedAt**: when the record was collected

### Who is it for

| Use case | Who benefits |
|---|---|
| Lead enrichment | Sales teams turning a list of domains into reachable contacts |
| Outbound campaigns | Marketers adding emails and socials to their prospect lists |
| CRM hygiene | Ops teams filling missing contact fields on company records |
| Recruiting & partnerships | Anyone who needs to reach the company behind a website |

### How to use it

1. Add one or more **websites** (a domain like `example.com` or a full URL). You can paste a whole list.
2. Set **Max pages per site** to control how deep it looks (homepage plus contact, about and team pages).
3. Set **Max Items** and run. Export as JSON, CSV or Excel, or pull it through the Apify API.
4. If some sites block datacenter traffic, enable the optional **proxy**.

### Frequently Asked Questions

**Which pages does it read?**
The homepage plus a few likely contact pages it finds by following links whose text or address mentions contact, about, team, impressum or similar, along with common paths like `/contact` and `/about`.

**How are emails cleaned up?**
Results are de-duplicated and obvious non-contacts (placeholder, example and asset-file addresses) are removed, so you get real, usable emails.

**Why are some fields empty?**
Some companies simply do not publish an email, phone or address on their public site. Empty fields mean nothing matching was found on the pages that were read.

**Can I enrich hundreds of domains?**
Yes. Paste your full list of websites and set Max Items accordingly; each website returns one record.

<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Emails and contacts from stripe.com and notion.so websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-stripe-notion-contacts): Extract emails, phone numbers, and social media profiles from stripe.com and notion.so to build enriched B2B contact and lead lists.
- [Emails and contacts from shopify.com and figma.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-shopify-figma-contacts): Extract emails, phone numbers, and social media profiles from shopify.com and figma.com to build enriched B2B contact and lead lists.
- [Emails and contacts from airbnb.com and canva.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-airbnb-canva-contacts): Extract emails, phone numbers, and social media profiles from airbnb.com and canva.com to build enriched B2B contact and lead lists.
- [Emails and contacts from hubspot.com and salesforce.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-hubspot-salesforce-contacts): Extract emails, phone numbers, and social media profiles from hubspot.com and salesforce.com to build enriched B2B contact and lead lists.
- [Emails and contacts from zoom.us and slack.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-zoom-slack-contacts): Extract emails, phone numbers, and social media profiles from zoom.us and slack.com to build enriched B2B contact and lead lists.
- [Emails and contacts from atlassian.com and gitlab.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-atlassian-gitlab-contacts): Extract emails, phone numbers, and social media profiles from atlassian.com and gitlab.com to build enriched B2B contact and lead lists.
- [Emails and contacts from dropbox.com and box.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-dropbox-box-contacts): Extract emails, phone numbers, and social media profiles from dropbox.com and box.com to build enriched B2B contact and lead lists.
- [Emails and contacts from mailchimp.com and twilio.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-mailchimp-twilio-contacts): Extract emails, phone numbers, and social media profiles from mailchimp.com and twilio.com to build enriched B2B contact and lead lists.
- [Emails and contacts from squarespace.com and wix.com websites](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-squarespace-wix-contacts): Extract emails, phone numbers, and social media profiles from squarespace.com and wix.com to build enriched B2B contact and lead lists.
- [Emails and contacts from the openai.com website](https://apify.com/scrapers_lat/website-contacts-scraper/examples/webc-openai-domain-contacts): Extract emails, phone numbers, and social media profiles from openai.com to build an enriched B2B contact and lead list.

<!-- /example-tasks -->

<!-- related-actors -->
<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for public platforms: finance, news, real estate, jobs, e-commerce and government data. Browse the full catalog or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool. It only accesses publicly available information published on the websites you provide. Use the results in accordance with each site's terms and applicable law.

# Actor input Schema

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

Maximum number of websites to enrich. Optional.
## `websites` (type: `array`):

One or more company websites to enrich. Enter a domain (example.com) or a full URL. Each website returns one contact record.
## `domain` (type: `string`):

Optional. A single domain to enrich, in addition to (or instead of) the list above.
## `maxPagesPerSite` (type: `integer`):

How many pages to read per website (the homepage plus likely contact / about / team pages). Higher finds more contacts but is slower.

## Actor input object example

```json
{
  "maxWebsites": 50,
  "websites": [
    "stripe.com",
    "apify.com"
  ],
  "maxPagesPerSite": 6
}
````

# 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 = {
    "maxWebsites": 50,
    "websites": [
        "stripe.com",
        "apify.com"
    ],
    "maxPagesPerSite": 6
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/website-contacts-scraper").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 = {
    "maxWebsites": 50,
    "websites": [
        "stripe.com",
        "apify.com",
    ],
    "maxPagesPerSite": 6,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/website-contacts-scraper").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 '{
  "maxWebsites": 50,
  "websites": [
    "stripe.com",
    "apify.com"
  ],
  "maxPagesPerSite": 6
}' |
apify call scrapers_lat/website-contacts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/website-contacts-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Website Contact & Email Scraper",
        "description": "Turn a list of company websites into contacts. For each site, extract public emails, phone numbers, LinkedIn, Twitter, Facebook and Instagram profiles and the business address. Perfect for enriching lead lists. Export to JSON, CSV or Excel.",
        "version": "0.1",
        "x-build-id": "QtE4ymaPnWKkx6u98"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~website-contacts-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-website-contacts-scraper",
                "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/scrapers_lat~website-contacts-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-website-contacts-scraper",
                "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/scrapers_lat~website-contacts-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-website-contacts-scraper",
                "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",
                "properties": {
                    "maxWebsites": {
                        "title": "Max websites",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of websites to enrich. Optional."
                    },
                    "websites": {
                        "title": "Websites",
                        "type": "array",
                        "description": "One or more company websites to enrich. Enter a domain (example.com) or a full URL. Each website returns one contact record.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domain": {
                        "title": "Single domain (optional)",
                        "type": "string",
                        "description": "Optional. A single domain to enrich, in addition to (or instead of) the list above."
                    },
                    "maxPagesPerSite": {
                        "title": "Max pages per site",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many pages to read per website (the homepage plus likely contact / about / team pages). Higher finds more contacts but is slower."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
