# Zillow Phone Number Scraper - Country Filter & Carrier Data (`code-beat/zillow-phone-number-scraper-fast-and-reliable`) Actor

📞 Zillow Phone Number Scraper collects agent, broker and listing numbers in bulk with country filtering, line-type detection & carrier lookup. ✅ Invalid numbers dropped. 🔑 Great for real estate cold calling & proptech sales.

- **URL**: https://apify.com/code-beat/zillow-phone-number-scraper-fast-and-reliable.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 Phone Number Scraper

**Zillow Phone Number Scraper** helps you quickly extract publicly available phone numbers from Zillow profiles, bios, and posts using keywords and country targeting. It’s a practical Zillow contact scraper for marketers, analysts, and researchers who want faster Zillow lead generation, cleaner Zillow data extraction, and less manual prospecting work. 📞🏡

### What Does Zillow Phone Number Scraper Do? 🤖

Zillow Phone Number Scraper scans public Zillow content using the keywords and country you provide, then collects matching profile details and phone numbers into a structured dataset. You can also optionally filter by location to narrow results further. During a run, it scrapes, filters, and exports fields like keyword, title, description, URL, phone number, country, and dial code. This makes it a useful Zillow lead scraper and Zillow phone extractor when you need real estate contact information at scale instead of manually checking profiles one by one.

### What Can Zillow Phone Number Scraper Extract? 📊

This actor returns a clean set of fields designed for Zillow contact information and Zillow data extraction workflows. Each result includes the keyword that surfaced it, profile context, and the phone number details needed for follow-up or analysis. It’s especially useful for anyone looking for a Zillow real estate scraper or Zillow prospecting tool with structured output.

| Data Type | Field Name | Description |
|---|---|---|
| Discovery | `keyword` | The keyword that matched the result |
| Identity | `title` | The title or profile name shown for the result |
| Context | `description` | Supporting text from the profile, bio, or post content |
| Navigation | `url` | Direct link to the Zillow page |
| Contact | `phone_number` | Phone number found in the public content |
| Geography | `country` | Selected target country for the run |
| Dialing Info | `dial_code` | Dial code for the selected country |

#### Key Features of Zillow Phone Number Scraper ⚡

- ✅ **Keyword-Driven Search:** Use your own keywords to find relevant Zillow profiles and posts that match your lead criteria.
- 🌍 **Location Targeting:** Narrow results by location to support local Zillow lead scraper workflows.
- 📞 **Country Selection:** Choose the target country so phone number extraction matches your intended market.
- 🔄 **Bulk Extraction:** Process multiple keywords in one run for broader Zillow property data scraper coverage.
- 💾 **Structured Dataset Output:** Every record is saved in a clean table format that’s easy to export and analyze.
- ⏱️ **Configurable Result Limit:** Set a maximum number of phone numbers to control run length.
- 🛡️ **Built-In Proxy Support:** Uses built-in proxy support for more reliable public web data scraping.
- ♻️ **Resumable Runs:** Progress is saved so long jobs can continue more smoothly if interrupted.

### How to Use Zillow Phone Number Scraper 🚀

1. **Open the Actor** — Find Zillow Phone Number Scraper in the Apify Store.
2. **Go to Input** — Open the input form in the Apify Console.
3. **Add Keywords** — Enter one or more keywords such as marketing or founder.
4. **Choose a Location** — Optionally filter by city, state, or other location.
5. **Select a Country** — Pick the target country for phone number extraction.
6. **Set the Limit** — Adjust the maximum number of phone numbers you want returned.
7. **Run the Actor** — Start the job and monitor the logs as it processes results.
8. **Download the Dataset** — Export the scraped phone numbers from the Dataset tab.

No coding required. 👌

### Zillow Phone Number Scraper Output Format 📦

The actor saves results to an Apify dataset in structured JSON format, ready for export, reporting, or further processing.

#### Input Example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "location": "",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

#### Output Example

```json
[
  {
    "keyword": "marketing",
    "title": "Sarah Thompson",
    "description": "Real estate professional sharing local market updates and contact details.",
    "url": "https://www.zillow.com/profile/sarahthompson",
    "phone_number": "+44 7700 900123",
    "country": "United Kingdom",
    "dial_code": "+44"
  }
]
```

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The keyword used to find the record |
| `title` | Title | text | The title or name associated with the Zillow result |
| `description` | Description | text | The visible text captured from the public page |
| `url` | Url | link | Direct link to the Zillow page |
| `phone_number` | Phone Number | text | The extracted phone number |
| `country` | Country | text | The selected country for the run |
| `dial_code` | Dial Code | text | The country dial code used for targeting |

### 🎯 Use Cases of Zillow Phone Number Scraper

- **Zillow Lead Generation:** Build targeted contact lists from public Zillow profiles for outreach and follow-up.
- **Real Estate Lead Scraper:** Collect public phone numbers for market research and prospecting workflows.
- **Zillow Agent Scraper:** Identify agents or profile owners with public contact details for business development.
- **Zillow Listing Contact Scraper:** Pull contact details from listing-related public pages to support lead qualification.
- **Zillow Property Data Scraper:** Enrich property or profile research with contextual text and phone number data.

### How Much Will Zillow Phone Number Scraper Cost You? 💰

Pricing depends on your Apify setup and how much data you choose to collect. This actor lets you control volume with the `maxPhoneNumbers` setting, so you can cap the run and keep spending predictable. New Apify users may also have free credits available. For larger Zillow web scraper jobs, use the limit to balance coverage and cost, especially when running multiple keywords or broader searches.

### Is It Legal to Scrape Zillow? ⚖️

This actor collects only publicly available data from Zillow profiles, bios, and posts. It does not access private accounts or password-protected content. In general, scraping public web data may be lawful, but you are responsible for following Zillow’s Terms of Service and any applicable privacy, marketing, and anti-spam rules in your jurisdiction. Use the data responsibly for research, marketing, or legitimate lead generation. For questions or feedback, contact <codebeatapi@gmail.com>.

### Zillow Phone Number Scraper Input Parameters 📋

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "location": "",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | ✅ Yes | `["marketing","founder"]` | One or more keywords to find relevant Zillow profiles and posts |
| `location` | String | No | `""` | Optional location filter. Leave empty to search more broadly |
| `country` | String | ✅ Yes | `United Kingdom (+44)` | Country used to target phone numbers |
| `maxPhoneNumbers` | Integer | No | `20` | Maximum number of phone numbers to collect in one run |

### During the Actor Run ⏱️

While the actor runs, you’ll see live logs showing progress across your keywords and the current number of phone numbers collected. Results are saved incrementally, so you can check the dataset even before the run ends. Larger runs may take longer, especially if you use several keywords or a higher `maxPhoneNumbers` value. If results are below expectations, try broader keywords or a different country.

### Final Note ✉️

Start extracting Zillow contact information in minutes with Zillow Phone Number Scraper. It’s a fast, practical way to automate Zillow data extraction and scale your prospecting without manual digging. Questions or support? Reach us at <codebeatapi@gmail.com>.

### FAQ — Zillow Phone Number Scraper ❓

#### How does Zillow Phone Number Scraper find phone numbers?

It uses the keywords and country you set to locate relevant public Zillow content, then extracts publicly listed phone numbers from matching profiles, bios, and posts. It returns only data that appears in public web sources.

#### What types of Zillow results can I scrape?

You can scrape public Zillow profiles, bios, and post content that include phone numbers. If a result does not contain a public phone number, it will not be included in the dataset.

#### What makes this a good Zillow lead scraper?

It combines keyword targeting, country selection, optional location filtering, and structured output, which makes it useful for Zillow lead generation and real estate lead scraper workflows. You get data that’s easier to review, export, and use downstream.

#### Can I use this as a Zillow phone extractor for bulk runs?

Yes. The actor supports bulk extraction through multiple keywords and a configurable `maxPhoneNumbers` limit, so you can scale up without losing control over the size of the run.

#### How much does Zillow Phone Number Scraper cost to use?

Your cost depends on your Apify account setup and the size of the run. The `maxPhoneNumbers` parameter helps you cap output and manage usage more predictably.

#### Is Zillow Phone Number Scraper suitable for Zillow contact information research?

Yes. It’s a strong fit for researchers, marketers, and analysts who need structured Zillow contact information from public pages for outreach, segmentation, or market analysis.

#### Why do my results vary from one run to another?

Results depend on the keywords you choose, the target country, and how much public phone number data is available in the selected niche. Broader keywords can often produce more results.

#### How do I get support or request a feature?

If you need help or want to share feedback, contact <codebeatapi@gmail.com>.

### 🆘 Support & Feedback

Found a bug or need a custom feature for the Zillow Phone Number Scraper?

- 🐞 **Bug Reports:** Share the issue with our team
- ✨ **Custom Solutions & Feature Requests:** Contact us for help with your use case
- 📧 **Email:** <codebeatapi@gmail.com>

### Country & Time Targeting

**Target Country** did two jobs already: it supplies the dial code the search
looks for, and it is the region numbers are parsed against. It now does a third

- Google is asked to answer as if searching from that country (`gl`). Turn on
  **Strict country filter** to also restrict results to pages Google attributes to
  it (`cr=countryXX`); that is much tighter and returns noticeably fewer results.

**Result Language** restricts results to one language (`hl` + `lr`).

**Time Range** limits results to a publication window - past hour, 24 hours,
week, month, year, or an explicit *Custom range* via **Custom range: from** /
**to** in `YYYY-MM-DD` form. Selecting *Custom range* without either date falls
back to no time filter rather than silently searching all of time.

### Region resolution

| Field | Meaning |
| --- | --- |
| `regionAmbiguous` | `true` when the number was printed without a country code and the same national digits are valid in more than one country |
| `phoneIsMobile` | `true`/`false` where the numbering plan can tell, empty where it genuinely cannot (US, Canada, Mexico) |
| `phoneCallingCode` | The country's international calling code, as a number |
| `phoneCountryName` | Full country name, falling back to the two-letter code rather than guessing |

`regionAmbiguous` is the important one. A number written as `020 7946 0958` is
only a UK number because the run targeted the UK - the country shown is a
reading, not a fact, and this column tells you which rows those are.

# Actor input Schema

## `scrapeMode` (type: `string`):

Find New Numbers (default) searches About.Me by keyword. Validate My List skips searching entirely and instead runs the numbers you paste into Phone List (below) through the same deliverability checks.

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

Enter keywords to search for (e.g., 'Target Keyword'). Only used in Find New Numbers mode.

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

Filter by location (e.g., 'London', 'California'). Leave empty for global search. Only used in Find New Numbers mode.

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

Select the country to target for phone numbers. Only used in Find New Numbers mode.

## `phoneList` (type: `array`):

Paste the phone numbers you want checked for deliverability (any format - the selected Country is used as the default region for numbers without a country code). Only used when Scrape Mode is set to "Validate My List".

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration. Only used in Find New Numbers mode.

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

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

## `requireStrictValid` (type: `boolean`):

Drop numbers that fail strict validity (correct length/format for the region) - mainly relevant in Validate My List mode, since search results are already strictly valid by construction.

## `excludeTollFree` (type: `boolean`):

Drop numbers identified as toll-free.

## `excludePremiumRate` (type: `boolean`):

Drop numbers identified as premium-rate.

## `requireCountryMatch` (type: `boolean`):

Drop numbers whose own detected region does not match the Country you selected (e.g. shared dial codes like +1 covering the US, Canada, and Caribbean nations).

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

Restrict Google to pages it attributes to the country you selected (cr=countryXX), rather than 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. A number published last month is far more likely to still be answered than one last seen years ago.

## `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
{
  "scrapeMode": "Find New Numbers",
  "keywords": [
    "real estate agent",
    "realtor"
  ],
  "country": "United States (+1)",
  "phoneList": [],
  "maxPhoneNumbers": 20,
  "minQualityScore": 0,
  "requireStrictValid": false,
  "excludeTollFree": false,
  "excludePremiumRate": false,
  "requireCountryMatch": false,
  "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 = {
    "keywords": [
        "real estate agent",
        "realtor"
    ],
    "phoneList": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/zillow-phone-number-scraper-fast-and-reliable").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": [
        "real estate agent",
        "realtor",
    ],
    "phoneList": [],
}

# Run the Actor and wait for it to finish
run = client.actor("code-beat/zillow-phone-number-scraper-fast-and-reliable").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": [
    "real estate agent",
    "realtor"
  ],
  "phoneList": []
}' |
apify call code-beat/zillow-phone-number-scraper-fast-and-reliable --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,code-beat/zillow-phone-number-scraper-fast-and-reliable"
        }
    }
}

```

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/vob7XixJoMQwtjNmi/builds/AwEmKWNbVenufcE8v/openapi.json
