# Zillow Agent Leads Finder (`parsebird/zillow-agent-leads-finder`) Actor

Find real estate agent leads on Zillow by ZIP, city, state, or profile URL. Get email, phone, website, brokerage, license, reviews, sales stats, and full past sales and listings. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/zillow-agent-leads-finder.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.39 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Zillow Agent Leads Finder

Find real estate agent leads on Zillow by ZIP code, city, state, or profile URL, with email, phone, website, brokerage, license numbers, reviews, and sales history.

<table><tr>
<td style="border-left:4px solid #006AFF;padding:12px 16px;font-weight:600">
Turn Zillow's agent directory into a clean lead list: filter by location, specialty, language, Top Agent badge, rating, and review count, then export contact details and every past sale for each agent.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Apify actor "parsebird/zillow-agent-leads-finder" (Zillow Agent Leads Finder) returns real estate agent contact data from Zillow. Call it with the apify-client package: client.actor("parsebird/zillow-agent-leads-finder").call(run_input={"locations": ["Austin, TX"], "maxItems": 100}). Provide at least one of: locations (array of strings; ZIP codes or "City, ST"), states (array of two-letter state codes, walked city by city), startUrls (array of {url}; https://www.zillow.com/professionals/real-estate-agent-reviews/99501/ or https://www.zillow.com/profile/Michael-Kayem). Optional: maxItems (integer, default 20, 0 = no limit), enrichEmails (boolean, default false; finds contactEmail on the agent's website), getPastSales, getActiveListings, getRentalListings (booleans, default false), maxCataloguePerAgent (integer, default 20, 0 = no limit), agentName (string), topAgentsOnly, helpsBuyers, helpsSellers, requireEmail, requirePhone (booleans), specialties, languages (arrays of Zillow filter keys such as "luxury-homes", "spanish"), minRating (string such as "4.5"), minReviews (integer). Output, one row per agent: name, email, phone, website, businessName, city, state, postalCode, rating, reviewCount, salesLast12Months, totalSales, averagePrice, priceRange, yearsInIndustry, specialties, languages, licenseNumbers, memberSince, isTopAgent, isPremium, url, encodedZuid, phoneNumbers, businessAddress, salesStats, reviewsSummary, reviewsData, featuredListings, pastSales, serviceAreas, mlsIDs, plus pastSalesHistory, activeListingsHistory, rentalListingsHistory, contactEmail, contactWebsite, emailEnrichment when requested. Pay per event: apify-actor-start, result, past-deals, additional-data, contact-email. API docs: https://apify.com/parsebird/zillow-agent-leads-finder/api. Get a token: https://console.apify.com/settings/integrations
```

### What is Zillow Agent Leads Finder?

**Zillow Agent Leads Finder** is a Zillow agent scraper that collects public agent profiles from the [Zillow agent directory](https://www.zillow.com/professionals/real-estate-agent-reviews/) and returns them as a structured lead list. It works as a **Zillow agents API alternative**: type a ZIP code or a city, press Start, and download the results.

Each row is one agent, with the **email, phone number, website, brokerage, and business address** shown on the profile, along with ratings, sales figures, licenses, and specialties. Zillow profile emails are included in the base price.

### What can Zillow Agent Leads Finder do?

- 📍 **Search by location.** Enter ZIP codes or cities such as `78701` or `Austin, TX`.
- 🗺️ **Walk whole states.** Pick any US state or DC. The Actor moves city by city through Zillow's nearby-city links and keeps agents whose business address is in that state, along with agents who list no address.
- 🔗 **Paste Zillow URLs.** Agent directory URLs, including ones with filters, and direct profile URLs both work.
- 🔎 **Go past Zillow's search limit.** Zillow shows 25 pages, about 375 agents, per search. Larger locations are automatically searched again by specialty and language to reach more agents.
- ✉️ **Find a second email.** Optionally visit each agent's own website for a contact address that differs from the profile email.
- 🏠 **Get full sales and listing histories.** Optionally page through an agent's complete sold, for-sale, and for-rent lists instead of the few shown on the profile. The default is 20 per list; raise the cap or remove it to get them all.
- 🎯 **Filter leads.** Use Zillow's filters (name, Top Agent, buying, selling, specialty, language) and lead filters (has email, has phone, minimum rating, minimum reviews).

On the Apify platform you can also [schedule runs](https://docs.apify.com/platform/schedules) to refresh your lead list, call the Actor through the [API](https://docs.apify.com/api/v2), connect it to [Make, Zapier, Google Sheets, and other integrations](https://docs.apify.com/platform/integrations), and export in JSON, CSV, Excel, XML, or HTML.

### What data can you extract from Zillow agent profiles?

| Field | Description |
|-------|-------------|
| `name`, `screenName` | Agent or team name |
| `email` | Email shown on the Zillow profile |
| `phone`, `phoneNumbers` | Best phone number, plus cell, business, and brokerage numbers when listed |
| `website` | Agent's website |
| `businessName`, `businessAddress`, `city`, `state`, `postalCode` | Brokerage and business address |
| `rating`, `reviewCount`, `reviewsSummary`, `reviewsData` | Rating, review count, Zillow's AI review summary when available, and recent reviews |
| `salesLast12Months`, `totalSales`, `averagePrice`, `priceRange`, `salesStats` | Sales figures as shown on the profile |
| `yearsInIndustry`, `specialties`, `languages`, `memberSince` | Experience and focus |
| `licenseNumbers`, `agentLicenses`, `otherLicenses`, `mlsIDs` | License numbers and MLS identifiers |
| `isTopAgent`, `isPremium` | Zillow Top Agent badge and premium profile status |
| `featuredListings`, `forSaleListings`, `forRentListings`, `pastSales` | Recent listings and sales embedded in the profile |
| `teamDisplayInformation`, `serviceAreas`, `businessCard`, `professionalInformation` | Team, service areas, branding, and profile details |
| `pastSalesHistory` | Add-on: the agent's sold properties with address, price, date, and buyer or seller side |
| `activeListingsHistory`, `rentalListingsHistory` | Add-on: every for-sale and for-rent listing |
| `contactEmail`, `contactWebsite`, `emailEnrichment` | Add-on: email found on the agent's website and the page it came from |

Some agents leave profile fields blank, and those come back empty. Not every field is shown for every agent.

### How to scrape Zillow agent leads

1. Open [Zillow Agent Leads Finder](https://apify.com/parsebird/zillow-agent-leads-finder) and go to the Input tab.
2. Enter ZIP codes or cities in **Locations**, pick **Whole states**, or paste **Zillow URLs**.
3. Set **Max agents** to control the run size and cost.
4. Turn on any add-ons you need, such as **Find contact emails on agent websites** or **Get full past sales**.
5. Press **Start** and wait for the run to finish.
6. Download your leads in JSON, CSV, Excel, XML, or HTML from the Output tab.

### Input parameters

Provide at least one of `locations`, `states`, or `startUrls`.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| locations | array | No | — | ZIP codes or cities, such as `78701` or `Austin, TX` |
| states | array | No | — | Two-letter state codes to walk city by city |
| startUrls | array | No | — | Zillow agent directory or profile URLs |
| maxItems | integer | No | 20 | Maximum agents in the run. 0 means no limit |
| enrichEmails | boolean | No | false | Look for a contact email on the agent's website |
| getPastSales | boolean | No | false | Add the agent's sold history |
| getActiveListings | boolean | No | false | Add all for-sale listings |
| getRentalListings | boolean | No | false | Add all rental listings |
| maxCataloguePerAgent | integer | No | 20 | Cap for each of the three lists above, per agent. Raise it for longer histories. 0 means no limit |
| agentName | string | No | — | First or last name. Zillow matches whole names |
| topAgentsOnly | boolean | No | false | Only agents with the Top Agent badge |
| helpsBuyers | boolean | No | false | Only agents listed as helping with buying |
| helpsSellers | boolean | No | false | Only agents listed as helping with selling |
| specialties | array | No | — | Specialty keys such as `luxury-homes`. An agent must match all |
| languages | array | No | — | Language keys such as `spanish` |
| requireEmail | boolean | No | false | Save only agents with a profile email |
| requirePhone | boolean | No | false | Save only agents with a phone number |
| minRating | string | No | — | Minimum average rating, such as `4.5` |
| minReviews | integer | No | — | Minimum number of reviews |
| splitLargeSearches | boolean | No | true | Run extra searches by specialty and language above Zillow's per-search limit |
| maxConcurrency | integer | No | 10 | Agents processed at the same time, up to 30 |
| maxRequestRetries | integer | No | 10 | Retries per page, each from a new IP address |

Example input:

```json
{
    "locations": ["Austin, TX", "99501"],
    "topAgentsOnly": true,
    "requireEmail": true,
    "enrichEmails": true,
    "maxItems": 100
}
```

### Output example

Long fields are shortened here. Download results in JSON, CSV, Excel, XML, or HTML.

```json
{
    "name": "Michael Kayem",
    "email": "homes@agentmichael.com",
    "phone": "(310) 739-8029",
    "website": "http://www.agentmichael.com",
    "businessName": "Estate Properties",
    "city": "Culver City",
    "state": "CA",
    "postalCode": "90292",
    "rating": 5,
    "reviewCount": 161,
    "salesLast12Months": 5,
    "totalSales": 266,
    "averagePrice": "$1.2M",
    "priceRange": "$575K-$2.4M",
    "yearsInIndustry": 25,
    "specialties": ["Buyer's Agent", "Listing Agent", "Foreclosure", "Property Management", "Investment Properties"],
    "languages": ["French"],
    "licenseNumbers": ["01320892", "01310892"],
    "memberSince": "04/30/2011",
    "isTopAgent": false,
    "isPremium": false,
    "url": "https://www.zillow.com/profile/Michael-Kayem",
    "encodedZuid": "X1-ZUz91ogaatrqq1_9tzap",
    "phoneNumbers": { "cell": "(310) 739-8029" },
    "businessAddress": { "address1": "124 Washington Blvd", "address2": null, "city": "Culver City", "state": "CA", "postalCode": "90292" },
    "salesStats": { "salesLastTwelveMonths": "5", "totalSales": "266", "priceRange": "$575K-$2.4M", "averagePrice": "$1.2M", "teamDisclaimer": "Sales numbers represent all team members" },
    "pastSalesHistory": [
        {
            "zpid": "20438572",
            "attributes": [{ "value": "3", "label": "bd" }, { "value": "3", "label": "ba" }, { "value": "1,435", "label": "sqft" }],
            "badges": ["Buyer", "Seller"],
            "fullAddressText": "5215 Sepulveda Blvd Unit 5A, Culver City, CA 90230",
            "priceText": "$1,000,000",
            "url": "https://www.zillow.com/homedetails/5215-Sepulveda-Blvd-UNIT-5A-Culver-City-CA-90230/20438572_zpid/"
        }
    ],
    "source": "https://www.zillow.com/profile/Michael-Kayem",
    "scrapedAt": "2026-11-07T00:00:00+00:00"
}
```

### Use cases

- **Real estate software and services sales:** build outreach lists of active agents by market, specialty, or sales volume.
- **Recruiting for brokerages:** find productive agents by city, using sales figures and reviews.
- **Partnerships:** find agents for mortgage, staging, photography, inspection, or relocation referrals.
- **Market research:** compare agent activity, price ranges, and brokerages across cities.
- **CRM enrichment:** refresh phone, website, brokerage, and license details for agents you already know, using profile URLs.

### How to use the Zillow agents API in Python and JavaScript

Python, using the [Apify API client for Python](https://docs.apify.com/api/client/python):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/zillow-agent-leads-finder").call(run_input={
    "locations": ["Austin, TX"],
    "requireEmail": True,
    "maxItems": 100,
})

for agent in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(agent["name"], agent["email"], agent["phone"])
```

JavaScript, using the [Apify API client for JavaScript](https://docs.apify.com/api/client/js):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/zillow-agent-leads-finder').call({
    locations: ['Austin, TX'],
    requireEmail: true,
    maxItems: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((agent) => console.log(agent.name, agent.email, agent.phone));
```

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

This Actor uses pay-per-event pricing. Compute and proxy costs are included in the event prices, and your Apify plan sets your discount tier.

| Event | What it covers | Free | Bronze | Silver | Gold |
|-------|----------------|------|--------|--------|------|
| apify-actor-start | Once per run, per GB of memory (minimum one; one at the default 512 MB) | $0.005 | $0.005 | $0.005 | $0.005 |
| result | Each agent saved, including the profile email | $2.99 / 1,000 | $2.79 / 1,000 | $2.59 / 1,000 | $2.39 / 1,000 |
| past-deals | Each past sale in `pastSalesHistory` | $0.69 / 1,000 | $0.59 / 1,000 | $0.59 / 1,000 | $0.49 / 1,000 |
| additional-data | Each listing in `activeListingsHistory` or `rentalListingsHistory` | $0.99 / 1,000 | $0.89 / 1,000 | $0.79 / 1,000 | $0.79 / 1,000 |
| contact-email | Each new email found on an agent's website | $39 / 1,000 | $34 / 1,000 | $29 / 1,000 | $24 / 1,000 |

On the Free tier, a run of 1,000 agents with no add-ons costs $2.995: the $0.005 start fee plus $2.99 for the agents. Add-on events are charged only when you turn on that option. A `contact-email` is charged only when the lookup returns an address different from the profile email. Failed lookups and addresses already on the profile are free. Use [Maximum cost per run](https://docs.apify.com/platform/actors/running/runs-and-builds) to cap your spending: the Actor stops when the limit is reached.

### How does Zillow Agent Leads Finder work?

1. It opens Zillow's agent directory for each location and collects agent profiles page by page, removing duplicates across all your searches.
2. For larger locations it runs extra filtered searches, and for states it follows nearby-city links.
3. It reads each agent's public profile and saves the fields as one row.
4. If you turned on the add-ons, it pages through the agent's sold and active listings, and reads the agent's website homepage and contact pages to find an email.

### FAQ

**Are the emails included in the base price?**
Yes. If the Zillow profile shows an email, it is in the `email` field at no extra charge. The paid `contact-email` event only applies to the optional website lookup.

**How many agents come with an email and phone number?**
In our test runs of 4,457 agents across Los Angeles, Tampa, Delaware, and Texas, all 4,457 had a profile email, 4,456 had a phone number, and about 88% listed a website. Results vary by market, and agents far down Zillow's rankings may have less complete profiles.

**Why would I use the website email lookup if the profile already has an email?**
Some profile emails are lead-routing or team inboxes. The agent's website can show a more direct or business address, often a general one such as `info@`. It is saved separately as `contactEmail`, and `emailEnrichment.sourcePage` shows where it was found. Only addresses that match the agent's name or are general business inboxes on the agent's own site are returned, so many lookups end with no result: in a test of 100 agents in Tampa, 28 lookups found an address and 13 of those differed from the profile email. Only those 13 would be billed.

**Can I get every agent in a state?**
You can walk a state city by city with **Whole states**, and the number of agents you reach depends on how many cities and search pages Zillow exposes. For example, a complete walk of Delaware visited 71 cities and returned 1,357 agents. Zillow does not offer a full state export, so this Actor cannot guarantee every licensed agent, and very large states take long runs. Set **Max agents** to size the run.

**Why are some agents from other states in my results?**
Zillow's location search also returns agents who serve an area but are based elsewhere. The **Whole states** option leaves out agents whose business address is in another state. The **Locations** option returns them as Zillow does.

**Are the sales figures for one agent or a whole team?**
Some profiles report team totals. When they do, `salesStats.teamDisclaimer` carries Zillow's notice, such as "Sales numbers represent all team members".

**Do I need to set up a proxy?**
No. The Actor manages its own proxies, and that cost is included in the event prices.

**Can I schedule recurring runs?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run daily, weekly, or at any interval, then send results to your tools through [integrations](https://docs.apify.com/platform/integrations) or the [API](https://apify.com/parsebird/zillow-agent-leads-finder/api).

**Something is not working. What should I do?**
Open a ticket in the [Issues tab](https://apify.com/parsebird/zillow-agent-leads-finder/issues) with your run link, and we will look into it.

### Other real estate and lead generation Actors

- [Realtor.com Scraper](https://apify.com/parsebird/realtor-scraper): US property listings from Realtor.com
- [Homes.com Scraper](https://apify.com/parsebird/homes-com-scraper): property listings from Homes.com
- [LoopNet Commercial Property Scraper](https://apify.com/parsebird/loopnet-scraper): commercial real estate listings
- [Realtor.ca Property Scraper](https://apify.com/parsebird/realtor-ca-scraper): Canadian property listings
- [YellowPages USA Lead Generator](https://apify.com/parsebird/yellowpages-scraper): US local business leads
- [Website Email, Phone Numbers & Social Media Profiles Finder](https://apify.com/parsebird/website-contact-finder): contact details from any website
- [LinkedIn B2B Phone Number Scraper](https://apify.com/parsebird/linkedin-b2b-phone-number-scraper): B2B phone numbers from LinkedIn

### Is it legal to scrape Zillow agent data?

This Actor collects only information that agents publish on their public Zillow profiles and their own websites. It does not log in or access private data. However, results can include personal data such as names, email addresses, and phone numbers, which laws such as the GDPR and CCPA protect, and outreach is subject to rules such as CAN-SPAM and the TCPA. You are responsible for having a lawful basis for your use, respecting Zillow's terms, and following the rules that apply to you. If you are unsure, consult a lawyer. You can read more in Apify's post on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/zillow-agent-leads-finder/changelog.md

# Actor input Schema

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

Enter ZIP codes or cities, such as 78701 or Austin, TX. Include the state with a city name.

## `states` (type: `array`):

Pick states to walk city by city. Agents with a business address in another state are left out. Set Max agents to control the size and cost of the run.

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

Paste agent directory or agent profile URLs, such as https://www.zillow.com/professionals/real-estate-agent-reviews/99501/ or https://www.zillow.com/profile/Michael-Kayem. Filters already in a pasted URL are kept; the search filters below apply to Locations and Whole states only.

## `maxItems` (type: `integer`):

Set the maximum number of agents to save across the whole run. Set 0 for no limit.

## `enrichEmails` (type: `boolean`):

Visit each agent's own website to look for a contact email, saved as contactEmail. Billed only when a new address is found: lookups that find nothing, and addresses identical to the profile email, are free. The email shown on the Zillow profile is always included in the email field at no extra charge.

## `getPastSales` (type: `boolean`):

Save the agent's full sold history in pastSalesHistory, billed per past deal. Without this, the profile's few most recent sales are still included.

## `getActiveListings` (type: `boolean`):

Save every active for-sale listing in activeListingsHistory, billed per listing.

## `getRentalListings` (type: `boolean`):

Save every active rental listing in rentalListingsHistory, billed per listing.

## `maxCataloguePerAgent` (type: `integer`):

Cap each of the three lists above for each agent, to keep runs fast and costs predictable. Raise it for longer histories, or set 0 for no limit.

## `agentName` (type: `string`):

Enter a first or last name. Zillow matches whole names, so 'john' finds John but 'jo' does not.

## `topAgentsOnly` (type: `boolean`):

Search only agents carrying Zillow's Top Agent badge.

## `helpsBuyers` (type: `boolean`):

Search only agents Zillow lists as helping with buying.

## `helpsSellers` (type: `boolean`):

Search only agents Zillow lists as helping with selling.

## `specialties` (type: `array`):

Pick specialties. An agent must match all of them.

## `languages` (type: `array`):

Pick languages the agent speaks.

## `requireEmail` (type: `boolean`):

Save only agents whose Zillow profile shows an email. Others are skipped and not billed.

## `requirePhone` (type: `boolean`):

Save only agents whose Zillow profile shows a phone number. Others are skipped and not billed.

## `minRating` (type: `string`):

Enter a minimum average rating from 1 to 5, such as 4.5. Agents with no reviews are skipped when this is set.

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

Enter the minimum number of reviews.

## `splitLargeSearches` (type: `boolean`):

Zillow shows at most 25 pages per search. Keep this on to run extra searches by specialty and language when a location has more agents than that. Applies to Locations and directory URLs.

## `maxConcurrency` (type: `integer`):

Set how many agents to process at the same time.

## `maxRequestRetries` (type: `integer`):

Set how many times to retry a failed page, each time from a new IP address.

## Actor input object example

```json
{
  "locations": [
    "99501"
  ],
  "maxItems": 10,
  "enrichEmails": false,
  "getPastSales": false,
  "getActiveListings": false,
  "getRentalListings": false,
  "maxCataloguePerAgent": 20,
  "topAgentsOnly": false,
  "helpsBuyers": false,
  "helpsSellers": false,
  "requireEmail": false,
  "requirePhone": false,
  "splitLargeSearches": true,
  "maxConcurrency": 10,
  "maxRequestRetries": 10
}
```

# 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 = {
    "locations": [
        "99501"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/zillow-agent-leads-finder").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": ["99501"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/zillow-agent-leads-finder").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": [
    "99501"
  ],
  "maxItems": 10
}' |
apify call parsebird/zillow-agent-leads-finder --silent --output-dataset

```

## MCP server setup

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

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/7ufphJU3JZi2S8a6f/builds/Y30yGobPiIMff2L9J/openapi.json
