# Zillow Email Scraper (`email_scraper/zillow-email-scraper`) Actor

Zillow Email Scraper extracts publicly visible email addresses from Zillow search results using targeted keywords, locations, and custom email domains. Build structured Zillow lead lists with emails, titles, descriptions, URLs, and keyword data for lead research and contact discovery.

- **URL**: https://apify.com/email\_scraper/zillow-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 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.
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

### 🔹 Zillow Email Scraper – Overview

**Zillow Email Scraper** is an Apify Actor designed to discover publicly visible email addresses associated with Zillow search results. It takes search keywords, optional location filters, email domain suffixes, an email target, and exclusion terms, then returns structured Zillow lead data containing the matching email address and related search-result information.

This **Zillow Email Scraper** is useful for lead research, contact discovery, market research, prospect list building, business intelligence, and other workflows that rely on publicly available contact information. Instead of manually searching Zillow-related results one by one, you can provide several targeted keywords and let the Actor process the search combinations automatically.

The easiest workflow is simple: enter one or more keywords, optionally specify a city or country, choose the email domains you are interested in, set a maximum email target, and run the Actor. The resulting records are pushed into an Apify dataset in structured form.

> **💡 Zillow Email Scraper at a glance**
>
> - Search Zillow-related results using targeted keywords
> - Extract publicly visible email addresses matching selected domains
> - Narrow searches by country, state, or city
> - Set an email target for each keyword + domain combination
> - Exclude unwanted profiles using words or phrases
> - Receive structured lead records in an Apify dataset
> - Automatically remove duplicate email addresses during a run

### 🔹 Zillow Email Scraper – Key Features

The **Zillow Email Scraper** combines targeted search controls with structured lead extraction. Its inputs are designed to give you control over both search relevance and the type of email addresses you want to collect.

#### 🔍 Targeted keyword search

Use multiple keywords or queries to search for different topics, professions, services, niches, or business-related terms. More specific keywords can help narrow the results toward relevant contacts.

For example, instead of entering only `fitness`, you can use:

- `Fitness Coach`
- `Fitness Trainer`
- `Fitness Influencer`
- `Online Fitness Coach`

This approach lets the **Zillow Email Scraper** test multiple search intents rather than relying on one broad phrase.

#### 📍 Location-based targeting

The optional location field lets you narrow the search geographically. You can enter a city, state, or country such as `New York`, `California`, or `United States`.

Leaving the location empty keeps the search broader and allows the **Zillow Email Scraper** to search without a geographic restriction.

#### 📧 Custom email domains

You can specify which email domain suffixes the Actor should look for, such as:

- `@gmail.com`
- `@yahoo.com`
- `@outlook.com`
- `@hotmail.com`
- `@icloud.com`
- A business or custom domain

This is useful when your lead research specifically requires certain email providers or company domains.

#### 🎯 Per-combination email targets

The `maxEmails` setting controls how many new email addresses the Actor attempts to collect for each keyword + domain combination.

For example, with 3 keywords, 2 domains, and a target of 20, the Actor processes 6 combinations independently and can aim for up to 20 emails for each combination, subject to available public results and duplicate filtering.

> **📌 Important:** The target is not a guarantee of results. The Actor can only collect email addresses that are publicly discoverable in the available search results and that match your selected criteria.

#### 🚫 Exclusion filtering

Use `excludeWords` to skip search-result descriptions containing terms you do not want. For example:

- `crypto`
- `onlyfans`
- `gambling`

Single words are matched as whole words, while multi-word phrases are matched as phrases. Matching is case-insensitive.

#### 🔁 Duplicate prevention

The **Zillow Email Scraper** keeps track of email addresses already discovered during the run. This helps prevent the same email address from being returned repeatedly when multiple keywords or email domains lead to overlapping search results.

### 🔹 Zillow Email Scraper – What Data Can You Extract?

The primary output of the **Zillow Email Scraper** is a structured collection of lead records. Each qualifying email is returned together with contextual information from the related result.

The Actor produces these fields:

| Field         | Description                                                     |
| ------------- | --------------------------------------------------------------- |
| `network`     | Identifies the source network as Zillow.com                     |
| `keyword`     | The keyword that produced the search result                     |
| `title`       | Title of the related search result                              |
| `description` | Search-result description or snippet associated with the result |
| `url`         | URL associated with the result                                  |
| `email`       | Publicly visible email address matching the selected domain     |

> **📦 Output / Data Fields**
>
> - **Email:** The extracted contact address
> - **Keyword:** The search term used
> - **Title:** Result title
> - **Description:** Supporting search-result text
> - **URL:** Related result link
> - **Network:** Zillow.com

The `email` field is the primary data point for contact discovery, while the remaining fields provide context that can help with validation, segmentation, and downstream research.

### 🔹 Zillow Email Scraper – How to Use It

Using the **Zillow Email Scraper** requires only a few straightforward steps.

#### 🛠️ Step 1: Enter keywords

Add one or more relevant search terms in the `keywords` input.

A broad keyword can produce broader results, while more specific combinations can improve targeting. Using several related keywords is often useful when researching a particular niche.

#### 📍 Step 2: Add a location when needed

Enter a city, state, or country in the `location` field when geographic targeting matters.

For a wider search, leave this field blank.

#### 📧 Step 3: Select email domains

Use `customDomains` to define the domains you want to identify.

For example:

```json
["@gmail.com", "@yahoo.com", "@outlook.com"]
```

You can also include a business-specific domain when your research requires company email addresses.

#### 🎯 Step 4: Set the email target

Use `maxEmails` to define the desired maximum for each keyword + domain combination.

The accepted input range is 1 to 10,000. However, free users are subject to the Actor's free-use result limitation described in the pricing section.

#### 🚫 Step 5: Add exclusions

Use `excludeWords` when certain profile or result descriptions should be ignored.

Example:

```json
["crypto", "onlyfans"]
```

#### ▶️ Step 6: Run the Actor

Start the Actor from Apify. The **Zillow Email Scraper** processes the configured keyword and domain combinations, extracts matching publicly visible emails, removes duplicates, and writes the results to the dataset.

> **⚡ Practical tip:** Wide searches can take longer than narrow searches. For better targeting, begin with several relevant keywords and a reasonable location filter, then broaden the search when results are too limited.

### 🔹 How to Scrape Zillow Emails by Keyword and Domain

The **Zillow Email Scraper** is built around keyword + domain targeting. Each selected keyword is evaluated with each selected email domain.

For example:

```json
{
  "keywords": [
    "real estate",
    "property management",
    "real estate agent"
  ],
  "location": "New York",
  "customDomains": [
    "@gmail.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto"
  ]
}
```

This configuration creates six keyword + domain combinations:

- `real estate` + `@gmail.com`
- `real estate` + `@outlook.com`
- `property management` + `@gmail.com`
- `property management` + `@outlook.com`
- `real estate agent` + `@gmail.com`
- `real estate agent` + `@outlook.com`

The Actor works through these combinations independently rather than treating `maxEmails` as one shared total across every keyword and domain.

### 🔹 Can You Target a Specific City or Country?

Yes. The **Zillow Email Scraper** supports an optional `location` input that can contain a country, state, or city.

Examples include:

- `New York`
- `Los Angeles`
- `California`
- `United States`

Location targeting can be valuable when your research focuses on a specific regional market. A blank location keeps the search unrestricted geographically.

Keep in mind that a highly specific location combined with highly specific keywords can reduce the number of available public results.

### 🔹 Can You Search for Specific Email Providers?

Yes. The **Zillow Email Scraper** supports custom email domain suffixes through `customDomains`.

This allows you to focus on common providers or selected business domains. Domain targeting is especially useful when your workflow requires a particular type of contact address.

Example:

```json
{
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ]
}
```

The Actor then looks for email addresses matching the configured domain patterns.

### 🔹 Zillow Email Scraper – Use Cases

The **Zillow Email Scraper** can support several practical research and lead-generation workflows.

#### 💼 Lead research

Businesses can use Zillow-related contact discovery to build prospect research datasets based on selected keywords and locations.

#### 🏢 Local market research

A location filter combined with niche-specific search terms can help researchers explore contacts associated with particular regional markets.

#### 📈 Prospect list building

Marketing teams can collect structured contact records for later review, segmentation, and qualification.

#### 🔎 Contact discovery

Researchers can search for publicly visible email addresses that match specific email providers or domains.

#### 🧩 Multi-keyword research

The Actor is useful when one topic can be described with multiple related terms. Running several keywords can increase search coverage compared with using one generic query.

#### 📊 Competitive and industry research

Structured title, description, URL, keyword, and email data can help organize broader market research workflows.

> **🎯 Best results generally come from precise inputs:** combine several closely related keywords with an appropriate location and multiple relevant email domains rather than relying on one extremely broad keyword.

### 🔹 Input

The **Zillow Email Scraper** accepts the following inputs:

| Input           | Type    | Required | Purpose                                                     |
| --------------- | ------- | -------- | ----------------------------------------------------------- |
| `keywords`      | Array   | Yes      | Search keywords or queries                                  |
| `location`      | String  | No       | Country, state, or city filter                              |
| `customDomains` | Array   | No       | Email domain suffixes to search for                         |
| `maxEmails`     | Integer | No       | Maximum target per keyword + domain combination             |
| `excludeWords`  | Array   | No       | Words or phrases that cause matching snippets to be skipped |

#### 🔍 `keywords`

A list of search terms or queries. The default example includes `skincare` and `cosmetics`.

#### 📍 `location`

An optional geographic filter. It is blank by default.

#### 📧 `customDomains`

A list of email suffixes. The default configuration uses `@gmail.com`.

#### 🎯 `maxEmails`

An integer from 1 to 10,000. It controls the target number of emails for each keyword + domain combination.

#### 🚫 `excludeWords`

Optional words or phrases used to filter out unwanted result descriptions.

### 🔹 Output

A successful run stores structured records in the Apify dataset.

Example output:

```json
{
  "network": "Zillow.com",
  "keyword": "skincare",
  "title": "Example Zillow Result",
  "description": "Example publicly visible result description with contact example@gmail.com",
  "url": "https://www.zillow.com/example",
  "email": "example@gmail.com"
}
```

The exact returned records depend on what publicly visible matching information is available during the run.

> **📌 Output note:** A requested email count is a collection target, not an assurance that the target will be reached. Search availability, keyword specificity, location filters, domain selection, duplicate addresses, and exclusion rules can all affect the final dataset size.

### 🔹 Pricing

The Actor configuration and runtime behavior verify a free-use limitation of **100 emails**. When a free run reaches that limit, the Actor applies the 100-email ceiling even when a higher `maxEmails` value is requested.

For paid usage, the Actor does not apply that 100-email free-tier ceiling.

The exact monetary price for running the Actor is not specified in the provided Actor configuration, so this README does not invent a dollar amount. Check the current Apify Store pricing displayed for the Actor before starting a paid run.

> **💰 Pricing facts verified from the Actor**
>
> - Free usage is limited to 100 emails.
> - Paid usage removes that specific 100-email free-tier ceiling.
> - `maxEmails` supports values from 1 to 10,000.
> - Exact monetary pricing should be checked on the current Apify Store Actor page.

### 🔹 Tips and Best Practices

For stronger results with the **Zillow Email Scraper**, focus on search quality rather than simply increasing the numeric target.

- Use several specific keywords instead of one very broad term.
- Combine professional roles, services, and niche-related phrases.
- Add a location when you need regional targeting.
- Include several relevant email domains when appropriate.
- Use exclusion words to remove unwanted categories.
- Start with moderate targets and broaden the search when results are sparse.
- Leave the location empty when you want wider geographic coverage.
- Expect lower results when the keyword and location combination is extremely narrow.

For example, researching `Fitness Coach` may be more targeted than researching only `Fitness`. You can expand coverage further with related phrases such as `Fitness Trainer`, `Online Fitness Coach`, and `Fitness Influencer`.

### 🔹 Frequently Asked Questions

#### ❓ What is Zillow Email Scraper?

**Zillow Email Scraper** is an Apify Actor that searches Zillow-related results using your chosen keywords and extracts publicly visible email addresses that match your selected domain suffixes.

#### ❓ How do I use Zillow Email Scraper?

Enter keywords, optionally provide a location, select email domains, set `maxEmails`, and add exclusion terms when needed. Then run the Actor and review the structured results in the dataset.

#### ❓ What data does Zillow Email Scraper return?

The Actor returns `network`, `keyword`, `title`, `description`, `url`, and `email` fields. The email address is the primary extracted contact data, while the other fields provide supporting context.

#### ❓ Can Zillow Email Scraper search multiple keywords?

Yes. The `keywords` input accepts multiple search terms, allowing you to cover related queries within the same run.

#### ❓ Can Zillow Email Scraper search by city?

Yes. The optional `location` input supports geographic targeting by city, state, or country.

#### ❓ Can I choose Gmail or Yahoo emails only?

Yes. Use `customDomains` to specify the email suffixes you want to target, such as `@gmail.com` or `@yahoo.com`.

#### ❓ How does maxEmails work?

`maxEmails` is applied independently to each keyword + domain combination. The final dataset may contain fewer records when matching public results are limited.

#### ❓ Why did my Zillow email results come back lower than expected?

A narrow keyword, restrictive location, limited email-domain selection, duplicate addresses, exclusions, or limited publicly visible information can all reduce results. Try broader related keywords, additional domains, or a wider location scope.

#### ❓ Can I exclude unwanted categories?

Yes. Add words or phrases to `excludeWords`. When a result description contains a configured exclusion term, that result is skipped.

#### ❓ Does Zillow Email Scraper guarantee a specific number of emails?

No. `maxEmails` is a target or upper collection limit, not a guarantee. The Actor depends on publicly discoverable matching information.

#### ❓ Can I search globally?

Yes. Leave `location` empty to search without a geographic filter.

### 🔹 Support

For questions, customization requests, improvements, or bespoke scraper development related to the **Zillow Email Scraper**, contact the developer directly.

- contact me by email : <alphascraper69@gmail.com>

# Actor input Schema

## `keywords` (type: `array`):

A list of keywords or queries to search for.

## `location` (type: `string`):

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

## `customDomains` (type: `array`):

List of custom email domains

## `maxEmails` (type: `integer`):

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "skincare",
    "cosmetics"
  ],
  "location": "New york",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 10,
  "excludeWords": []
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "skincare",
        "cosmetics"
    ],
    "location": "New york",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/zillow-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 = {
    "keywords": [
        "skincare",
        "cosmetics",
    ],
    "location": "New york",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/zillow-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 '{
  "keywords": [
    "skincare",
    "cosmetics"
  ],
  "location": "New york",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/zillow-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/zillow-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/LGQDsanJ8aNV9WrCo/builds/O5uUN7XEKA4Ssa9Ec/openapi.json
