# Zillow Agent & Team Leads Scraper — Contact & Sales Data (`blackfalcondata/zillow-agent-leads-scraper`) Actor

Scrape US real estate agent & team leads from zillow.com — name, phone, email, rating, review count, sales history, and active listings per agent, with incremental tracking across runs.

- **URL**: https://apify.com/blackfalcondata/zillow-agent-leads-scraper.md
- **Developed by:** [Black Falcon Data](https://apify.com/blackfalcondata) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.45 / 1,000 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/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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

### What does Zillow Agent & Team Leads Scraper do?

Zillow Agent & Team Leads Scraper extracts structured agent data from [zillow.com](https://zillow.com) — including contact details and seller ratings. It supports controllable result limits, so you can run the same query consistently over time.

**New to Apify?** [Sign up free](https://console.apify.com/sign-up?fpr=1h3gvi&fp_sid=ctaplain) and use the included $5 monthly platform credit to test this actor.

### Key features

<!-- KEY_FEATURES:START -->
- **📇 Direct agent contact info** — every record carries the agent's name, business/team name, phone, and email — read directly from their own Zillow profile (where published), not guessed or extracted from a listing description.
- **📈 Sales track record** — `totalSales`, `recentSalesCount` (last 12 months), and `activeListingsCount` — gauge how active an agent is before you reach out.
- **⭐ Rating & review count** — zillow's own `rating` (0-5) and `reviewCount` are on every record — filter or rank leads by reputation without a separate lookup.
- **🎯 Lead-quality filters** — `minRating` / `minSales` / `minReviews` keep only the agents that clear your bar — no manual spreadsheet triage after the run.
- **🎯 Batch searches** — pass `["term1", "term2"]` for query, location, or city to batch multiple searches in one run — shared dedup state, single dataset, one Actor-Start charge instead of N.
- **♻️ Incremental mode** — recurring runs emit and charge only for agents that are new or changed (rating, sales, reviews, or active listings). First run builds the baseline; later runs emit NEW / UPDATED / REAPPEARED by default. Saves 80-95% on daily monitoring.
- **🔔 Notifications** — Telegram, Slack, Discord, WhatsApp Cloud API, and generic webhook out of the box. Pair with incremental for daily new-agent alerts without pipeline glue.
- **📦 Compact mode** — AI-agent and MCP-friendly payloads with core fields only.
- **📤 Export anywhere** — Download the dataset as JSON, CSV, or Excel from the Apify Console, or stream live via the Apify API and integrations (Make, Zapier, Google Sheets, n8n, …).
- **🔌 MCP connectors** — export your leads into Notion via Apify's MCP connectors — a clean run-summary page, no glue code. Opt-in via the App connector field.
<!-- KEY_FEATURES:END -->

### What data can you extract from Zillow?

Each result includes Core agent fields (`zuid`, `username`, `profileUrl`, `displayName`, `businessName`, `rating`, `reviewCount`, and `totalSales`, and more) and contact information (`phone` and `email`). In standard mode, all fields are always present — unavailable data points are returned as `null`, never omitted. In compact mode, only core fields are returned.

### Input

The main inputs are a result limit. Additional filters and options are available in the input schema.

Key parameters:

- **`agentLocations`** — One or more locations to search for real estate agents: "City, ST" (e.g. "Austin, TX") or a ZIP code. Each is searched independently. Leave empty if you only use Start URLs.
- **`startUrls`** — Paste zillow.com agent profile URLs directly, or an agent-directory URL for a city. Profile URLs are fetched directly; directory URLs are scanned for all agents listed.
- **`maxResults`** — Maximum number of agents to return (0 = full coverage for the given location(s)). (default: `50`)
- **`minRating`** — Only include agents whose average rating is at least this value (0-5). Agents with no rating yet are excluded when this is set.
- **`minSales`** — Only include agents with at least this many total sales, as reported on their own Zillow profile.
- **`minReviews`** — Only include agents with at least this many reviews on their profile.
- **`excludeEmptyFields`** — Drop null / empty-string / empty-array fields from each record. (default: `false`)
- **`compact`** — Output only core lead fields — name, business, phone, email, rating, reviews, sales, and profile URL (for AI-agent / MCP workflows). (default: `false`)
- **`incrementalMode`** — Track new/changed/expired agents across runs. Requires a State Key. (default: `false`)
- **`stateKey`** — Stable identifier for this tracking universe (e.g. "austin-tx-agents").
- **`emitUnchanged`** — When incremental, also emit agents that have not changed since the last run. (default: `false`)
- **`emitExpired`** — When incremental, also emit agents no longer found in the tracked location (e.g. profile removed or deactivated). These markers are always included so change tracking stays complete — they are not subject to Max Results. (default: `false`)
- ...and 13 more parameters

### Input examples

**Basic search** — Targeted run scoped to a specific agentLocations.

→ Full payload per result — all standard fields populated where the source provides them.

```json
{
  "agentLocations": [
    "Austin, TX"
  ],
  "maxResults": 50
}
````

**Paste an agent profile URL** — Fetch a specific agent directly by pasting their zillow.com profile URL — skips location search entirely.

→ One record per pasted profile URL, same full field set as a location search.

```json
{
  "startUrls": [
    "https://www.zillow.com/profile/ericbramlett/"
  ]
}
```

**Incremental tracking** — Only emit agents that changed since the previous run with this `stateKey`.

→ First run builds the baseline state. Subsequent runs emit only records that are new or whose tracked content changed. Set `emitUnchanged: true` to include unchanged records as well.

```json
{
  "agentLocations": [
    "Austin, TX"
  ],
  "maxResults": 200,
  "incrementalMode": true,
  "stateKey": "zillow-tracker"
}
```

**Compact output for AI agents** — Return only core fields for AI-agent and MCP workflows.

→ Small payload with the most important fields — ideal for piping into LLMs without token overhead.

```json
{
  "agentLocations": [
    "Austin, TX"
  ],
  "maxResults": 50,
  "compact": true
}
```

### Output

Each run produces a dataset of structured agent records. Results can be downloaded as JSON, CSV, or Excel from the Dataset tab in Apify Console.

### Example agent record

```json
{
  "zuid": "X1-ZUz2ygtvdkcjd5_7sxq5",
  "username": "ericbramlett",
  "profileUrl": "https://www.zillow.com/profile/ericbramlett/",
  "displayName": "Eric Bramlett",
  "businessName": "Bramlett Partners",
  "phone": "(512) 872-3272",
  "email": "eric+1@bramlett.me",
  "rating": 5,
  "reviewCount": 2160,
  "totalSales": 5663,
  "recentSalesCount": 823,
  "activeListingsCount": 183,
  "photoUrl": "https://photos.zillowstatic.com/fp/d29b2b31d82a4cd66037b7b8390251bc-h_l.jpg",
  "licenseNumber": "512388",
  "serviceAreas": [
    "Manor, TX",
    "Leander, TX",
    "Austin, TX",
    "West Lake Hills, TX",
    "Buda, TX",
    "... 11 more items"
  ],
  "url": "https://www.zillow.com/profile/ericbramlett/",
  "sourceDomain": "zillow.com",
  "scrapedAt": "2026-07-19T00:00:00.000Z",
  "changeType": "NEW",
  "contentHash": "4562a339f1468bb6b542002657f6863ff59e05be577d627e60711e6cf48b589e",
  "trackedHash": "7c71010f017c009cc9db80ca732246e934074523b1df3613bf6f90a29b15786c",
  "firstSeenAt": "2026-07-19T00:00:00.000Z",
  "lastSeenAt": "2026-07-19T00:00:00.000Z"
}
```

### Incremental fields

When incremental mode is on, each record also carries:

- `changeType` — one of `NEW`, `UPDATED`, `UNCHANGED`, `REAPPEARED`, `EXPIRED`. Default output covers `NEW` / `UPDATED` / `REAPPEARED`; set `emitUnchanged: true` or `emitExpired: true` to opt into the others.
- `firstSeenAt`, `lastSeenAt` — ISO-8601 timestamps tracking the listing across runs.

### How to scrape Zillow

1. Go to [Zillow Agent & Team Leads Scraper](https://apify.com/blackfalcondata/zillow-agent-leads-scraper?fpr=1h3gvi) in Apify Console.
2. Configure the input.
3. Set `maxResults` to control how many results you need.
4. Click **Start** and wait for the run to finish.
5. Export the dataset as JSON, CSV, or Excel.

### Use cases

- Extract agent data from Zillow for market research and competitive analysis.
- Monitor new and changed agents on scheduled runs without processing the full dataset every time.
- Feed structured data into AI agents, MCP tools, and automated pipelines using compact mode.
- Export clean, structured data to dashboards, spreadsheets, or data warehouses.
- Benchmark seller / dealer reputation using rating fields.

### How much does it cost to scrape Zillow?

Zillow Agent & Team Leads Scraper uses [pay-per-event](https://docs.apify.com/platform/actors/paid-actors/pay-per-event) pricing. You pay a small fee when the run starts and then for each result that is actually produced.

- **Run start:** $0.0025 per run
- **Per result:** $0.00145 per agent record

Example costs:

- 10 results: **$0.017**
- 25 results: **$0.039**
- 100 results: **$0.15**
- 200 results: **$0.29**
- 500 results: **$0.73**

#### Example: recurring monitoring savings

These examples compare full re-scrapes with incremental runs at different churn rates. Churn is the share of agents that are new or whose tracked content changed since the previous run. Actual churn depends on your query breadth, source activity, and polling frequency — the scenarios below are examples, not predictions.

Example setup: 200 results per run, daily polling (30 runs/month). Event-pricing examples scale linearly with result count.

| Churn rate | Full re-scrape run cost | Incremental run cost | Savings vs full re-scrape | Monthly cost after baseline |
|---|---:|---:|---:|---:|
| 5% — stable niche query | $0.29 | $0.02 | $0.28 (94%) | $0.51 |
| 15% — moderate broad query | $0.29 | $0.05 | $0.25 (84%) | $1.38 |
| 30% — high-volume aggregator | $0.29 | $0.09 | $0.20 (69%) | $2.69 |

Full re-scrape monthly cost at daily polling: $8.77. First month with incremental costs $0.79 / $1.63 / $2.89 for the 5% / 15% / 30% scenarios because the first run builds baseline state at full cost before incremental savings apply.

Platform usage is included in the per-result fee shown above.

### FAQ

#### How many results can I get from Zillow?

The number of results depends on the search query and available agents on Zillow. Use the `maxResults` parameter to control how many results are returned per run.

#### Does Zillow Agent & Team Leads Scraper support recurring monitoring?

Yes. Enable incremental mode to only receive new or changed agents on subsequent runs. This is ideal for scheduled monitoring where you want to track changes over time without re-processing the full dataset.

#### Can I integrate Zillow Agent & Team Leads Scraper with other apps?

Yes. Zillow Agent & Team Leads Scraper works with Apify's [integrations](https://apify.com/integrations?fpr=1h3gvi) to connect with tools like Zapier, Make, Google Sheets, Slack, and more. You can also use webhooks to trigger actions when a run completes.

#### Can I use Zillow Agent & Team Leads Scraper with the Apify API?

Yes. You can start runs, manage inputs, and retrieve results programmatically through the [Apify API](https://docs.apify.com/api/v2). Client libraries are available for JavaScript, Python, and other languages.

#### Can I use Zillow Agent & Team Leads Scraper through an MCP Server?

Yes. Apify provides an [MCP Server](https://apify.com/apify/actors-mcp-server?fpr=1h3gvi) that lets AI assistants and agents call this actor directly. Use compact mode and `excludeEmptyFields` to keep payloads manageable for LLM context windows.

#### Is it legal to scrape Zillow?

This actor extracts publicly available data from Zillow. Web scraping of public information is generally considered legal, but you should always review the target site's terms of service and ensure your use case complies with applicable laws and regulations, including GDPR where relevant.

#### Your feedback

If you have questions, need a feature, or found a bug, please [open an issue](https://apify.com/blackfalcondata/zillow-agent-leads-scraper/issues?fpr=1h3gvi) on the actor's page in Apify Console. Your feedback helps us improve.

### You might also like

- [Airbnb Realtime API — Live Listing, Reviews & Search Lookups](https://apify.com/blackfalcondata/airbnb-realtime?fpr=1h3gvi) — Real-time Airbnb lookups via a persistent standby server — fetch a single listing, its reviews.
- [Airbnb Scraper — Listings, Prices, Reviews & Host Data](https://apify.com/blackfalcondata/airbnb-scraper?fpr=1h3gvi) — Scrape Airbnb stays — listings with price, ratings, amenities, host info, photos, GPS and full.
- [Airbnb URL Scraper — Fast, Cheap Listing URL Discovery](https://apify.com/blackfalcondata/airbnb-url-scraper?fpr=1h3gvi) — Discover every Airbnb listing URL for a city, neighborhood or search — the cheapest way to.
- [Craigslist Scraper - Listings, Prices & Photos](https://apify.com/blackfalcondata/craigslist-scraper?fpr=1h3gvi) — Scrape craigslist.org listings across for-sale, housing, jobs, gigs and services. Get structured.
- [HAR Texas Real Estate Scraper](https://apify.com/blackfalcondata/har-scraper?fpr=1h3gvi) — Scrape har.com — the largest Texas MLS portal — for homes for sale, rent and sold in every Texas.
- [Harcourts Property Scraper — buy, rent, sold & leased](https://apify.com/blackfalcondata/harcourts-scraper?fpr=1h3gvi) — Scrape harcourts.net property listings across Australia, New Zealand and Fiji — price, bedrooms,.
- [Idealista Scraper — Listings, Phone & Agency Data](https://apify.com/blackfalcondata/idealista-scraper?fpr=1h3gvi) — Scrape Idealista listings across Spain, Portugal, and Italy with full pricing, photos, GPS, agent.
- [Immowelt Scraper — German Real Estate Listings](https://apify.com/blackfalcondata/immowelt-scraper?fpr=1h3gvi) — Scrape immowelt.de — one of Germany's largest residential property portals — and pull every active.

### Getting started with Apify

New to Apify? [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=1h3gvi\&fp_sid=ctaplain) — no credit card required.

1. Sign up — $5 platform credit included
2. Open this actor and configure your input
3. Click **Start** — export results as JSON, CSV, or Excel

Need more later? [See Apify pricing](https://apify.com/pricing?fpr=1h3gvi).

# Actor input Schema

## `agentLocations` (type: `array`):

One or more locations to search for real estate agents: "City, ST" (e.g. "Austin, TX") or a ZIP code. Each is searched independently. Leave empty if you only use Start URLs.

## `startUrls` (type: `array`):

Paste zillow.com agent profile URLs directly, or an agent-directory URL for a city. Profile URLs are fetched directly; directory URLs are scanned for all agents listed.

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

Maximum number of agents to return (0 = full coverage for the given location(s)).

## `minRating` (type: `number`):

Only include agents whose average rating is at least this value (0-5). Agents with no rating yet are excluded when this is set.

## `minSales` (type: `integer`):

Only include agents with at least this many total sales, as reported on their own Zillow profile.

## `minReviews` (type: `integer`):

Only include agents with at least this many reviews on their profile.

## `excludeEmptyFields` (type: `boolean`):

Drop null / empty-string / empty-array fields from each record.

## `compact` (type: `boolean`):

Output only core lead fields — name, business, phone, email, rating, reviews, sales, and profile URL (for AI-agent / MCP workflows).

## `incrementalMode` (type: `boolean`):

Track new/changed/expired agents across runs. Requires a State Key.

## `stateKey` (type: `string`):

Stable identifier for this tracking universe (e.g. "austin-tx-agents").

## `emitUnchanged` (type: `boolean`):

When incremental, also emit agents that have not changed since the last run.

## `emitExpired` (type: `boolean`):

When incremental, also emit agents no longer found in the tracked location (e.g. profile removed or deactivated). These markers are always included so change tracking stays complete — they are not subject to Max Results.

## `telegramToken` (type: `string`):

Telegram bot token (from @BotFather). Required for Telegram notifications.

## `telegramChatId` (type: `string`):

Telegram chat or channel ID where alerts are sent.

## `discordWebhookUrl` (type: `string`):

Discord incoming webhook URL.

## `slackWebhookUrl` (type: `string`):

Slack incoming webhook URL.

## `whatsappPhoneNumberId` (type: `string`):

WhatsApp Business phone number ID from Meta Business Manager.

## `whatsappAccessToken` (type: `string`):

Meta Cloud API access token with whatsapp\_business\_messaging scope.

## `whatsappTo` (type: `string`):

Recipient phone number in E.164 format (e.g. +14155551234).

## `webhookUrl` (type: `string`):

Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST per run.

## `webhookHeaders` (type: `object`):

Additional HTTP headers sent with the generic webhook POST.

## `notificationLimit` (type: `integer`):

Maximum number of agents included in each notification message (1–20).

## `notifyOnlyChanges` (type: `boolean`):

When Incremental Mode is on, only notify for NEW and UPDATED agents.

## `appConnector` (type: `string`):

Optional. Pick a connected app under Settings → API & Integrations to receive your results (including contact details where available). A run-summary is written to the connected app; support is best-effort as Apify expands its connector catalog.

## `mcpIssueTeam` (type: `string`):

Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one.

## Actor input object example

```json
{
  "agentLocations": [
    "Austin, TX"
  ],
  "startUrls": [],
  "maxResults": 10,
  "excludeEmptyFields": false,
  "compact": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "notificationLimit": 5,
  "notifyOnlyChanges": false
}
```

# 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 = {
    "agentLocations": [
        "Austin, TX"
    ],
    "startUrls": [],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("blackfalcondata/zillow-agent-leads-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 = {
    "agentLocations": ["Austin, TX"],
    "startUrls": [],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("blackfalcondata/zillow-agent-leads-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 '{
  "agentLocations": [
    "Austin, TX"
  ],
  "startUrls": [],
  "maxResults": 10
}' |
apify call blackfalcondata/zillow-agent-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=blackfalcondata/zillow-agent-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow Agent & Team Leads Scraper — Contact & Sales Data",
        "description": "Scrape US real estate agent & team leads from zillow.com — name, phone, email, rating, review count, sales history, and active listings per agent, with incremental tracking across runs.",
        "version": "0.1",
        "x-build-id": "mvDgGzyxvGRnml19m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/blackfalcondata~zillow-agent-leads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-blackfalcondata-zillow-agent-leads-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/blackfalcondata~zillow-agent-leads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-blackfalcondata-zillow-agent-leads-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/blackfalcondata~zillow-agent-leads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-blackfalcondata-zillow-agent-leads-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",
                "properties": {
                    "agentLocations": {
                        "title": "📍 Agent Locations",
                        "type": "array",
                        "description": "One or more locations to search for real estate agents: \"City, ST\" (e.g. \"Austin, TX\") or a ZIP code. Each is searched independently. Leave empty if you only use Start URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "🔗 Start URLs",
                        "type": "array",
                        "description": "Paste zillow.com agent profile URLs directly, or an agent-directory URL for a city. Profile URLs are fetched directly; directory URLs are scanned for all agents listed.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "💯 Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of agents to return (0 = full coverage for the given location(s)).",
                        "default": 50
                    },
                    "minRating": {
                        "title": "⭐ Min Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only include agents whose average rating is at least this value (0-5). Agents with no rating yet are excluded when this is set."
                    },
                    "minSales": {
                        "title": "💰 Min Total Sales",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include agents with at least this many total sales, as reported on their own Zillow profile."
                    },
                    "minReviews": {
                        "title": "📝 Min Review Count",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include agents with at least this many reviews on their profile."
                    },
                    "excludeEmptyFields": {
                        "title": "🧹 Exclude Empty Fields",
                        "type": "boolean",
                        "description": "Drop null / empty-string / empty-array fields from each record.",
                        "default": false
                    },
                    "compact": {
                        "title": "📦 Compact Output",
                        "type": "boolean",
                        "description": "Output only core lead fields — name, business, phone, email, rating, reviews, sales, and profile URL (for AI-agent / MCP workflows).",
                        "default": false
                    },
                    "incrementalMode": {
                        "title": "♻️ Incremental Mode",
                        "type": "boolean",
                        "description": "Track new/changed/expired agents across runs. Requires a State Key.",
                        "default": false
                    },
                    "stateKey": {
                        "title": "🔑 State Key",
                        "type": "string",
                        "description": "Stable identifier for this tracking universe (e.g. \"austin-tx-agents\")."
                    },
                    "emitUnchanged": {
                        "title": "♻️ Emit Unchanged Records",
                        "type": "boolean",
                        "description": "When incremental, also emit agents that have not changed since the last run.",
                        "default": false
                    },
                    "emitExpired": {
                        "title": "⚰️ Emit Expired Records",
                        "type": "boolean",
                        "description": "When incremental, also emit agents no longer found in the tracked location (e.g. profile removed or deactivated). These markers are always included so change tracking stays complete — they are not subject to Max Results.",
                        "default": false
                    },
                    "telegramToken": {
                        "title": "🔑 Telegram Bot Token",
                        "type": "string",
                        "description": "Telegram bot token (from @BotFather). Required for Telegram notifications."
                    },
                    "telegramChatId": {
                        "title": "💬 Telegram Chat ID",
                        "type": "string",
                        "description": "Telegram chat or channel ID where alerts are sent."
                    },
                    "discordWebhookUrl": {
                        "title": "🎮 Discord Webhook URL",
                        "type": "string",
                        "description": "Discord incoming webhook URL."
                    },
                    "slackWebhookUrl": {
                        "title": "💼 Slack Webhook URL",
                        "type": "string",
                        "description": "Slack incoming webhook URL."
                    },
                    "whatsappPhoneNumberId": {
                        "title": "📱 WhatsApp Phone Number ID",
                        "type": "string",
                        "description": "WhatsApp Business phone number ID from Meta Business Manager."
                    },
                    "whatsappAccessToken": {
                        "title": "🔐 WhatsApp Access Token",
                        "type": "string",
                        "description": "Meta Cloud API access token with whatsapp_business_messaging scope."
                    },
                    "whatsappTo": {
                        "title": "📨 WhatsApp Recipient",
                        "type": "string",
                        "description": "Recipient phone number in E.164 format (e.g. +14155551234)."
                    },
                    "webhookUrl": {
                        "title": "🪝 Generic Webhook URL",
                        "type": "string",
                        "description": "Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST per run."
                    },
                    "webhookHeaders": {
                        "title": "🪝 Webhook Headers (optional)",
                        "type": "object",
                        "description": "Additional HTTP headers sent with the generic webhook POST."
                    },
                    "notificationLimit": {
                        "title": "📊 Max Agents Per Notification",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of agents included in each notification message (1–20).",
                        "default": 5
                    },
                    "notifyOnlyChanges": {
                        "title": "🔄 Notify Only New/Updated",
                        "type": "boolean",
                        "description": "When Incremental Mode is on, only notify for NEW and UPDATED agents.",
                        "default": false
                    },
                    "appConnector": {
                        "title": "📤 Send results to a connected app",
                        "type": "string",
                        "description": "Optional. Pick a connected app under Settings → API & Integrations to receive your results (including contact details where available). A run-summary is written to the connected app; support is best-effort as Apify expands its connector catalog."
                    },
                    "mcpIssueTeam": {
                        "title": "🏷️ Issue tracker team",
                        "type": "string",
                        "description": "Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
