# Zillow Property Manager Scraper (`crawlerbros/zillow-property-manager-scraper`) Actor

Scrape Zillow property manager profiles: business name, phone, email, ratings, reviews, rental listings, specialties, and service areas. Search by city/state or provide direct profile URLs

- **URL**: https://apify.com/crawlerbros/zillow-property-manager-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.md):

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

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

## Zillow Property Manager Scraper

Scrape property manager profiles from Zillow's professional directory. Search by city/state to get contact details, ratings, reviews, rental listings, specialties, and service areas — with no manual browsing required.

---

### What data you get

| Field | Description |
|---|---|
| `name` | Manager's full name |
| `businessName` | Property management company name |
| `profileUrl` | Zillow profile URL |
| `phone` | Primary phone number |
| `email` | Contact email (when public) |
| `website` | Business website (when public) |
| `businessAddress` | Street address |
| `businessCity` / `businessState` / `businessZip` | Business location |
| `reviewRating` | Average star rating (0–5) |
| `reviewCount` | Total number of reviews |
| `isTopAgent` | Zillow Top Professional badge |
| `specialties` | Property types they manage |
| `languages` | Languages spoken |
| `serviceAreas` | Cities/neighborhoods served |
| `recentReviews` | Recent reviews with text, rating, date, reviewer name |
| `forRentListings` | Active rental listings under management |
| `location` | Search location that found this manager |
| `scrapedAt` | ISO-8601 scrape timestamp |

---

### Input options

#### Search by location
Set **Location** to a city and state (e.g. `Dallas, TX` or `Los Angeles, CA`). The scraper searches the Zillow property manager directory for that area and paginates through results.

#### Scrape specific URLs
Add Zillow property manager directory pages or individual profile URLs to **Start URLs**. This is useful when you already know which profiles to scrape or want to use a pre-filtered Zillow search URL.

#### Other settings

| Parameter | Default | Description |
|---|---|---|
| `maxManagers` | 50 | Maximum profiles to return (1–500) |
| `endPage` | 5 | Max directory pages to crawl per location (each ~15 results) |
| `maxReviews` | 10 | Max reviews per manager profile (0–20) |
| `proxy` | Residential | Apify proxy group — residential recommended for Zillow |

---

### Example output record

```json
{
  "name": "Jane Smith",
  "screenName": "jane-smith-abc123",
  "profileUrl": "https://www.zillow.com/profile/jane-smith-abc123/",
  "photoUrl": "https://photos.zillowstatic.com/fp/...",
  "businessName": "Premier Property Management",
  "businessAddress": "1234 Main St",
  "businessCity": "Dallas",
  "businessState": "TX",
  "businessZip": "75201",
  "phone": "(214) 555-0123",
  "email": "jane@premierpm.com",
  "isTopAgent": true,
  "reviewRating": 4.9,
  "reviewCount": 87,
  "specialties": ["Single Family Homes", "Condos", "Multi-Family"],
  "languages": ["English", "Spanish"],
  "serviceAreas": ["Dallas", "Plano", "Irving"],
  "recentReviews": [
    {
      "text": "Jane was incredibly responsive and kept us informed throughout the entire process.",
      "rating": 5,
      "date": "2025-03-15",
      "reviewerName": "John D."
    }
  ],
  "forRentListings": [
    {
      "address": "456 Oak Ave, Dallas, TX",
      "price": 2200,
      "beds": 3,
      "baths": 2,
      "url": "https://www.zillow.com/homedetails/..."
    }
  ],
  "location": "Dallas, TX",
  "scrapedAt": "2026-05-10T14:32:00+00:00"
}
````

***

### FAQs

**How many results can I get?**
Up to 500 per run (`maxManagers`). Each directory page returns ~15 managers, so setting `endPage` to 25 gives up to ~375 from a single location. Run with multiple locations to go higher.

**Do I need to provide cookies or login?**
No. The scraper accesses Zillow's public professional directory without any account.

**Why is residential proxy recommended?**
Zillow applies bot-detection on its pages. Residential proxy IPs are much less likely to be flagged than datacenter IPs.

**Can I scrape managers in Canada?**
Yes — Zillow lists Canadian property managers in the same directory. Use a Canadian city/province as the location (e.g. `Toronto, ON`).

**What if a field is missing?**
Fields that have no data on Zillow are omitted from the output record entirely (no nulls or empty strings).

**How do I get managers for multiple cities?**
Run the actor once per city, or add multiple entries to **Start URLs** using Zillow directory URLs for each city.

**Is this legal?**
This scraper accesses only publicly visible data on Zillow's website. Always review Zillow's Terms of Service and ensure your use case complies with applicable laws.

# Actor input Schema

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

City and state to search for property managers, e.g. 'Dallas, TX' or 'Los Angeles, CA'. Converted automatically to the Zillow directory slug.

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

Zillow property manager directory pages or individual profile URLs to scrape directly (overrides or supplements the Location field).

## `maxManagers` (type: `integer`):

Maximum number of property manager profiles to return.

## `endPage` (type: `integer`):

Maximum number of directory listing pages to crawl per location (each page has ~15 results).

## `maxReviews` (type: `integer`):

Maximum number of recent reviews to include per profile (capped server-side).

## `proxy` (type: `object`):

Apify proxy settings. Residential proxy is used automatically when available; leave default for best results.

## Actor input object example

```json
{
  "location": "Dallas, TX",
  "startUrls": [],
  "maxManagers": 50,
  "endPage": 5,
  "maxReviews": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `propertyManagers` (type: `string`):

Dataset containing all scraped Zillow property manager profiles.

# 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 = {
    "location": "Dallas, TX",
    "startUrls": [],
    "maxManagers": 50,
    "endPage": 5,
    "maxReviews": 10,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/zillow-property-manager-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 = {
    "location": "Dallas, TX",
    "startUrls": [],
    "maxManagers": 50,
    "endPage": 5,
    "maxReviews": 10,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/zillow-property-manager-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 '{
  "location": "Dallas, TX",
  "startUrls": [],
  "maxManagers": 50,
  "endPage": 5,
  "maxReviews": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call crawlerbros/zillow-property-manager-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow Property Manager Scraper",
        "description": "Scrape Zillow property manager profiles: business name, phone, email, ratings, reviews, rental listings, specialties, and service areas. Search by city/state or provide direct profile URLs",
        "version": "1.0",
        "x-build-id": "20PxaIWLDOd95Jhrx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~zillow-property-manager-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-zillow-property-manager-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/crawlerbros~zillow-property-manager-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-zillow-property-manager-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/crawlerbros~zillow-property-manager-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-zillow-property-manager-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": {
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City and state to search for property managers, e.g. 'Dallas, TX' or 'Los Angeles, CA'. Converted automatically to the Zillow directory slug."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Zillow property manager directory pages or individual profile URLs to scrape directly (overrides or supplements the Location field).",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxManagers": {
                        "title": "Max managers",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of property manager profiles to return.",
                        "default": 50
                    },
                    "endPage": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Maximum number of directory listing pages to crawl per location (each page has ~15 results).",
                        "default": 5
                    },
                    "maxReviews": {
                        "title": "Max reviews per manager",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of recent reviews to include per profile (capped server-side).",
                        "default": 10
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Residential proxy is used automatically when available; leave default for best results."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
