# Website Contact Details Scraper - Email, Phone & Social (`scrapido/website-contact-details-scraper`) Actor

🌐 Website Contact Details Scraper visits any list of sites and returns emails, phone numbers and social links per domain. 🔓 Hidden addresses handled automatically. 📤 Export clean contact records to CSV, JSON or Excel.

- **URL**: https://apify.com/scrapido/website-contact-details-scraper.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Website Contact Details Scraper

**Website Contact Details Scraper** automates time-consuming manual research by pulling business contact information from websites. If you need **website contact details extraction** and a reliable **email address scraper** for lead generation, recruiter outreach, or market research, this actor helps you quickly turn public web pages into usable contact datasets—so you get faster ROI.

### What is Website Contact Details Scraper? 🔍

**Website Contact Details Scraper** is an Apify automation actor built for **website contact details extraction** across real business websites. It acts like a **contact page crawler** that performs **automated web scraping for leads**: it scans the websites you provide and returns **emails**, **phone numbers** (optional), and **social media** profile links (optional) in a structured dataset.

Whether you're a sales professional, recruiter, or marketer, this **website contact scraper** helps you build a targeted pipeline from publicly listed contact information—without spending hours copying details by hand.

### What Does Website Contact Details Scraper Do? ⚙️

Website Contact Details Scraper takes a list of target website URLs, visits relevant pages up to a fixed per-domain limit, and outputs structured contact information per domain. You control whether phone numbers and social media links are included using the provided toggles.

Key capabilities include:

- 🔍 Scrapes publicly available sources from your **target website URLs** to find contact details
- 📧 Extracts email addresses found on the websites and returns them as structured records
- 🌍 Includes domain-level organization so results stay tied to the correct company site
- 📊 Structures output as clean JSON records with dedicated fields for emails, phones, and social links
- 💾 Exports results automatically into your Apify dataset for easy downstream use (CRM imports, analysis, and lead generation automation)

### What Would Results from Website Contact Details Scraper Look Like? 👀

You’ll get one JSON record per scraped domain, ready for analysis, enrichment, or outreach.

```json
{
  "domain": "example.com",
  "homepage_url": "https://example.com",
  "emails": [
    {
      "email": "hello@example.com",
      "confidence_score": 84.2,
      "source_url": "https://example.com/contact",
      "source_type": "contact_page",
      "validation_status": "unknown"
    }
  ],
  "phone_numbers": [
    {
      "phone": "+1 415 555 0199",
      "formatted": "+14155550199",
      "source_url": "https://example.com/contact"
    }
  ],
  "social_media": [
    {
      "platform": "linkedin",
      "url": "https://www.linkedin.com/company/example-inc/",
      "source_url": "https://example.com/about"
    }
  ]
}
```

### Capabilities of Website Contact Details Scraper 🛠️

| Capability | What It Means for You |
|---|---|
| ✅ Website-first targeting (`targetUrls`) | Provide specific websites you care about for focused **business contact information extraction** |
| ✅ Email extraction | Pulls email addresses from publicly listed sources and returns them in the dataset under `emails` |
| ✅ Phone number extraction (toggle) | When enabled, returns `phone_numbers` to help you build a multi-channel lead list |
| ✅ Social media extraction (toggle) | When enabled, returns `social_media` links to support richer lead profiling and contact page crawler workflows |
| ✅ Structured dataset output | Produces a consistent JSON dataset schema you can directly import into tools for lead generation automation |
| ✅ Proxy support | Includes proxy configuration to help with reliable web scraping at scale |
| ✅ Resilience-focused scraping | Uses built-in runtime resilience patterns (e.g., resilience in fetching) so runs are more dependable |
| ✅ Domain normalization in results | Ensures results stay associated with the correct `domain` and `homepage_url` for clean deduplication and normalization of contacts |

### Launch Your First Website Contact Details Scraper Task 🚀

#### Input Fields

```json
{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "enablePhoneExtraction": true,
  "enableSocialMediaExtraction": true,
  "proxySettings": {
    "useApifyProxy": true
  }
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `targetUrls` | array | ✅ Yes | — | List of target website URLs to scrape for contact information |
| `enablePhoneExtraction` | boolean | No | `true` | If enabled, the scraper will also extract phone numbers found on the pages |
| `enableSocialMediaExtraction` | boolean | No | `true` | If enabled, the scraper will detect and extract social media profile links (e.g., LinkedIn, Twitter, Facebook) |
| `proxySettings` | object | No | `{ "proxy support": true }` | Proxy configuration (using residential proxies is highly recommended to avoid blocking) |

#### Output Format

You’ll find the scraped results in the default Apify dataset called **Website Contact Data** (view: **Scraped Contact Information**), with one record per domain.

```json
{
  "domain": "example.com",
  "homepage_url": "https://example.com",
  "emails": [
    {
      "email": "hello@example.com",
      "confidence_score": 78.5,
      "source_url": "https://example.com/contact",
      "source_type": "contact_page",
      "validation_status": "unknown"
    }
  ],
  "phone_numbers": [
    {
      "phone": "+1 415 555 0199",
      "formatted": "+14155550199",
      "source_url": "https://example.com/contact"
    }
  ],
  "social_media": [
    {
      "platform": "linkedin",
      "url": "https://www.linkedin.com/company/example-inc/",
      "source_url": "https://example.com/about"
    }
  ]
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `domain` | Domain | text | Domain extracted from the provided target website URL |
| `homepage_url` | Homepage | link | Homepage URL constructed for the extracted domain |
| `emails` | Email Addresses | array | Email records extracted from the website’s publicly available sources |
| `phone_numbers` | Phone Numbers | array | Extracted phone number records (present when phone extraction is enabled) |
| `social_media` | Social Media | object | Social media profile records (present when social extraction is enabled) |

**Step-by-step launch guide:**

1. **Open** the actor in the Apify Console
2. **Paste** your target website URLs into **targetUrls**
3. **Toggle** `enablePhoneExtraction` and `enableSocialMediaExtraction` based on what you need for your lead generation automation workflow
4. **(Optional)** Configure `proxySettings` for smoother large runs
5. **Run** and monitor logs
6. **Export** from the Dataset tab for analysis or outreach

### Solving Real Problems with Website Contact Details Scraper 💼

- 🎯 **Sales prospecting** — build a contact list from website contact details extraction instead of manual copy-pasting
- 📣 **Targeted outreach** — use email address scraper outputs to enrich leads and speed up campaigns
- 🤝 **Recruitment and networking** — quickly locate business contact information extraction for hiring communications
- 🔬 **Competitive research** — map how companies present contact info across contact page crawler patterns
- ⚙️ **Data mining from websites** — create structured datasets for downstream workflows with consistent fields

### What Sets Website Contact Details Scraper Apart? 🏆

- 📧 **Structured data parsing** — consistent dataset fields for emails, phone numbers, and social profile links
- 🔁 **Deduplication-ready organization** — results are organized by `domain`, helping downstream deduplication and normalization
- 🛡️ **Proxy support for reliability** — improves stability for web scraping for leads at scale
- ✅ **Simple inputs, clean outputs** — designed for both marketers and data analysts who want web scraping for leads without glue code

### Search Limits and Capacity 📈

The actor processes your provided website list and returns results per domain in the dataset. Output volume depends on how much publicly available contact information exists on each site. For higher reliability at scale, you can enable proxy support via `proxySettings`.

### Is It Legal to Scrape Website Contact Details Scraper? ⚖️

Website Contact Details Scraper is intended to access only **publicly available data** from websites. It does not require logins or private access. Always review and follow each site’s terms of service and comply with applicable privacy and anti-spam regulations (e.g., GDPR/CCPA). For compliance or data handling questions, contact <scrapidocontact@gmail.com>.

### Ending Note ✉️

Stop hunting through contact pages and scattered footer links. With Website Contact Details Scraper, you can automate web scraping for leads and get organized emails, phone numbers, and social media links into a clean dataset—fast, structured, and ready for action.

### FAQ — Website Contact Details Scraper ❓

#### How Does the Website Contact Details Scraper Work?

You provide `targetUrls` in the actor input. The actor visits the related pages on those websites and extracts email addresses, and—depending on your toggles—phone numbers and social media profile links. Each domain’s results are pushed into the Apify dataset using the dataset output schema fields.

#### What Types of Websites Can I Target?

You can scrape any websites you can access publicly, as long as the site contains contact information like email addresses and (optionally) phone numbers and social links. The actor organizes results by extracted `domain` so you can keep your business contact information extraction neatly structured.

#### How Reliable Is the Extracted Contact Information?

Reliability depends on what the website publicly lists. The actor uses publicly available source extraction and returns structured records in the dataset. If a site doesn’t contain contact details, you’ll simply see fewer (or empty) results in `emails`, `phone_numbers`, or `social_media`.

#### Can I Export the Results for CRM or Outreach Tools?

Yes. Results are saved to the Apify dataset (Website Contact Data / Scraped Contact Information) and you can export the dataset contents in JSON for further processing. This structured output is designed for analytics, deduplication and normalization of contacts, and lead generation automation pipelines.

#### Does It Support Phone Numbers and Social Media?

Yes. Use `enablePhoneExtraction` (default `true`) to extract phone numbers into `phone_numbers`, and use `enableSocialMediaExtraction` (default `true`) to extract social profile links into `social_media`.

#### How Do I Handle Rate Limits or Blocking?

Use `proxySettings` (recommended) to improve scraping stability. The actor is built to work with proxy configuration to help you run more reliably when scraping the public web.

#### How Do I Contact Support or Request Changes?

For support, bug reports, or feature requests, email <scrapidocontact@gmail.com>.

# Actor input Schema

## `targetUrls` (type: `array`):

List of target website URLs to scrape for contact information.

## `enablePhoneExtraction` (type: `boolean`):

If enabled, the scraper will also extract phone numbers found on the pages.

## `enableSocialMediaExtraction` (type: `boolean`):

If enabled, the scraper will detect and extract social media profile links (e.g., LinkedIn, Twitter, Facebook).

## `validateEmails` (type: `boolean`):

Run DNS/MX validation and confidence scoring on every email found, and include the results (confidence score, validation status, role-based/catch-all flags) in the output.

## `proxySettings` (type: `object`):

Configuration for proxies. Using residential proxies is highly recommended to avoid blocking.

## Actor input object example

```json
{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "enablePhoneExtraction": true,
  "enableSocialMediaExtraction": true,
  "validateEmails": false,
  "proxySettings": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `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 = {
    "targetUrls": [
        {
            "url": "https://apify.com"
        }
    ],
    "proxySettings": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/website-contact-details-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 = {
    "targetUrls": [{ "url": "https://apify.com" }],
    "proxySettings": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/website-contact-details-scraper").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 '{
  "targetUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "proxySettings": {
    "useApifyProxy": true
  }
}' |
apify call scrapido/website-contact-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/website-contact-details-scraper"
        }
    }
}

```

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/uwKmBHPvPNk9G8KYP/builds/EIl2nBiuyWCCUflrK/openapi.json
