# Zillow Contact Extractor - Search Engines with B2B/B2C Filter (`code-beat/zillow-contact-extractor-smart-and-scalable`) Actor

🔍 Zillow Contact Extractor finds real estate emails across multiple search engines with B2B/B2C filtering. 🌍 Region and country targeting, protected-address decoding and full-run dedup. 🏘️ Ideal for realtor outreach & proptech sales.

- **URL**: https://apify.com/code-beat/zillow-contact-extractor-smart-and-scalable.md
- **Developed by:** [Code Beat](https://apify.com/code-beat) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/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

**Zillow Email Scraper** is a smart, scalable Apify actor for public web data extraction from Zillow-related profiles and listings. It helps marketers, recruiters, and data teams find Zillow contact information faster, turning manual research into structured Zillow leads extraction, real estate prospecting, and real estate lead enrichment at scale. 🚀

### What is Zillow Email Scraper? 🔍

**Zillow Email Scraper** is an automated web scraping tool built to collect publicly available contact details and profile information based on your search terms. It is designed for real estate email scraping workflows where speed, scale, and clean output matter. Instead of spending hours on manual research, you can use Zillow Email Scraper to gather relevant Zillow contact information and build targeted lead lists for outreach, analysis, or enrichment. 📊

This actor is especially useful for marketers, sales teams, researchers, and analysts who need property listing data extraction without repetitive manual work. By combining keywords, a source region, and email limits, Zillow Email Scraper helps you discover relevant public records efficiently while keeping results organized in a dataset that is easy to export and review.

### What Data Does Zillow Email Scraper Collect? 📊

Zillow Email Scraper returns structured records with the fields defined in the dataset schema. The output includes the keyword used to find the result, the title and description, the profile URL, email details, and country. This makes it useful for real estate database scraping, property agent emails research, and housing market data collection. 🏡

| Data Category | Fields Extracted | Description |
|---|---|---|
| Contact | `email`, `email_domain`, `email_type` | Public email details and the selected email type |
| Identity | `title` | Name or title associated with the result |
| Context | `description` | Supporting public text that helps explain the result |
| Discovery | `keyword` | The search term that surfaced the record |
| Navigation | `url` | Direct link to the result page |
| Source | `scrape_from`, `country` | Where the result was found and the selected country |

### What Do Results from Zillow Email Scraper Look Like? 👀

Each result is saved as a structured JSON record in your Apify dataset. Here’s a realistic example of what a Zillow Email Scraper output item can look like:

```json
{
  "keyword": "real estate agent",
  "title": "Megan Carter",
  "url": "https://www.zillow.com/profile/megan-carter/",
  "description": "Licensed real estate agent helping clients buy and sell homes in Austin, Texas.",
  "email": "megan.carter@carterrealty.com",
  "email_domain": "carterrealty.com",
  "email_type": "B2B",
  "scrape_from": "public profile",
  "country": "United States"
}
```

After the run, you can export the dataset in JSON or CSV format from Apify Console.

#### Core Features: Zillow Email Scraper ⚡

| Feature | Benefit |
|---|---|
| ✅ **Keyword-Driven Targeting** | Uses your keywords to find relevant Zillow profiles and contacts |
| ✅ **Country Selection** | Targets results by the selected country |
| ✅ **Email Type Filter** | Supports B2C or B2B lead generation workflows |
| ✅ **Result Cap Control** | Lets you limit output with `maxEmails` |
| ✅ **Built-In Reliability** | Includes retries and fallbacks for resilience |
| ✅ **Structured Dataset Output** | Saves clean records ready for analysis or CRM import |
| ✅ **Public Data Focus** | Scrapes data from publicly available sources only |
| ✅ **Scalable Runs** | Built for larger Zillow leads extraction projects |

### Getting Started with Zillow Email Scraper 🚀

1. **Open Apify Console** — Sign in to your Apify account and open the actor.
2. **Review the Input Form** — Configure your search terms, country, source region, email type, and result limit.
3. **Add Search Terms** — Enter the keywords you want to use for real estate prospecting.
4. **Choose the Country** — Select the target country for your run.
5. **Set Email Type and Limit** — Pick B2C or B2B and set `maxEmails` to control the number of results.
6. **Start the Run** — Launch the actor and monitor progress in the log.
7. **Open the Dataset** — Review your scraped results in the output dataset.
8. **Export Your Data** — Download the results for CRM use, research, or outreach.

No coding required. It’s a practical Zillow automation tool for fast, scalable contact discovery. ⚙️

#### Ways to Use Zillow Email Scraper 💡

- 🎯 **Real Estate Prospecting** — Build targeted contact lists for outreach campaigns
- 📣 **Lead Generation Tool** — Collect public contacts for sales and marketing follow-up
- 🔬 **Market Research** — Study housing market data and public profile patterns
- 📊 **CRM Enrichment** — Append contact fields to your existing lead database
- 🧩 **Real Estate Lead Enrichment** — Add public email data to improve segmentation
- ⚙️ **Automated Web Scraping** — Streamline recurring public data collection workflows

#### Input Parameters — Zillow Email Scraper

```json
{
  "country": "United States",
  "emailType": "B2C",
  "engine": "legacy",
  "maxEmails": 100,
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ],
  "sourceRegion": "All"
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `country` | String | Yes | `United States` | Selects the country to target. |
| `emailType` | String | Yes | `B2C` | Chooses whether the run is focused on B2C or B2B results. |
| `engine` | String | No | `legacy` | Selects the scraping engine. |
| `maxEmails` | Integer | Yes | `100` | Sets the maximum number of emails to collect. |
| `searchTerms` | Array | Yes | `["fitness","gym","workout"]` | Lists the search terms used to find Zillow profiles. |
| `sourceRegion` | String | Yes | `All` | Selects the regional index to target. |

#### Output Parameters — Zillow Email Scraper

```json
{
  "keyword": "real estate agent",
  "title": "Megan Carter",
  "url": "https://www.zillow.com/profile/megan-carter/",
  "description": "Licensed real estate agent helping clients buy and sell homes in Austin, Texas.",
  "email": "megan.carter@carterrealty.com",
  "email_domain": "carterrealty.com",
  "email_type": "B2B",
  "scrape_from": "public profile",
  "country": "United States"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The search term that produced the result. |
| `title` | Title | text | The main title or name shown for the result. |
| `url` | URL | link | Direct link to the result page. |
| `description` | Description | text | Public supporting text associated with the result. |
| `email` | Email | text | The extracted email address. |
| `email_domain` | Email Domain | text | The domain part of the extracted email address. |
| `email_type` | Email Type | text | The email type returned in the dataset. |
| `scrape_from` | Scrape From | text | The source context where the result was found. |
| `country` | Country | text | The country selected for the run. |

### Why Choose This Zillow Email Scraper? 🏆

If you need a Zillow email finder that is built for practical lead generation, this actor gives you a clean workflow from search terms to exportable results. It combines structured output, proxy support, configurable limits, and public-data collection in one place. That makes it a strong choice for teams comparing Zillow automation tools, real estate database scraping options, or property listing data extraction solutions. 🙌

It’s also designed to be efficient for mid-level users who want results without a steep learning curve. You can cap volume with `maxEmails`, choose your country and email type, and get a dataset that is ready for analysis. If you need help, contact <codebeatapi@gmail.com>.

### How Many Results Can You Scrape? 📈

You can control the maximum volume with `maxEmails`, which supports values from 1 to 10000. The number of actual results depends on how many public Zillow-related profiles match your keywords and filters. For larger real estate email scraping jobs, the actor is built to handle scalable runs while still saving results into the dataset as they are found. 📦

### Legal Guidelines for Scraping Zillow ⚖️

This actor collects only publicly available data. It does not require logins or access private pages, and it does not retrieve hidden or restricted information. Users are responsible for making sure their use of Zillow Email Scraper complies with applicable laws, including privacy and spam regulations, as well as Zillow’s terms and policies. Use extracted data only for legitimate business or research purposes. Data removal requests: <codebeatapi@gmail.com>.

### FAQ — Zillow Email Scraper ❓

#### How does Zillow Email Scraper find contacts?

Zillow Email Scraper uses your search terms and filters to locate relevant public sources, then collects public contact details and profile context into a structured dataset.

#### What Zillow profile types can I scrape?

You can scrape public Zillow-related profiles and pages that include visible contact information or profile details. Private or restricted content is not part of the output.

#### Why use Zillow Email Scraper for real estate prospecting?

It saves time by automating real estate prospecting, helping you find public Zillow contact information faster than manual research.

#### How much does Zillow Email Scraper cost?

Cost depends on your Apify usage and the size of the run. You can keep spending under control by setting `maxEmails` before you start.

#### How does Zillow Email Scraper help my business?

It turns public Zillow data into a clean lead list that you can use for outreach, CRM enrichment, market research, and real estate lead enrichment.

#### What challenges should I expect when using Zillow Email Scraper?

Not every public profile includes an email address, so yield will vary by keyword and audience. Broader keywords often return more results than very narrow ones.

#### How do I choose a high-performing Zillow Email Scraper?

Look for structured dataset output, configurable limits, country targeting, and reliable public-data collection. Zillow Email Scraper includes these core capabilities.

### Conclusion 🏁

**Zillow Email Scraper** gives you a fast, practical way to collect public contact data for lead generation, research, and outreach. If you want scalable Zillow leads extraction with clean output and simple controls, this actor is ready to help you get started. 🚀

### 🆘 Support & Feedback

Have a question or feature request for Zillow Email Scraper?

Contact <codebeatapi@gmail.com> for support, feedback, or data removal requests.

### Country & Time Targeting

Both filters are applied to the Google query itself, so they shape which pages
the dork is answered from rather than filtering after the fact.

**Target Country** - runs the search as if from that country (`gl`). Turn on
**Strict country filter** to additionally restrict results to pages Google
attributes to it (`cr=countryXX`); that is much tighter and returns noticeably
fewer results. Leave the country on *Global (no country filter)* for worldwide
results.

**Result Language** - restricts results to a single language (`hl` + `lr`).

**Time Range** - limits results to a publication window: past hour, 24 hours,
week, month, year, or an explicit *Custom range* using **Custom range: from** /
**to** in `YYYY-MM-DD` form. A page Google indexed last week is far more likely
to carry a live mailbox than one it last saw five years ago.

Selecting *Custom range* without either date falls back to no time filter rather
than searching all of time by accident.

# Actor input Schema

## `country` (type: `string`):

Ask Google to answer as if searching from this country. Leave on "Global (no country filter)" for worldwide results.

## `emailType` (type: `string`):

Choose one — B2C or B2B.

## `engine` (type: `string`):

Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE\_SERP proxy with traditional selectors - more reliable but slower and more expensive.

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

Enter the maximum number of emails to collect.

## `verificationMode` (type: `string`):

Quick Check (default) validates syntax and MX records only - fast, no added latency. Deep Check additionally flags disposable-domain addresses and checks each domain against a public spam blocklist (Spamhaus DBL). Off skips validation entirely.

## `minQualityScore` (type: `number`):

Drop any email whose quality score (0.0-1.0) falls below this. Leave at 0 for no filter.

## `requireMxValid` (type: `boolean`):

Drop any email whose domain has no valid mail server (MX record).

## `searchTerms` (type: `array`):

List of queries to find Zillow profiles.

## `sourceRegion` (type: `string`):

Select the regional index to target.

## `strictCountry` (type: `boolean`):

Restrict results to pages Google attributes to the target country (cr=countryXX), instead of only preferring them. Much tighter targeting, noticeably fewer results.

## `searchLanguage` (type: `string`):

Restrict results to one language. Leave on "Any language" for no filter.

## `timeRange` (type: `string`):

Only return pages Google indexed within this window. Recent pages are more likely to hold a mailbox that still works.

## `customDateFrom` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## `customDateTo` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## Actor input object example

```json
{
  "country": "Global (no country filter)",
  "emailType": "B2C",
  "engine": "legacy",
  "maxEmails": 100,
  "verificationMode": "Quick Check",
  "minQualityScore": 0,
  "requireMxValid": false,
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ],
  "sourceRegion": "All",
  "strictCountry": false,
  "searchLanguage": "",
  "timeRange": "Any time",
  "customDateFrom": "",
  "customDateTo": ""
}
```

# 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 = {
    "searchTerms": [
        "fitness",
        "gym",
        "workout"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/zillow-contact-extractor-smart-and-scalable").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 = { "searchTerms": [
        "fitness",
        "gym",
        "workout",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("code-beat/zillow-contact-extractor-smart-and-scalable").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 '{
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ]
}' |
apify call code-beat/zillow-contact-extractor-smart-and-scalable --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,code-beat/zillow-contact-extractor-smart-and-scalable"
        }
    }
}

```

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/XeUZfjoZ0drpqgGmu/builds/gnoAQIcAbOoswoPK4/openapi.json
