# Website Email Scraper (`scraperoka/website-email-scraper`) Actor

📧 Website Email Scraper extracts emails from websites quickly and accurately. Perfect for B2B lead gen, outreach & sales research—saves time while keeping results clean. 🚀 Try it to find targeted contacts faster!

- **URL**: https://apify.com/scraperoka/website-email-scraper.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (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 $1.99 / 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 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 Email Scraper ⚡ — Extract contact emails from any website at scale

Manually visiting every website page to collect emails wastes hours you don’t have. **Website Email Scraper** automatically scrapes emails, phone numbers, and social media links from your target websites—using a website email scraper + email harvesting tool workflow. This Website Email Scraper for emails is ideal for marketers, recruiters, and growth teams who need reliable leads fast, and it can process up to multiple domains in a single run.

### What You Get: Sample Output

Here’s a sample record from a single run:

```json
{
  "domain": "example.com",
  "homepage_url": "https://example.com",
  "emails": [
    {
      "email": "contact@example.com",
      "confidence_score": 86.4,
      "source_url": "https://example.com/contact",
      "source_type": "contact_page",
      "validation_status": "unknown"
    },
    {
      "email": "support@example.com",
      "confidence_score": 79.2,
      "source_url": "https://example.com/help",
      "source_type": "body",
      "validation_status": "unknown"
    }
  ],
  "phone_numbers": [
    {
      "phone": "+1 (555) 010-2020",
      "formatted": "+15550102020",
      "source_url": "https://example.com/contact"
    }
  ],
  "social_media": [
    {
      "platform": "linkedin",
      "url": "https://www.linkedin.com/company/example",
      "source_url": "https://example.com/about"
    },
    {
      "platform": "twitter",
      "url": "https://twitter.com/example",
      "source_url": "https://example.com"
    }
  ]
}
```

| Field | Type | What It Tells You |
|---|---|---|
| `domain` | string | The scraped website domain for easy matching to your lead lists |
| `homepage_url` | string | A direct homepage link so you can quickly verify source context |
| `emails` | array | All emails found on the site pages you scan |
| `emails[].email` | string | The actual email address you can use for outreach or CRM import |
| `emails[].confidence_score` | number | A signal for how strongly the extractor believes the email is relevant |
| `emails[].source_url` | string | Where the email was found so you can audit provenance |
| `emails[].source_type` | string | Whether the email came from a contact/about/team/footer/body area |
| `emails[].validation_status` | string | The email validation status returned by the actor |
| `phone_numbers` | array | Any phone numbers found on the scraped pages (when enabled) |
| `phone_numbers[].phone` | string | The extracted phone value as it appears in the source |
| `social_media` | array | Social profile links detected for lead enrichment (when enabled) |
| `social_media[].platform` | string | The social platform name (e.g., LinkedIn, Twitter, Facebook-style platforms) |
| `social_media[].url` | string | The profile link you can use to enrich or qualify leads |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

### Why Website Email Scraper?

There are a lot of ways to pull data from websites—here’s what sets Website Email Scraper apart.

#### Built for complete contact details (not just emails)

Website Email Scraper doesn’t stop at an email harvesting tool approach. It also extracts phone numbers and social media profile links so you can build richer lead records in one pass—ideal for a web scraper for emails workflow.

#### Flexible input for real-world lead lists

You provide `targetUrls` as a list of website URLs. The actor extracts domains from your inputs and produces one dataset record per domain, making it practical for bulk email extractor and CRM email scraper use cases.

#### Reliability-focused scraping with fallback behavior

The actor includes resilient behavior with error handling per domain, pushing an empty result set if a domain fails. That means your run can continue and you can still use successfully scraped domains without starting over.

#### Output that’s easy to plug into outreach workflows

Results are pushed directly into the dataset with consistent field names: `domain`, `homepage_url`, `emails`, `phone_numbers`, and `social_media`. That structured output is exactly what you want when you’re scraping emails from leads for downstream automation.

### Configuring Your Run

Drop this into your `input.json` to get started:

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

| Parameter | Required | What It Does |
|---|---|---|
| `targetUrls` | ✅ | List of target website URLs to scrape for contact information |
| `enablePhoneExtraction` | ⬜ | If enabled, extracts phone numbers found on the pages |
| `enableSocialMediaExtraction` | ⬜ | If enabled, detects and extracts social media profile links from the site |
| `proxySettings` | ⬜ | Proxy configuration to help scraping run smoothly |
| ↳ `proxySettings.proxy support` | ⬜ | Routes traffic through Apify Proxy (recommended for reliable scraping) |

### Core Capabilities

#### Email extraction for lead generation

Website Email Scraper extracts emails and returns them in a structured `emails` array. Each email includes `confidence_score`, `source_url`, `source_type`, and `validation_status`, which helps you understand what was found and where.

#### Optional phone number extraction

When `enablePhoneExtraction` is true, the output includes `phone_numbers` with both `phone` and `formatted` values, plus `source_url`. This is useful for campaigns that mix email and phone outreach.

#### Social media enrichment links

When `enableSocialMediaExtraction` is enabled, the output includes a `social_media` array with `platform`, `url`, and `source_url`. This makes Website Email Scraper useful as a web scraper for emails plus enrichment—helpful for lead qualification.

#### Domain-based results for clean downstream processing

The actor creates one dataset record per scraped domain with `homepage_url` and the discovered contact details. That makes it straightforward to join results back to your own domain lists for automated email scraping and CRM email scraper workflows.

#### Built-in proxy support for smoother scraping

The run supports proxy configuration via `proxySettings`, with residential proxies recommended in the UI description for avoiding blocking. This helps Website Email Scraper behave reliably across diverse sites.

### Who Gets the Most Out of This

Here’s how different teams put Website Email Scraper to work:

**Outbound Marketing Teams** — Use a website contact email scraper workflow to turn lists of company websites into email-led outreach datasets, saving hours of manual checking per lead batch.

**Sales Development Representatives** — Feed target domains and get back `emails` plus optional `phone_numbers` and `social_media` links, speeding up list building for email outreach and call follow-up.

**Freelance Researchers & Data Analysts** — Build repeatable datasets by domain: each record includes `emails` with provenance fields like `source_url` and `source_type`, making it easier to audit findings.

**CRM / RevOps Teams** — Import structured results directly into pipelines as a consistent dataset schema (`domain`, `homepage_url`, `emails`, `phone_numbers`, `social_media`), helping keep contact data organized for ongoing enrichment.

**Automation Specialists (Technical)** — Trigger Website Email Scraper via the Apify API, then route the dataset records into downstream automation and enrichment steps without reformatting.

### Step-by-Step: How to Use It

No coding needed. Here's how to run Website Email Scraper from start to finish:

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and open Website Email Scraper.
2. **Enter your inputs** — set `targetUrls` (required), then choose whether to enable `enablePhoneExtraction` and `enableSocialMediaExtraction`.
3. **Configure proxy settings** — set up `proxySettings` if you want proxy support for smoother scraping.
4. **Hit Run and watch the live log** — follow progress as domains are processed.
5. **View results in the dataset tab** — each domain record includes `domain`, `homepage_url`, and extracted contact details.
6. **Export as JSON, CSV, or Excel** — download the dataset in the format you need.

The whole process takes under 5 minutes to set up.

### Integrations & Export Options

Once your data is collected, Website Email Scraper plugs directly into your existing workflow.

You can export results from the Apify dataset tab in common formats like **JSON, CSV, and Excel**, which is ideal for bulk email extractor exports into spreadsheets and reporting tools.

You can also use Apify’s **API** to pull results programmatically (and combine them with your own pipelines), and you can connect automation steps via **Zapier / Make** or **webhooks** for downstream actions like CRM updates when runs complete. For details on each integration path, refer to the Apify docs: [apify.com/docs/api](https://apify.com/docs/api).

### Pricing & Free Trial

Website Email Scraper runs on the Apify platform, which offers a **free tier** — no credit card required to get started.

You can use the free tier for several test runs, then scale using Apify’s standard pay-as-you-go model (billed per Actor compute unit / compute usage). Apify also provides subscription plans for heavier usage, and you can review up-to-date options on Apify’s pricing page. Start for free at [apify.com](https://apify.com) and scale when you’re ready.

### Reliability & Performance

| What We Handle | How |
|---|---|
| Rate limits & site variability | Uses proxy support when configured to help keep scraping stable |
| Domain-level failures | Errors are handled per domain so successful domains still return results |
| Optional extraction modes | You control `enablePhoneExtraction` and `enableSocialMediaExtraction` to fit your needs |
| Structured dataset output | Consistent fields (`domain`, `homepage_url`, `emails`, `phone_numbers`, `social_media`) for easier processing |
| Run resilience | Includes fallbacks and continues processing even when a domain encounters issues |

Limitations: Website Email Scraper extracts contact details from publicly available website content. If a website doesn’t publish emails/phones/social links in accessible pages, those fields may be empty. For enterprise-scale runs, contact us to discuss custom configurations.

### Frequently Asked Questions

#### Is there a free plan or trial?

Apify provides a free tier you can use to run Website Email Scraper without a credit card. The exact amount you can run depends on your account and credits; check Apify’s pricing page for current details.

#### Do I need to log in to use this?

No. You only need to provide `targetUrls` and optional extraction toggles like `enablePhoneExtraction` and `enableSocialMediaExtraction`. The actor is designed to scrape publicly available data from the websites you specify.

#### How accurate is the data?

Accuracy depends on what the website publishes publicly. Website Email Scraper extracts emails, phone numbers, and social media links it finds and returns additional details like `confidence_score`, `source_url`, and `source_type` for the email results.

#### How many results can I get per run?

Your results are returned per domain based on the scraping process and limits set internally by the actor. You can control what you scrape by supplying multiple `targetUrls` in one run.

#### How often is the data updated / how fresh is it?

The dataset reflects the run time: each actor run scrapes the specified websites during execution and pushes the extracted results into the dataset. If you need fresher data, you can run the actor again on a schedule.

#### Is this legal? Does it comply with GDPR / CCPA?

Website Email Scraper is intended to work with **publicly available data**. Whether your use of the extracted contacts complies with GDPR, CCPA, platform Terms of Service, and local regulations is your responsibility.

#### Can I export results to Google Sheets or Excel?

Yes. You can export results from the Apify dataset tab, including JSON and CSV/Excel-style exports depending on your setup. From there, you can import into your preferred tools such as spreadsheets.

#### Can I run this on a schedule automatically?

Yes. You can run Apify actors on a schedule using Apify’s scheduling features. This is useful for keeping your scraped email address scraper datasets up to date.

#### Can I access this via API?

Yes. You can access Website Email Scraper results programmatically via the Apify API. For API details, see [apify.com/docs/api](https://apify.com/docs/api).

#### What happens if the actor hits an error?

Errors are handled so the actor continues processing other domains. If a domain fails, the actor pushes a result with empty `emails`, `phone_numbers`, and `social_media` arrays for that domain.

### Need Help or Have a Request?

Got a question about Website Email Scraper or want a new feature added? Reach out at <dataforleads@gmail.com>. We’re happy to help with setup questions and welcome ideas like webhook notifications on completion or easier CSV-ready exports.

### Disclaimer & Responsible Use

*Website Email Scraper is the fastest, most reliable way to extract emails, phone numbers, and social links from public websites—start your free run today.*

This actor collects **publicly available data** only. It does not access private accounts, login-gated content, or password-protected pages. You are responsible for complying with GDPR, CCPA, platform Terms of Service, and any applicable local regulations. For data removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

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

## `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,
  "proxySettings": {
    "useApifyProxy": true
  }
}
```

# 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("scraperoka/website-email-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("scraperoka/website-email-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 scraperoka/website-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraperoka/website-email-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/OBadcojAUVZcFhzOK/builds/YUrEFynqW4VCXnL4Q/openapi.json
