# Email & Contact Lead Scraper — Domain to Leads (`sian.agency/email-contact-lead-scraper`) Actor

Turn any domain into B2B leads — emails, phone numbers and social profiles in one run. Batch up to 20 domains per call. 3 operations: website contacts (emails + phones + 9 social networks), bulk email search by domain, and social profile discovery. Clean JSON, pay per result.

- **URL**: https://apify.com/sian.agency/email-contact-lead-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Business, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 contact records

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

## Email & Contact Lead Scraper — Domain to Emails, Phones & Socials 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Property Skip Tracing](https://img.shields.io/badge/Store-Property%20Skip%20Tracing-1AE392)](https://apify.com/sian.agency/property-skip-tracing?fpr=sian) [![Instagram AI Transcript](https://img.shields.io/badge/Store-Instagram%20AI%20Transcript-E4405F)](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) [![Taobao Tmall Scraper](https://img.shields.io/badge/Store-Taobao%20Tmall%20Scraper-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian)

#### 🎉 Turn any domain into B2B leads — emails, phone numbers AND social profiles in ONE run, batch up to 20 domains at once
##### Built for sales teams, recruiters, agencies and growth marketers who need clean contact data fast — without stitching three scrapers together

---

### 📋 Overview

**One domain in, a full contact record out.** Email & Contact Lead Scraper takes a company domain (or a list of up to 20) and returns every public email address, phone number, and social profile it can find — all in a single structured dataset. It fuses three lead-generation tools that competitors usually sell separately.

**Why sales and growth teams choose us:**
- ✅ **3 tools in 1**: website contacts, bulk email search, and social-profile discovery — no need to buy and orchestrate three separate actors
- ⚡ **Batch up to 20 domains** per run: enrich a whole target-account list in a single call
- 🎯 **Emails + phones + 9 social networks** per domain: Facebook, Instagram, TikTok, Snapchat, X/Twitter, LinkedIn, GitHub, YouTube, Pinterest
- 💰 **Pay per result**: only charged for the contacts you actually receive — free tier to try it first, no credit card
- 💎 **Source-tracked data**: every email and phone comes with the URLs where it was discovered, so you can verify before you reach out
- ✨ **Clean JSON, ready for CRM**: curated camelCase fields, no messy raw blobs

---

### ✨ Features

- 📇 **Website Contacts**: feed one or many domains, get emails, phone numbers and social links for each
- 📧 **Bulk Email Search**: surface up to thousands of email addresses indexed against a domain
- 🔗 **Social Links Search**: discover a brand's official presence across 9 networks from just a name or domain
- 🚀 **Batch processing**: up to 20 domains in a single Website Contacts run
- 🔍 **Source attribution**: each contact ships with the source URLs it was found on
- 📊 **Two dataset views**: a complete "all fields" view and a curated decision-first view
- 🧹 **Auto-cleaned domains**: `https://`, `www.` and trailing paths are stripped automatically
- 📄 **HTML run report**: success/error counts, success rate and duration — written even on failure

---

### 🎬 Quick Start

Pick an operation, give it a domain or query, and run. Within seconds you have a contact-rich dataset you can export to CSV, Excel or JSON. No API keys, no account setup beyond Apify.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~email-contact-lead-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "scrapeContacts", "domains": ["stripe.com", "github.com"]}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your operation

Pick **Website Contacts** (domain → emails + phones + socials), **Email Search** (all emails on a domain), or **Social Links Search** (social profiles for a brand).

#### Step 2: Enter your target

Paste one or more domains (Website Contacts), or a search query plus domain (Email Search), or a brand name (Social Links Search).

#### Step 3: Run and export

Hit **Start**. Export the dataset as JSON, CSV or Excel, or pull it via the Apify API straight into your CRM.

**That's it! In under a minute, you'll have:**

- A clean contact record for every domain you submitted
- Emails, phone numbers and social profile links
- A ready-to-import dataset for outreach or enrichment

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | Yes | `scrapeContacts`, `searchEmails`, or `searchSocialLinks` |
| domains | array | For `scrapeContacts` | 1–20 company domains (e.g. `stripe.com`) |
| query | string | For `searchEmails` / `searchSocialLinks` | Keyword/role (Email Search) or brand name/domain (Social Links Search) |
| emailDomain | string | For `searchEmails` | Domain to search email addresses on |
| maxResults | integer | No | Cap on email rows returned (Email Search) |

**Website Contacts (batch — free):**

```json
{
  "operation": "scrapeContacts",
  "domains": ["stripe.com", "github.com", "vercel.com"]
}
```

**Email Search:**

```json
{
  "operation": "searchEmails",
  "query": "marketing",
  "emailDomain": "stripe.com",
  "maxResults": 100
}
```

**Social Links Search:**

```json
{
  "operation": "searchSocialLinks",
  "query": "nike.com"
}
```

***

### 📤 Output

Results are saved to the Apify dataset. **Website Contacts** returns one rich row per domain; **Email Search** returns one row per email; **Social Links Search** returns one row per profile URL.

| Field | Type | Description |
|-------|------|-------------|
| domain | string | The company domain (Website Contacts) |
| emails | array | All emails found for the domain |
| phoneNumbers | array | All phone numbers found |
| emailsDetailed | array | Each email + the source URLs it appeared on |
| facebook / instagram / linkedin / … | string | Social profile URL per network (9 total) |
| socialLinks | array | All non-empty social URLs for the domain |
| email | string | A single email (Email Search) |
| platform | string | Social network name (Social Links Search) |
| profileUrl | string | A single social profile URL (Social Links Search) |
| status | string | `success`, `error`, or `notice` |

**Example (Website Contacts row):**

```json
{
  "domain": "stripe.com",
  "emails": ["support@stripe.com", "sales@stripe.com", "dpo@stripe.com"],
  "emailCount": 8,
  "phoneNumbers": ["8889262289"],
  "phoneCount": 1,
  "linkedin": "https://www.linkedin.com/company/stripe",
  "twitter": "https://twitter.com/stripe",
  "github": "https://github.com/stripe",
  "socialLinks": ["https://www.facebook.com/StripeHQ", "https://www.instagram.com/stripehq"],
  "_operation": "scrapeContacts",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Batch B2B Lead Enrichment

**Sales ops teams enriching a target-account list before a campaign.**

**Input:** Up to 20 company domains
**Output:** Emails, phones and social profiles per domain
**Use:** Append the dataset to your CRM and start outreach the same day.

#### 2. Cold-Outreach List Building

**SDRs and recruiters who need direct ways to reach a company.**

**Input:** A domain (Website Contacts) or query + domain (Email Search)
**Output:** Role inboxes (sales@, support@) and up to thousands of addresses
**Use:** Build a verified send list for email and phone sequences.

#### 3. Social Footprint Mapping

**Brand and partnership researchers vetting a company's channels.**

**Input:** A brand name or domain (Social Links Search)
**Output:** Official profiles across 9 social networks
**Use:** Power competitive monitoring, influencer vetting and brand-safety checks.

#### 4. Data Cleansing & Contact Verification

**RevOps teams keeping a CRM current and deliverable.**

**Input:** Domains you already hold
**Output:** Refreshed emails, phones and social links
**Use:** Fill gaps, confirm channels still exist, and reduce bounce rates.

#### 5. Market & Competitor Research Feeds

**Analysts tracking how competitors expose contact channels over time.**

**Input:** A scheduled list of domains
**Output:** A structured contact feed
**Use:** Drive dashboards, lead-scoring models and go-to-market analysis.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/email-contact-lead-scraper').call({
  operation: 'scrapeContacts',
  domains: ['stripe.com', 'github.com'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/email-contact-lead-scraper').call(
    run_input={'operation': 'scrapeContacts', 'domains': ['stripe.com', 'github.com']}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~email-contact-lead-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "scrapeContacts", "domains": ["stripe.com"]}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: New row in your CRM or a scheduled run
2. **HTTP Request**: Call the actor API with a list of domains
3. **Process**: Map emails/phones/socials into your fields
4. **Action**: Enrich the record, notify a rep, or start a sequence

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Batch Website Contacts (2+ domains)** and **Social Links Search** — full feature access, same quality
- No credit card required
- Perfect for testing and small lists

#### PAID Tier (Production Ready)

- **Single-domain Website Contacts** and **bulk Email Search** unlocked
- Pay-per-result: only charged for the contacts and emails you receive
- One batch call can return contacts for 20 domains at once

💰 **Pay only for results** — undercut per-lead pricing with rich, source-tracked records.

🔗 [View current pricing](https://apify.com/sian.agency/email-contact-lead-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many domains can I process at once?**
A: Up to 20 domains per Website Contacts run. Batching 2+ domains is available on the free tier.

**Q: What's the difference between this and Property Skip Tracing?**
A: [Property Skip Tracing](https://apify.com/sian.agency/property-skip-tracing?fpr=sian) goes from a physical address to the people connected to it. This actor goes from a company **domain** to its public emails, phones and social profiles — built for B2B lead generation, not real-estate skip tracing.

**Q: Does each email come with proof of where it was found?**
A: Yes — the `emailsDetailed` and `phoneNumbersDetailed` fields include the source URLs where each contact was discovered.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset, or pull via the API.

**Q: How many emails can Email Search return?**
A: Up to roughly 5,000 addresses per domain. Use `maxResults` to cap the count and control cost.

**Q: Is this legal?**
A: It extracts only publicly available contact information. Your results may contain personal data subject to GDPR and similar laws — see the legal section below.

***

### 🐛 Troubleshooting

**No contacts returned for a domain**

- Confirm the domain is spelled correctly and is publicly reachable
- Some small or new sites simply have no indexed public contacts

**Email Search returned a "paid plan required" notice**

- Email Search and single-domain Website Contacts are paid features — upgrade your Apify plan, or batch 2+ domains / use Social Links Search on the free tier

**Rate-limit message in the log**

- The actor automatically backs off and retries; very large batches may take a little longer

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and only extract what a business has chosen to publish publicly on the open web — such as the contact emails, phone numbers and social profiles a company lists for inbound enquiries.

However, you should be aware that your results **will often contain personal data** (for example, a named person's work email). Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not process personal data unless you have a legitimate reason to do so — a lawful basis such as legitimate interest for B2B outreach, with the required notices and opt-outs. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

🎯 **Pick what to extract.** One operation per run.

- 📇 **Website Contacts** — give one or more domains, get back emails, phone numbers and social profiles for each. **Batch up to 20 domains** in a single run. This is the primary, highest-value mode.
- 📧 **Email Search** — give a search query and a domain, get back every email address found on that domain (up to thousands).
- 🔗 **Social Links Search** — give a brand name or domain, get back its social profile links across 9 networks.

## `domains` (type: `array`):

🌐 **For the Website Contacts operation.** One or more company domains to pull emails, phone numbers and social profiles from.

🚀 **Batch up to 20 domains** in a single run — paste them with the **Bulk edit** button (one per line) or click **+ Add**.

💡 **Format:** bare domains work best (`stripe.com`, `github.com`). Full URLs and `www.` prefixes are cleaned automatically.

🔐 **Free vs. paid:** batching **2 or more** domains is available on every plan. A **single-domain** lookup is a paid feature.

## `query` (type: `string`):

🔍 **For Email Search and Social Links Search.**

- 📧 **Email Search:** a keyword/role to look for on the domain (e.g. `marketing`, `sales`, `support`).
- 🔗 **Social Links Search:** a brand name or domain to find social profiles for (e.g. `nike.com`, `Notion`).

## `emailDomain` (type: `string`):

📧 **Required for the Email Search operation.** The domain to search for email addresses on (e.g. `stripe.com`). Returns every email the data source has indexed for that domain that matches your query.

🔐 **Paid feature** — one request can return thousands of addresses.

## `maxResults` (type: `integer`):

🔢 **Optional cap** on the number of email rows returned by Email Search. Leave empty to return everything the data source found (up to ~5,000). Use this to control cost on very large domains.

## Actor input object example

```json
{
  "operation": "scrapeContacts",
  "domains": [
    "stripe.com",
    "github.com"
  ],
  "query": "nike.com",
  "emailDomain": "stripe.com",
  "maxResults": 100
}
```

# Actor output Schema

## `output` (type: `string`):

Per-row results in curated camelCase. Website Contacts: one row per domain with emails, phoneNumbers and 9 social profile fields. Email Search: one row per email. Social Links Search: one row per profile URL (platform + profileUrl).

## `report` (type: `string`):

HTML report with run status, success/error row counts, success rate, upstream calls, duration, and the inputs used — written even on fatal crash.

# 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 = {
    "domains": [
        "stripe.com",
        "github.com"
    ],
    "query": "nike.com",
    "emailDomain": "stripe.com",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/email-contact-lead-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 = {
    "domains": [
        "stripe.com",
        "github.com",
    ],
    "query": "nike.com",
    "emailDomain": "stripe.com",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/email-contact-lead-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 '{
  "domains": [
    "stripe.com",
    "github.com"
  ],
  "query": "nike.com",
  "emailDomain": "stripe.com",
  "maxResults": 100
}' |
apify call sian.agency/email-contact-lead-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/email-contact-lead-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Email & Contact Lead Scraper — Domain to Leads",
        "description": "Turn any domain into B2B leads — emails, phone numbers and social profiles in one run. Batch up to 20 domains per call. 3 operations: website contacts (emails + phones + 9 social networks), bulk email search by domain, and social profile discovery. Clean JSON, pay per result.",
        "version": "1.0",
        "x-build-id": "oGJCVtpsQSh2bjKMU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~email-contact-lead-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-email-contact-lead-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/sian.agency~email-contact-lead-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-email-contact-lead-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/sian.agency~email-contact-lead-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-email-contact-lead-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",
                "required": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "🎯 Operation",
                        "enum": [
                            "scrapeContacts",
                            "searchEmails",
                            "searchSocialLinks"
                        ],
                        "type": "string",
                        "description": "🎯 **Pick what to extract.** One operation per run.\n\n- 📇 **Website Contacts** — give one or more domains, get back emails, phone numbers and social profiles for each. **Batch up to 20 domains** in a single run. This is the primary, highest-value mode.\n- 📧 **Email Search** — give a search query and a domain, get back every email address found on that domain (up to thousands).\n- 🔗 **Social Links Search** — give a brand name or domain, get back its social profile links across 9 networks.",
                        "default": "scrapeContacts"
                    },
                    "domains": {
                        "title": "🌐 Domains (Website Contacts)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🌐 **For the Website Contacts operation.** One or more company domains to pull emails, phone numbers and social profiles from.\n\n🚀 **Batch up to 20 domains** in a single run — paste them with the **Bulk edit** button (one per line) or click **+ Add**.\n\n💡 **Format:** bare domains work best (`stripe.com`, `github.com`). Full URLs and `www.` prefixes are cleaned automatically.\n\n🔐 **Free vs. paid:** batching **2 or more** domains is available on every plan. A **single-domain** lookup is a paid feature.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "query": {
                        "title": "🔍 Search Query",
                        "type": "string",
                        "description": "🔍 **For Email Search and Social Links Search.**\n\n- 📧 **Email Search:** a keyword/role to look for on the domain (e.g. `marketing`, `sales`, `support`).\n- 🔗 **Social Links Search:** a brand name or domain to find social profiles for (e.g. `nike.com`, `Notion`)."
                    },
                    "emailDomain": {
                        "title": "📧 Email Domain (Email Search)",
                        "type": "string",
                        "description": "📧 **Required for the Email Search operation.** The domain to search for email addresses on (e.g. `stripe.com`). Returns every email the data source has indexed for that domain that matches your query.\n\n🔐 **Paid feature** — one request can return thousands of addresses."
                    },
                    "maxResults": {
                        "title": "🔢 Max Results (Email Search)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **Optional cap** on the number of email rows returned by Email Search. Leave empty to return everything the data source found (up to ~5,000). Use this to control cost on very large domains."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
