# Zillow Agent Reviews Scraper (`shahidirfan/zillow-agent-reviews-scraper`) Actor

Extract Zillow agent reviews, ratings, reviewer feedback, agent profiles, and reputation insights at scale. Get structured real estate agent review data for lead generation, market research, competitor analysis, sentiment tracking, and agent discovery.

- **URL**: https://apify.com/shahidirfan/zillow-agent-reviews-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 33.3% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Zillow Agent Reviews Scraper do?

Zillow Agent Reviews Scraper collects public customer reviews from one Zillow real estate agent profile. Provide a profile URL such as `https://www.zillow.com/profile/leonidsklyar/`, choose an optional review filter and sort order, and download clean one-review-per-record data for research, reputation monitoring, lead qualification, or review analysis.

### Why use Zillow Agent Reviews Scraper?

- **Single-profile focus** - Analyze one agent without collecting unrelated directory results.
- **Structured review records** - Get ratings, written comments, transaction summaries, review dates, category ratings, and public agent responses when available.
- **Flexible collection** - Set a result limit and a page cap for quick checks or larger review histories.
- **Apify-ready workflow** - Export JSON, CSV, Excel, XML, and other dataset formats, or connect runs to schedules, webhooks, and integrations.
- **Clean output** - Missing source values are omitted instead of being saved as empty or null fields.

### What data can you extract from Zillow?

| Field                  | Description                                         |
| ---------------------- | --------------------------------------------------- |
| `profile_url`          | Zillow profile used for the run                     |
| `agent_name`           | Agent name shown on Zillow                          |
| `business_name`        | Brokerage or business name when available           |
| `agent_rating_average` | Profile-level average rating                        |
| `agent_review_count`   | Profile-level review count                          |
| `review_id`            | Zillow review identifier                            |
| `reviewer_name`        | Published reviewer name when available              |
| `review_date`          | Review date text                                    |
| `rating`               | Individual review rating                            |
| `review_comment`       | Written customer feedback                           |
| `transaction_summary`  | Transaction details published with the review       |
| `sub_ratings`          | Category ratings such as knowledge or communication |
| `response`             | Public response from the agent when available       |
| `filter_by`            | Review category selected for the run                |
| `sort_by`              | Sort order selected for the run                     |
| `page_number`          | Review page containing the record                   |
| `scraped_at`           | UTC collection timestamp                            |

### How to use Zillow Agent Reviews Scraper

1. Open the Actor in Apify Console.
2. Paste one public Zillow agent profile URL.
3. Choose a review filter, sort order, result limit, and page limit if needed.
4. Run the Actor.
5. Preview the dataset or export it to JSON, CSV, Excel, XML, or your preferred integration.

### Input Parameters

| Parameter            | Type    | Required | Default     | Description                                                                                                                               |
| -------------------- | ------- | -------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `url`                | String  | Yes      | -           | Zillow profile URL, for example `https://www.zillow.com/profile/leonidsklyar/`                                                            |
| `filter_by`          | String  | No       | `all`       | `all`, `helped_me_buy`, `helped_me_sell`, `helped_me_buy_and_sell`, `connected_but_did_not_work_out`, or `renting_or_property_management` |
| `sort_by`            | String  | No       | `newest`    | `newest`, `rating_high_to_low`, or `rating_low_to_high`                                                                                   |
| `results_wanted`     | Integer | No       | `20`        | Maximum review records to save; use any positive integer                                                                                  |
| `max_pages`          | Integer | No       | `10`        | Maximum review pages to request; use any positive integer                                                                                 |
| `proxyConfiguration` | Object  | No       | Apify Proxy | Optional proxy settings for cloud runs                                                                                                    |

### Usage Examples

#### Basic review collection

Collect the first 20 reviews from a Zillow profile:

```json
{
    "url": "https://www.zillow.com/profile/leonidsklyar/",
    "results_wanted": 20
}
```

#### Filtered review collection

Collect reviews about buying experiences and order them by the highest rating:

```json
{
    "url": "https://www.zillow.com/profile/leonidsklyar/",
    "filter_by": "helped_me_buy",
    "sort_by": "rating_high_to_low",
    "results_wanted": 50,
    "max_pages": 5
}
```

#### Review filter and proxy configuration

Collect reviews from Zillow's "We connected, but it did not work out" category and use a residential proxy for a cloud run:

```json
{
    "url": "https://www.zillow.com/profile/leonidsklyar/",
    "filter_by": "connected_but_did_not_work_out",
    "sort_by": "newest",
    "results_wanted": 100,
    "max_pages": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Sample Output

```json
{
    "profile_url": "https://www.zillow.com/profile/leonidsklyar/",
    "encoded_zuid": "X1-ZUz63qktym998p_4234t",
    "agent_name": "Leonid Sklyar",
    "business_name": "Compass",
    "agent_rating_average": 5,
    "agent_review_count": 201,
    "review_id": "12345678",
    "reviewer_name": "Example reviewer",
    "review_date": "2025",
    "rating": 5,
    "rating_text": "5.0",
    "review_comment": "Leonid was responsive, knowledgeable, and helpful throughout the process.",
    "transaction_summary": "Bought a home in Brooklyn, NY.",
    "filter_by": "all",
    "sort_by": "newest",
    "page_number": 1,
    "source": "zillow.com",
    "scraped_at": "2026-08-14T12:00:00.000Z"
}
```

### Tips for best results

- Use a complete public URL from Zillow's `/profile/` path.
- Start with 10 or 20 results to confirm the profile and filter before a larger run.
- Use `max_pages` as a safety cap when an agent has a large review history.
- A missing optional field means Zillow did not publish that value for the record.
- Public pages and review categories can change. Report unexpected changes through the Actor's Issues tab.

### Integrations

- **Google Sheets** - Review feedback in a spreadsheet.
- **Webhooks** - Notify downstream systems when a run finishes.
- **Make or Zapier** - Route new review records into business workflows.
- **Apify API** - Retrieve datasets programmatically and schedule repeat runs.

### Frequently Asked Questions

#### Can I collect reviews for more than one agent in a run?

No. This Actor is designed for one profile URL per run so every record belongs to the requested agent. Start separate runs when you need multiple profiles.

#### Can I sort reviews by rating?

Yes. Use `rating_high_to_low` or `rating_low_to_high` in `sort_by`.

#### Can I filter reviews by buying or selling?

Yes. Use `helped_me_buy`, `helped_me_sell`, `helped_me_buy_and_sell`, `connected_but_did_not_work_out`, or `renting_or_property_management` in `filter_by`.

#### Can I export the dataset to CSV or Excel?

Yes. Apify datasets can be downloaded in CSV, Excel, JSON, XML, and other supported formats.

#### Is it legal to collect Zillow reviews?

Public data collection can be subject to laws, privacy requirements, and Zillow's terms. You are responsible for using the Actor lawfully and respectfully.

### Related Actors

- [iProperty Scraper](https://apify.com/shahidirfan/iproperty-scraper) - Collect structured real estate listings from iProperty.
- [Propertyfinder Scraper](https://apify.com/shahidirfan/propertyfinder-scraper) - Extract property data from Property Finder listings.

### Support

For issues or feature requests, use the Issues tab on the Actor page or contact the developer through Apify.

### Legal Notice

This Actor is intended for legitimate collection of publicly available information. Follow applicable laws, privacy obligations, and Zillow's terms when using the output.

# Actor input Schema

## `url` (type: `string`):

A public Zillow profile URL such as https://www.zillow.com/profile/leonidsklyar/.

## `filter_by` (type: `string`):

Optional Zillow review category filter.

## `sort_by` (type: `string`):

Order reviews by date or rating.

## `results_wanted` (type: `integer`):

Maximum number of review records to save.

## `max_pages` (type: `integer`):

Maximum number of review pages to request. Zillow returns up to 10 reviews per page.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy settings for cloud runs.

## Actor input object example

```json
{
  "url": "https://www.zillow.com/profile/leonidsklyar/",
  "filter_by": "all",
  "sort_by": "newest",
  "results_wanted": 20,
  "max_pages": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "url": "https://www.zillow.com/profile/leonidsklyar/",
    "filter_by": "all",
    "sort_by": "newest",
    "results_wanted": 20,
    "max_pages": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/zillow-agent-reviews-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 = {
    "url": "https://www.zillow.com/profile/leonidsklyar/",
    "filter_by": "all",
    "sort_by": "newest",
    "results_wanted": 20,
    "max_pages": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/zillow-agent-reviews-scraper").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 '{
  "url": "https://www.zillow.com/profile/leonidsklyar/",
  "filter_by": "all",
  "sort_by": "newest",
  "results_wanted": 20,
  "max_pages": 10
}' |
apify call shahidirfan/zillow-agent-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/87M4Tsyrch8MjtYpF/builds/aifPlcIdYYaFSHhqD/openapi.json
