# Email Extractor (`gordian/email-extractor`) Actor

Find and extract email addresses from any website in seconds. This actor will crawl entire websites and return all emails after validation. Easy to use and extremely fast.

- **URL**: https://apify.com/gordian/email-extractor.md
- **Developed by:** [Gordian](https://apify.com/gordian) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 923 total users, 53 monthly users, 99.3% runs succeeded, 8 bookmarks
- **User rating**: 1.12 out of 5 stars

## Pricing

Pay per event

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

Email Extractor is an Apify Actor that finds and collects email addresses from web pages you provide, with an option to follow links and discover more emails.

### 🎯 Why extract emails?

Use cases include:

- Lead generation and outreach lists
- Finding contact emails for support, press, or careers pages
- Verifying public contact details across a site
- Compliance and due‑diligence checks

### ✨ What can Email Extractor do?

This Actor:

- Crawls your provided URLs and optionally follows links discovered on those pages
- Extracts emails from full page HTML (not just visible text)
- Validates the email domain TLD against the official IANA list for better accuracy
- Deduplicates results across the whole run
- Records both the page where an email was found and the original source URL you submitted

### 🚀 How to run

Run on Apify Console:

1. Create a free Apify account: https://console.apify.com/sign-up
2. Click “Try for free” on this actor
3. Fill the input (see example below)
4. Click Start and wait for the run to finish
5. Download results (JSON, CSV, Excel) from the Dataset tab

### 💡 Output data

Each dataset item contains:

| Field | Description |
|-------|-------------|
| email | The extracted email address |
| url | Page URL where the email was found |
| sourceUrl | One of your input URLs from which this crawl originated |

#### Output example

```json
{
    "email": "hello@apify.com",
    "url": "https://apify.com/resources/nonprofits",
    "sourceUrl": "https://apify.com/"
}
```

### 📥 Input

The Actor accepts these input parameters:

- `urls` (array, required): One or more page URLs to scan
- `crawl` (boolean, optional, default: true): Follow links discovered on the provided pages to find more emails

#### Input example

```json
{
    "urls": [
        "https://apify.com/"
    ],
    "crawl": true
}
```

### 💰 How much does it cost to extract emails?

This actor is extremly cost-effective. Check the "Pricing" tab for more details.

With Apify's free tier, you get $5 of platform credits monthly for free, which you can use to test this actor for free.

Do you need to scrape more? [Upgrade to a paid plan](https://apify.com/pricing?fpr=7p4wu) which includes more platform credits and discounted pricing.

Tip 1: Provide multiple URLs in your input, that way you only pay the actor start cost once.

Tip 2: If you are doing a large run, consider increasing the RAM used per run to scrape faster. When doing a small run decrease the RAM used to reduce the actor start costs.

Tip 3: Upgrade to a higher plan to get discounted pricing. Link: [https://apify.com/pricing](https://apify.com/pricing?fpr=7p4wu)

### 🔗 Integrations

This Actor integrates seamlessly with:

- **Automation platforms** - Build no code workflows with [Make.com](https://www.make.com/en/register?pc=louisdeconinck), n8n, and Zapier
- **Webhooks** - Trigger actions when scraping completes through [webhooks](https://docs.apify.com/platform/integrations/webhooks?fpr=7p4wu)
- **Schedulers** - Run daily/weekly to track group growth with Apify's [Scheduler](https://docs.apify.com/schedules?fpr=7p4wu)
- **API** - Start runs and access data programmatically with the [Apify API](https://docs.apify.com/api/v2#/reference/actors/run-collection/run-actor?fpr=7p4wu)
- **Google Sheets** - Export directly to spreadsheets

### 👥 Who made this Actor?

Gordian is a specialised Apify web scraping agency founded by Louis Deconinck.

Louis is a top 1% Apify developer, Oxford University IT graduate, and creator of 70+ scrapers used by 1,000+ data professionals every month. He has scraped 10,000,000+ pages bypassing the most advanced anti-scraping protections.

- Apify AI Agent Hackathon Winner
- 300+ contributions in Apify Discord
- Former senior data engineer in EU banking

Looking for a custom data solution? Get in touch.

### ❓ FAQ

#### Do you validate emails?

We validate the top‑level domain against the official IANA list, deduplicate results and verify correct syntax.

#### Is it legal to scrape emails?

Yes, web scraping publicly available data is legal. This scraper only extracts information that is publicly visible.

For more information on web scraping legality, read this blog post: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal?fpr=7p4wu)

#### Can I export data to CSV or Excel?

Yes, Apify supports exporting dataset results in multiple formats: JSON, CSV, Excel (XLSX), HTML, XML and RSS.

#### How do I get started?

[Make a free Apify account](https://console.apify.com/sign-up?fpr=7p4wu) to claim your free $5 usage and start scraping today by clicking "Try for free".

# Actor input Schema

## `urls` (type: `array`):

List of URLs to start crawling from.

## `crawl` (type: `boolean`):

If true, the actor will enqueue links found on the pages.

## `email` (type: `string`):

Your email address

## Actor input object example

```json
{
  "urls": [
    "https://apify.com/"
  ],
  "crawl": true
}
```

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("gordian/email-extractor").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 = { "urls": ["https://apify.com/"] }

# Run the Actor and wait for it to finish
run = client.actor("gordian/email-extractor").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 '{
  "urls": [
    "https://apify.com/"
  ]
}' |
apify call gordian/email-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gordian/email-extractor"
        }
    }
}

```

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/LOnZuDhS6d1WRM5ov/builds/ftbifh1tzpqce9all/openapi.json
