# EmailReach Email And Social Scraping (`kawsar/emailreach-email-and-social-scraping`) Actor

Scrapes emails and social profiles from any website using emailreach.io, so sales teams, recruiters, and marketers can build contact lists without manual research.

- **URL**: https://apify.com/kawsar/emailreach-email-and-social-scraping.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 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.

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

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

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

## EmailReach Email and Social Scraping: Find Business Emails and Social Profiles from Any Website

![EmailReach Email and Social Scraping](https://images.emailreach.io/assets2/EmailReach%20Email%20And%20Social%20Scraping-87348927.jpg)

### You have a list of companies. You don't have their emails.

You know who you want to reach. The companies are there, the websites are there, but getting from a company website to an actual email address takes about 10 minutes per company when you do it by hand. Multiply that by 500 prospects and you've burned two full work weeks on copy-paste research before a single email goes out.

Your pipeline sits empty the whole time.

Most outreach doesn't fail because of a bad pitch. It fails because you never found the right person to send it to.

---

### Where the data comes from

[EmailReach](https://emailreach.io/) crawls websites and pulls every email address and social media profile it finds. This Apify actor runs that process automatically across any list of domains you give it, one at a time, in sequence, until it's done.

Sales teams use it for cold outreach. Recruiters use it to track down hiring managers. PR agencies use it to build journalist lists without spending a week at a keyboard. If your job involves finding business contact info at any real volume, manual lookup just doesn't work.

---

### How to run it

Add your domains to the `urls` field, one per line. Ten websites or a thousand, the setup is the same.

The actor calls the [EmailReach](https://emailreach.io/) API for each domain. EmailReach crawls the live site and extracts every email and social profile it finds, not from a cached database, but from the page as it exists right now. When it's done, results go into the Apify dataset. Download as CSV or JSON, pipe it to a CRM, or connect it to Google Sheets or Zapier.

---

### What you get for each domain

- Primary email (the most likely contact for the business)
- All email addresses found across the site
- First Facebook page URL, or null
- First LinkedIn company or personal profile, or null
- First Twitter/X profile, or null
- First Instagram profile, or null

---

### The cost of doing this manually

83 hours. That's what 500 companies looks like at 10 minutes each.

And that's before accounting for the copy-paste mistakes, the contacts who left six months ago, the emails buried on a page you didn't find. Manual research at this scale is slow and inaccurate. The teams that hit their outreach targets are usually the ones who stopped doing it manually first.

---

### What teams have done with it

#### Case study 1: SaaS company builds a 2,000-lead list in 30 minutes

A B2B SaaS startup wanted to reach out to e-commerce brands with under 50 employees. Their growth team compiled a list of 500 brand websites from a niche directory and ran them through this actor. Within 30 minutes, they had primary contact emails and LinkedIn pages for 1,847 of those brands. They loaded the results directly into their CRM and launched a cold email sequence the same day, booking 14 demos in the first week.

#### Case study 2: Recruitment agency enriches 3,000 candidate records

A recruitment firm had company names and websites for 3,000 companies in their ATS but no contact emails. They exported the domain list, ran it through the actor in bulk, and recovered verified emails for 2,600 records. They also got LinkedIn company pages, which let their team find hiring managers directly. Total time saved: roughly 40 hours of manual research.

#### Case study 3: PR firm builds a journalist database for a product launch

A PR agency needed direct contact emails for 200 tech journalists and bloggers before a product launch. They ran the publication websites through the actor and got email addresses and Twitter profiles for 178 of them. With Twitter handles in hand, they could cross-reference public bios to find the right beat reporter at each outlet.

#### Case study 4: Affiliate manager sources partnership leads at scale

An affiliate program manager needed to reach 1,000 niche bloggers. They scraped blog URLs from several directories and ran them through the actor overnight using Apify scheduling. Next morning: a spreadsheet with emails, LinkedIn profiles, and Instagram accounts ready to go.

---

### Use cases

- Sales prospecting: build targeted email lists from company websites, partner directories, and niche blogs without touching a spreadsheet manually
- CRM enrichment: run a bulk domain list through the extractor to fill in contact emails and social handles you're missing
- Recruitment outreach: get direct emails and LinkedIn profiles from company websites before you reach out
- Agency client research: pull contact info before writing a cold pitch, so you're not guessing who to address it to
- PR and media outreach: scrape editorial emails from news sites and blogs to build a journalist database you actually own
- Affiliate and partnership outreach: find business emails from niche directories to pitch collaboration

---

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `urls` | array of strings | required | One or more website URLs to extract contacts from. Add one per line. Works for single domains or bulk lists. |
| `maxItems` | integer | 100 | Maximum number of URLs to process per run. Max: 1000. |
| `requestTimeoutSecs` | integer | 90 | How long to wait for the EmailReach API per URL. EmailReach crawls the target site, so 60-90 seconds is usually right. |

#### Example input

```json
{
    "urls": [
        "https://bigibyte.com",
        "https://apify.com",
        "https://news.ycombinator.com"
    ],
    "maxItems": 100,
    "requestTimeoutSecs": 90
}
````

***

### Output

One record per URL goes into the Apify dataset. Here's what a result looks like:

```json
{
    "inputUrl": "https://bigibyte.com",
    "primaryEmail": "info@bigibyte.com",
    "emails": [
        "adnan@bigibyte.com",
        "contact@bigibyte.com",
        "info@bigibyte.com",
        "kawsar@bigibyte.com"
    ],
    "facebook": "https://facebook.com/bigibyte",
    "linkedin": "https://linkedin.com/company/bigibyte",
    "twitter": "https://twitter.com/bigibyte",
    "instagram": "https://instagram.com/thebigibyte",
    "scrapedAt": "2026-06-26T10:30:00.000Z"
}
```

Social fields come back as `null` if nothing was found. If an extraction fails for a URL, you'll see an `error` field on that record instead.

| Field | Type | Description |
|-------|------|-------------|
| `inputUrl` | string | The website URL submitted |
| `primaryEmail` | string | The primary contact email for the domain |
| `emails` | array | All email addresses found on the site |
| `facebook` | string | First Facebook URL found, or `null` |
| `linkedin` | string | First LinkedIn URL found, or `null` |
| `twitter` | string | First Twitter/X URL found, or `null` |
| `instagram` | string | First Instagram URL found, or `null` |
| `scrapedAt` | string | ISO 8601 timestamp |
| `error` | string | Error message if the extraction failed |

#### Sample results from the Apify platform

![EmailReach output sample 1 - email and social data in Apify dataset](https://i.imgur.com/qTdsOMN.png)

![EmailReach output sample 2 - multiple domain results in Apify dataset](https://i.imgur.com/RQOtShT.png)

***

### How it works

1. You submit a list of URLs.
2. For each one, the actor calls the [EmailReach](https://emailreach.io/) API, which crawls the site and pulls emails and social links.
3. The actor structures the response: primary email, full email list, and the first social profile for each platform.
4. Results go into the Apify dataset. Export as CSV or JSON, or connect them to another tool.

***

### FAQ

**Can I process hundreds of domains at once?**
Yes. Add them all to the `urls` field, set `maxItems` to whatever number you need, and run it. Duplicates are filtered out automatically.

**How long does each URL take?**
EmailReach crawls the live site before it responds, so expect somewhere between 10 and 60 seconds per domain. Larger sites take longer. Setting `requestTimeoutSecs` to 90 covers most cases.

**What if a site has no emails?**
You still get a record: `primaryEmail` will be null and `emails` will be empty. Easy to filter those out in whatever tool you're importing into.

**What if an extraction fails?**
The actor logs it, writes a record with the `error` field filled in, and moves to the next URL. A single failure won't stop the run.

**Can I run this on a schedule?**
Yes. Set up a schedule in Apify and point it at your list of domains. Weekly runs work well for keeping contact data from going stale.

**Can I push results to Google Sheets or a CRM?**
Apify integrations cover that. Google Sheets, Zapier, Make, Airtable, HubSpot all connect without custom code.

### Integrations

Connect this actor with other tools using [Apify integrations](https://apify.com/integrations). Works with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. You can also set up [webhooks](https://docs.apify.com/integrations/webhooks) to trigger actions downstream as soon as results come in.

# Actor input Schema

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

One or more website URLs or domains to extract emails and social profiles from. Add one URL per line. Example: https://bigibyte.com

## `maxItems` (type: `integer`):

Cap the number of URLs processed per run. Useful for controlling API usage and costs. Maximum: 1000.

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

How long to wait for the EmailReach API to respond per URL. EmailReach crawls the target site, so allow at least 60-90 seconds.

## Actor input object example

```json
{
  "urls": [
    "https://bigibyte.com",
    "https://apify.com"
  ],
  "maxItems": 100,
  "requestTimeoutSecs": 90
}
```

# 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://bigibyte.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/emailreach-email-and-social-scraping").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://bigibyte.com"] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/emailreach-email-and-social-scraping",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EmailReach Email And Social Scraping",
        "description": "Scrapes emails and social profiles from any website using emailreach.io, so sales teams, recruiters, and marketers can build contact lists without manual research.",
        "version": "0.0",
        "x-build-id": "DJB2AIX1BnQ1eVRoX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~emailreach-email-and-social-scraping/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-emailreach-email-and-social-scraping",
                "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/kawsar~emailreach-email-and-social-scraping/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-emailreach-email-and-social-scraping",
                "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/kawsar~emailreach-email-and-social-scraping/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-emailreach-email-and-social-scraping",
                "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",
                "required": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "Website URLs",
                        "type": "array",
                        "description": "One or more website URLs or domains to extract emails and social profiles from. Add one URL per line. Example: https://bigibyte.com",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum URLs to process",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap the number of URLs processed per run. Useful for controlling API usage and costs. Maximum: 1000.",
                        "default": 100
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 30,
                        "maximum": 300,
                        "type": "integer",
                        "description": "How long to wait for the EmailReach API to respond per URL. EmailReach crawls the target site, so allow at least 60-90 seconds.",
                        "default": 90
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
