# Zillow Agent & Broker Leads Scraper - Live (`themineworks/zillow-agent-leads`) Actor

Discover real estate agents and brokers actively listing in any market, with phone, email, brokerage and MLS ID. Found live from current Zillow listings, not a stale database. No login, no API key. Works in Claude, ChatGPT & any MCP-compatible AI agent.

- **URL**: https://apify.com/themineworks/zillow-agent-leads.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.72 / 1,000 unique agents

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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 Agent & Broker Leads Scraper

> 🏆 Part of The Mine Works' 149-actor portfolio · 40,000+ runs · 200,000+ results delivered across our full distribution stack · 99.9%+ success rate

> 💰 $10.72 / 1,000 results.

> ⚡ Agents are found by reading the attribution block on live, current Zillow listings. Not a purchased or resold contact database.
> 💸 Billed once per unique agent. An agent found on 50 listings in one run is one charge, not 50.

Find real estate agents and brokers actively listing in any market, with phone, email, brokerage and MLS ID, discovered live from current Zillow listings, not a stale purchased database.

This is one of three actors extending The Mine Works' four established Zillow actors (search, recently sold, rentals, property details), which already feed the Real Estate MCP server. It turns the same listing data those four already touch into a supply-side lead list: the agents and brokers actively listing in a market, not just the listings.

### Status: not currently returning data (2026-09-01)

Verified today against a major market: the run finds candidate agents but
every one is dropped because no shareable contact attribution can be
established, so it delivers zero rows. Nothing is charged (the per-agent
event does not fire), but the Actor is not usable right now and we are
working on it. Do not build a workflow on it until this notice is removed.

### How it works

Give it a city or zip code. It walks that market's active listings and reads the public agent-attribution block Zillow publishes on every listing page. Each agent is returned once, the first time they're found, no duplicate charges for an agent with 30 active listings.

### Input

- **locations** (required), cities or zip codes, e.g. `["Austin, TX", "78701"]`. Up to 20 per run.
- **maxAgentsPerLocation**, stop a location once this many unique agents are found (default 20).
- **listingType**, discover agents via `for_sale`, `for_rent`, or `recently_sold` listings.

### Output

One row per unique agent: name, phone, email (when public), brokerage, MLS ID, plus one sample listing so you can see the agent's real, current work.

### A note on coverage

This finds agents through their **active public listings**, the same information anyone can see on Zillow. It will not find every agent licensed in a market, only those currently listing. For markets with few active listings, you may find fewer agents than `maxAgentsPerLocation`.

**Some regional MLS providers do not share agent name or phone with Zillow at all.** This is a real, verified data-sharing restriction, not a bug, confirmed live on Austin, TX (fed by "Unlock MLS"), where every listing's attribution block carries only a generic contact number and no agent name. Other regions (e.g. Los Angeles, on CRMLS) do share full agent name, direct phone, and brokerage. If a run returns zero agents on a market with obviously active listings, check the run's log and summary (`no_shareable_attribution` count), a high count there means this market's MLS is the limiting factor, and a nearby market on a different MLS will likely work.

### Pricing

| Event | Price | You pay when |
| --- | --- | --- |
| Unique agent | $0.010716 | A newly discovered, deduplicated agent record lands in your dataset |
| Actor Start | $0.005 | The run starts. Applies from 14 September 2026. One event per GB of memory, and this actor runs on 512 MB, so one per run |

Deduplication happens before billing, so an agent attributed to 50 listings in one run is charged once. Flat pricing across every Apify plan, not tiered.

### Run it on a schedule

A standing check on who is actively listing in a market. Monthly is usually
enough, since the active agent roster in a given market does not turn over fast.
Diff each run against the last to see who is newly active rather than
re-collecting everyone.

1. Run it once with the input you want repeated, then click **Save as a task**
   so that exact input is attached to every future run.
2. In the Apify Console go to **Schedules** and create a new one, either a
   preset (hourly / daily / weekly) or a cron expression.
3. Save. It then runs unattended, billed the same pay-per-result way. Nothing
   is charged for the schedule existing.

### FAQ

**Does it charge twice if the same agent shows up on several listings?**
No. Agents are deduplicated before billing, so you pay once per unique agent found in a run, whatever their listing count.

**Is this a purchased contact list?**
No. Every record is read from the public attribution block on a current, live Zillow listing at run time. Nothing is stored or resold between runs.

**Do I need a Zillow login or API key?**
No.

**Why do some markets return no agents?**
Some regional MLS providers do not share agent name or phone with Zillow at all. See the coverage note above, and check the run summary's `no_shareable_attribution` count.

**Can I search sale, rental and sold listings in one run?**
No. `listingType` is a single choice of `for_sale`, `for_rent` or `recently_sold`. Run it again with a different value to cover another type.

### Use from Claude, ChatGPT & any MCP agent

Hosted MCP endpoint, no install, OAuth on first connect:

```
https://mcp.apify.com/?tools=themineworks/zillow-agent-leads
```

Claude Desktop / Cursor config (token auth):

```json
{
  "mcpServers": {
    "zillow-agent-leads": {
      "url": "https://mcp.apify.com/?tools=themineworks/zillow-agent-leads",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Ask your agent: *"Find every agent currently listing homes for sale in Austin, TX, with their phone number and brokerage."*

### Related Zillow actors

- [zillow-property-details](https://apify.com/themineworks/zillow-property-details), full detail on any listing an agent here is attributed to.
- [zillow-search-scraper](https://apify.com/themineworks/zillow-search-scraper) · [zillow-zip-bulk-search](https://apify.com/themineworks/zillow-zip-bulk-search)
- [zillow-photos](https://apify.com/themineworks/zillow-photos), full-resolution photos from any listing.
- [zillow-rental-listings](https://apify.com/themineworks/zillow-rental-listings) · [zillow-recently-sold](https://apify.com/themineworks/zillow-recently-sold)

For multi-source real estate research over one connection, see the [Real Estate MCP server](https://apify.com/themineworks/real-estate-mcp), which bundles Zillow, Redfin, Realtor and Airbnb tools behind a single endpoint.

Keywords: Zillow agent leads, real estate agent scraper, broker leads, Zillow agent contact finder, MLS agent lookup, listing attribution scraper, real estate lead generation, brokerage contact list

# Actor input Schema

## `locations` (type: `array`):

Cities or zip codes to find agents in (up to 20 per run), e.g. "Austin, TX" or "90210". Each agent is discovered from their current live listings.

## `maxAgentsPerLocation` (type: `integer`):

Stop searching a location once this many unique agents have been found.

## `listingType` (type: `string`):

Which listings to search for agent attribution.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "maxAgentsPerLocation": 20,
  "listingType": "for_sale"
}
```

# Actor output Schema

## `results` (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 = {
    "locations": [
        "Austin, TX"
    ],
    "maxAgentsPerLocation": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/zillow-agent-leads").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 = {
    "locations": ["Austin, TX"],
    "maxAgentsPerLocation": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/zillow-agent-leads").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 '{
  "locations": [
    "Austin, TX"
  ],
  "maxAgentsPerLocation": 20
}' |
apify call themineworks/zillow-agent-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/zillow-agent-leads"
        }
    }
}

```

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/UGmbhlCfh7RGwIix6/builds/Ycrs6JQmPhi0xhKoR/openapi.json
