# Zillow Scraper — Listings, Property Details, Zestimate & Agents (`pro100chok/zillow-scraper-all-in-one`) Actor

Scrape Zillow for-sale, for-rent, and sold listings and extract full property details, Zestimate home values, photos, price & tax history, schools, and real-estate agent contacts. Search by city, ZIP, URL, or address — with automatic bypass of Zillow's 500-result limit. Export to JSON, CSV, or Excel

- **URL**: https://apify.com/pro100chok/zillow-scraper-all-in-one.md
- **Developed by:** [Raven](https://apify.com/pro100chok) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 listing scrapeds

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/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 Scraper — Listings, Property Details, Zestimate® & Agents 🏡

**Scrape Zillow from $2 per 1,000 listings** (from **$1.30 per 1,000 on paid plans**) — no login, no Zillow API key, no code, and no proxies to configure. Point this actor at a city, a ZIP code, a Zillow search URL, or specific property pages and get clean, structured **JSON, CSV, or Excel** in one run.

One actor covers the **whole Zillow surface**: search listings (for sale, for rent, sold), full property details with 100+ facts, **Zestimate®** home values, and real-estate **agent** profiles with contact data. Whether you're doing real-estate market research, building a lead list, feeding a CRM, comparing prices, or tracking inventory across a metro area — it's all here.

---

### What does this Zillow Scraper do?

Zillow doesn't offer an open, free public API for bulk listing data — the official Zillow APIs are gated behind partner approval, key limits, and restricted fields. This actor is a practical **Zillow API alternative** (an *unofficial Zillow API*): it reads the same publicly visible data the website shows and returns it as a structured dataset, with no approval process and no daily call ceiling.

Pick a **mode** — or just paste any Zillow URL and let the actor auto-detect it:

| Mode | What you point it at | What you get back |
|------|----------------------|-------------------|
| 🔎 **Search listings** | A city, ZIP, county, neighborhood, or Zillow search URL | Every home matching your filters — for sale, for rent, or recently sold — ~30 fields per card |
| 🏠 **Property details** | Zillow `/homedetails/` URLs or ZPIDs | Full property record: **100+ facts**, all photos, price & tax history, schools, HOA, and the listing agent |
| 💰 **Zestimate®** | A URL, ZPID, or plain street address | Fast home-value + rent estimate lookup |
| 🧑‍💼 **Agent profiles** | An agent profile URL or a location to discover agents in | Agent name, email, phones, rating, license, active listings, and past sales |

**Auto-detect:** drop a mix of Zillow URLs into **Start URLs** and the actor routes each one — search page → search, property page → details, profile page → agent — automatically.

---

### Why use this Zillow Scraper?

- ✅ **Four scrapers in one** — search, property details, Zestimate®, and agents, instead of stitching three separate actors together.
- ✅ **Beats Zillow's ~500-result on-screen cap** — for large metros the actor recursively splits the map into quadrants so you can pull **thousands of listings per search** (details below).
- ✅ **Every filter Zillow has** — price, beds, baths, sqft, lot size, year built, HOA, days on market, keywords, home type, plus pool / garage / A-C / waterfront / 3D-tour / basement / price-reduced toggles.
- ✅ **All listing categories** — for-sale-by-agent, FSBO, new construction, coming soon, auctions, and foreclosures, plus for-rent and recently-sold.
- ✅ **100+ fields per property** on detail mode — including the full `reso_*` fact set (heating, cooling, appliances, parking, roof, flooring, view, HOA, and more).
- ✅ **Listing-agent & broker contact data** — name, phone, email, license number, brokerage, MLS ID (when Zillow exposes them).
- ✅ **One-click enrichment** — flip on `fetchDetails` to turn any search into full property records in a single run.
- ✅ **Pure HTTP, no headless browser** — browser-grade TLS fingerprint impersonation + residential-proxy rotation with automatic retries, so it's efficient and reliable without a slow, heavy browser.
- ✅ **Spreadsheet-ready** — flip on `flatOutput` for clean CSV/Excel columns; export as JSON, CSV, Excel, XML, or HTML.

#### This actor vs. the official API vs. typical Zillow scrapers

| | Official Zillow API | Typical Zillow scraper | **This actor** |
|---|---|---|---|
| Access | Partner approval + API key | Usually one narrow job per actor | **No key, no login, one actor** |
| Coverage | Restricted, limited fields | Usually search *or* details *or* agents | **Search + details + Zestimate® + agents** |
| Result cap | Rate/quota limited | Often stops at Zillow's on-screen cap | **Map-quadrant split past the cap** |
| Fields per property | Limited set | Basic card fields | **100+ facts + photos + history + schools** |
| Filters | Varies | A handful | **All Zillow filters + category toggles** |
| Output | JSON | JSON | **JSON, CSV, Excel, XML, HTML** |
| Pricing | Usage tiers / negotiated | Varies | **From $2 / 1,000 (free plan), $1.30 / 1,000 paid** |

*Competitor-column claims are generalized; individual actors vary.*

---

### What data can you extract from Zillow?

**Search & property detail data, grouped:**

| Category | Fields |
|---|---|
| **Identity** | ZPID, detail URL, MLS ID, parcel ID, county FIPS |
| **Address & location** | Street, city, state, ZIP, county, neighborhood, latitude, longitude, time zone |
| **Listing** | Status (for sale / for rent / sold), price, price label, last sold price, days on Zillow, time on Zillow, page views, favorites |
| **Property specs** | Beds, baths, living area, lot size, year built, home type, stories, levels, condition |
| **Financials** | Zestimate®, Rent Zestimate®, high/low estimate %, tax-assessed value, annual tax, property tax rate, monthly HOA, price/sqft |
| **Interior & building** | Heating, cooling, appliances, flooring, fireplace, parking, roof, foundation, construction materials, architectural style |
| **Agent & broker** | Agent name, email, phone, license number, brokerage, co-agent, MLS name |
| **History** | Full price history and tax history (date, price, event, source) |
| **Community** | Assigned/nearby schools with rating, grades, distance, level; subdivision; zoning |
| **Media** | All listing photos (highest resolution), main image, street-view image, photo count, 3D-model / video flags |

**Per record type — field counts:**

- **Search listing** → ~30 fields per home (address, price, beds/baths, area, lot, lat/long, home type, days on Zillow, Zestimate®, Rent Zestimate®, tax-assessed value, broker, image, 3D/video flags).
- **Property detail** → **100+ fields** per home (everything above, plus the full `reso_*` extended fact set, `photos[]`, `priceHistory[]`, `taxHistory[]`, and `schools[]`).
- **Zestimate®** → 16 fields (Zestimate®, Rent Zestimate®, high/low %, price, last sold price, tax-assessed value, property tax rate + address).
- **Agent profile** → name, business name, email, cell/brokerage/business phones, rating average & count, business address, license(s), service areas, for-sale/for-rent counts, past-sales total, plus `forSaleListings[]`, `pastSales[]`, and optional `reviews[]`.

---

### How to scrape Zillow step by step

1. **Create a free Apify account** — it takes a minute and comes with **$5 in free monthly credits** (≈ 2,500 listings a month, free).
2. **Open the Zillow Scraper** and choose a **Mode** (or just paste Zillow URLs into **Start URLs**).
3. **Add your target** — a location like `Austin, TX`, a ZIP like `90210`, a Zillow search URL, or property/agent URLs.
4. **Apply filters** — price, beds, baths, home type, days on market, features, and set **Max results**.
5. **Click Start** and watch the run.
6. **Download your data** — JSON, CSV, Excel, XML, or HTML from the **Dataset** tab, or pull it via the Apify API.

---

### How to get more than 500 results from a Zillow search

Zillow only shows about **500 homes on screen** for any single search, and its underlying query returns at most **20 pages × 41 results = 820** per query. This actor works around that automatically:

1. It resolves your location or URL to the map bounds Zillow uses.
2. It paginates that region to the query limit.
3. When a region holds **more than 820 results**, it **recursively splits the map into four quadrants** and repeats — zooming in until each rectangle fits under the cap.

The result: set **Max results** to `0` (unlimited) or a large number, and the actor keeps subdividing to pull **far beyond the on-screen 500-home cap** — thousands of listings from a single dense metro. No manual zooming, no copy-pasting map tiles.

---

### Enrich every listing with full property details

Search cards carry ~30 fields. Turn on **`fetchDetails`** and, for every listing found, the actor also opens its property page to add year built, price & tax history, assigned schools, listing-agent contact, all photos, and the 100+ `reso_*` facts — merged into the same record. One run, search → enriched dataset. (Each enriched listing adds a property-detail charge — see pricing.)

---

### Input parameters

| Parameter | Type | Description |
|---|---|---|
| `mode` | select | `search`, `propertyDetail`, `zestimate`, or `agent`. |
| `startUrls` | array | Any Zillow URLs — search, property, or agent. Auto-routed to the right mode. |
| `searchUrls` | array | Zillow search / region URLs (including `?searchQueryState=` URLs). |
| `locations` | array | Free text: `"Austin, TX"`, `"90210"`, `"Los Angeles County, CA"`. |
| `listingType` | select | `forSale`, `forRent`, or `sold`. |
| `forSaleByAgent`, `forSaleByOwner`, `newConstruction`, `comingSoon`, `auction`, `foreclosures` | boolean | For-sale category toggles. |
| `priceMin` / `priceMax` | integer | Price (or monthly rent) range. |
| `bedsMin` / `bedsMax`, `bathsMin` / `bathsMax` | integer | Bed / bath range. |
| `sqftMin` / `sqftMax`, `lotSizeMin` / `lotSizeMax` | integer | Living-area / lot-size range (sqft). |
| `yearBuiltMin` / `yearBuiltMax` | integer | Year-built range. |
| `hoaMax` | integer | Max monthly HOA fee. |
| `homeTypes` | array | `houses`, `townhomes`, `condos`, `apartments`, `multiFamily`, `manufactured`, `lotsLand`. |
| `daysOnZillow` | select | `1`, `7`, `14`, `30`, `90`, `6m`, `12m`, `24m`, `36m` (or empty for any). |
| `keywords` | string | Free-text keywords (max 99 chars), e.g. `"pool, view, remodeled"`. |
| `hasPool`, `hasGarage`, `hasAirConditioning`, `isWaterfront`, `has3DTour`, `hasBasement`, `priceReducedOnly` | boolean | Feature toggles. |
| `sort` | select | `relevance`, `newest`, `price_desc`, `price_asc`, `beds`, `baths`, `sqft`, `lot`, `yearBuilt`, `priceReduced`. |
| `maxItems` | integer | Cap on listings. `0` = unlimited (auto-splits the map). |
| `fetchDetails` | boolean | Enrich each search listing with its full property page. |
| `propertyUrls`, `zpids` | array | Targets for Property details / Zestimate mode. |
| `zestimateItems` | array | Zestimate lookups: URL, ZPID, or address. |
| `includePhotos`, `includeHistory`, `includeSchools`, `includeResoFacts` | boolean | Toggle detail sections (all on by default). |
| `agentUrls` | array | Agent profile URLs, or a location to discover agents in. |
| `includeAgentListings`, `includeAgentPastSales`, `includeAgentReviews` | boolean | Agent output sections. |
| `maxAgentsPerLocation` | integer | Cap agents discovered per location. |
| `flatOutput` | boolean | Flatten nested fields for CSV/Excel. |
| `maxConcurrency` | integer | Pages fetched in parallel (default 6, max 30). |
| `maxRetries` | integer | Retries per blocked request (each rotates the proxy). |
| `proxyConfiguration` | object | Proxy settings. US residential is strongly recommended (default). |

---

### Ready-to-paste input recipes

**1. All homes for sale in a city, under $750k, 3+ beds**
```json
{
  "mode": "search",
  "locations": ["Austin, TX"],
  "listingType": "forSale",
  "priceMax": 750000,
  "bedsMin": 3,
  "maxItems": 500
}
````

**2. Rentals under $3,000 with a pool (LA condos & apartments)**

```json
{
  "mode": "search",
  "locations": ["Los Angeles, CA"],
  "listingType": "forRent",
  "priceMax": 3000,
  "hasPool": true,
  "homeTypes": ["condos", "apartments"]
}
```

**3. Recently sold homes in a ZIP, fully enriched with details**

```json
{
  "mode": "search",
  "locations": ["78701"],
  "listingType": "sold",
  "fetchDetails": true,
  "maxItems": 100
}
```

**4. Foreclosures & price reductions across a metro (unlimited)**

```json
{
  "mode": "search",
  "locations": ["Phoenix, AZ"],
  "listingType": "forSale",
  "forSaleByAgent": false,
  "forSaleByOwner": false,
  "newConstruction": false,
  "comingSoon": false,
  "auction": false,
  "foreclosures": true,
  "priceReducedOnly": true,
  "sort": "newest",
  "maxItems": 0
}
```

**5. Full details for specific properties**

```json
{
  "mode": "propertyDetail",
  "propertyUrls": [
    "https://www.zillow.com/homedetails/20224-W-Marlow-Ln-Northridge-CA-91326/442607266_zpid/"
  ]
}
```

**6. Home-value (Zestimate®) lookups by address, URL, or ZPID**

```json
{
  "mode": "zestimate",
  "zestimateItems": [
    "1600 Pennsylvania Ave, Washington, DC",
    "442607266",
    "https://www.zillow.com/homedetails/509-Gothic-Ave-Crested-Butte-CO-81224/113419231_zpid/"
  ]
}
```

**7. Agents in a city, with active listings and past sales**

```json
{
  "mode": "agent",
  "agentUrls": ["Los Angeles, CA"],
  "maxAgentsPerLocation": 25,
  "includeAgentListings": true,
  "includeAgentPastSales": true
}
```

***

### Output examples

**Search listing**

```json
{
  "zpid": "113419231",
  "url": "https://www.zillow.com/homedetails/509-Gothic-Ave-Crested-Butte-CO-81224/113419231_zpid/",
  "statusType": "FOR_SALE",
  "statusText": "House for sale",
  "price": 2950000,
  "priceLabel": "$2,950,000",
  "address": "509 Gothic Avenue, Crested Butte, CO 81224",
  "city": "Crested Butte",
  "state": "CO",
  "zipcode": "81224",
  "beds": 3,
  "baths": 3,
  "area": 1660,
  "lotAreaValue": 6098.4,
  "latitude": 38.8718,
  "longitude": -106.98193,
  "homeType": "SINGLE_FAMILY",
  "daysOnZillow": 4,
  "zestimate": 2810200,
  "rentZestimate": 3572,
  "taxAssessedValue": 2422570,
  "has3DModel": true
}
```

**Property detail** (abbreviated — the full record carries 100+ fields)

```json
{
  "zpid": "442607266",
  "url": "https://www.zillow.com/homedetails/.../442607266_zpid/",
  "streetAddress": "20224 W Marlow Ln",
  "city": "Northridge",
  "state": "CA",
  "zipcode": "91326",
  "homeStatus": "FOR_SALE",
  "price": 1195000,
  "zestimate": 1180400,
  "rentZestimate": 4900,
  "bedrooms": 4,
  "bathrooms": 3,
  "livingArea": 2456,
  "yearBuilt": 1972,
  "monthlyHoaFee": 0,
  "propertyTaxRate": 1.19,
  "description": "Beautifully remodeled single-story home ...",
  "agentName": "Jane Doe",
  "agentPhoneNumber": "(818) 555-0142",
  "agentLicenseNumber": "01234567",
  "brokerName": "Pinnacle Estate Properties",
  "reso_heating": ["Central"],
  "reso_cooling": ["Central Air"],
  "reso_parking": ["Garage - 2 spaces"],
  "photos": ["https://photos.zillowstatic.com/fp/....jpg"],
  "priceHistory": [{ "date": "2026-06-01", "price": 1195000, "event": "Listed for sale" }],
  "taxHistory": [{ "time": 1704067200000, "taxPaid": 12500, "value": 980000 }],
  "schools": [{ "name": "Beckford Charter", "rating": 8, "level": "Elementary", "distance": 0.4 }]
}
```

**Zestimate®**

```json
{
  "zpid": "113419231",
  "streetAddress": "509 Gothic Avenue",
  "city": "Crested Butte",
  "state": "CO",
  "zipcode": "81224",
  "homeStatus": "FOR_SALE",
  "price": 2950000,
  "zestimate": 2810200,
  "rentZestimate": 3572,
  "zestimateLowPercent": "5",
  "zestimateHighPercent": "5",
  "taxAssessedValue": 2422570,
  "propertyTaxRate": 0.53
}
```

**Agent profile**

```json
{
  "name": "Pinnacle Estate Properties Inc",
  "email": "example@brokerage.com",
  "phoneCell": "(818) 497-7941",
  "ratingAverage": 5,
  "ratingCount": 1060,
  "businessAddress": "9137 Reseda Blvd. Northridge CA 91324",
  "forSaleCount": 36,
  "pastSalesTotal": 5346,
  "profileUrl": "https://www.zillow.com/profile/PinnacleEstateProp/"
}
```

***

### Common mistakes that return zero or fewer results

- **Getting fewer results than the map shows?** Zillow caps a single query at ~820 results. Set `maxItems` to `0` and the actor auto-splits the map into quadrants to go past it — but very large metros still take longer, so let the run finish.
- **A location returns nothing?** Use a real Zillow-recognized place: `"Austin, TX"`, a 5-digit ZIP, or `"Travis County, TX"`. A misspelled or non-US location won't resolve.
- **For-sale toggles all off = no for-sale results.** In `forSale` mode, at least one of `forSaleByAgent` / `forSaleByOwner` / `newConstruction` / `comingSoon` / `auction` / `foreclosures` must be on.
- **`homeTypes` uses specific values.** Use `houses`, `condos`, `townhomes`, `apartments`, `multiFamily`, `manufactured`, or `lotsLand` — not `house` or `single-family`.
- **Property/Zestimate mode needs property inputs.** Put `/homedetails/` URLs or ZPIDs in `propertyUrls` / `zpids` / `zestimateItems`, not in `locations`.
- **Null fields are normal.** Zillow doesn't publish every field for every home (agent email and some `reso_*` facts are often missing). The actor returns what's public and drops empty fields.
- **Rentals price = monthly rent.** `priceMin` / `priceMax` are interpreted as monthly rent when `listingType` is `forRent`.

***

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

This actor uses Apify's **pay-per-event** model: you're charged a fixed price per record delivered, and the price already **includes proxies and platform usage** — no separate add-ons, no surprise fees.

| Event | Free plan | Paid plans (from) |
|---|---|---|
| **Listing scraped** (one search result) | $2.00 / 1,000 | **$1.30 / 1,000** |
| **Property detail scraped** (100+ facts) | $3.00 / 1,000 | **$1.50 / 1,000** |
| **Zestimate® lookup** | $2.00 / 1,000 | **$1.00 / 1,000** |
| **Agent profile scraped** | $5.00 / 1,000 | **$3.20 / 1,000** |

Paid tiers (Bronze → Diamond) unlock the lower "from" prices automatically as your Apify plan grows.

**Worked examples** (free-plan rates; paid plans cost less):

| What you scrape | How it's charged | Cost |
|---|---|---|
| 5,000 for-sale listings | 5,000 × listing | **$10.00** ($6.50 paid) |
| 1,000 listings **+ full details** | 1,000 listing + 1,000 detail | **$5.00** ($2.80 paid) |
| 2,000 Zestimate® lookups | 2,000 × zestimate | **$4.00** ($2.00 paid) |
| 500 agent profiles | 500 × agent | **$2.50** ($1.60 paid) |

**Free plan translation:** Apify's Free plan gives **$5 in credits every month**, which buys roughly **2,500 listings**, or **1,600 property details**, or **1,000 agent profiles**, or **2,500 Zestimate® lookups** — free, every month.

**Stay in control:** set **Max results** and/or a per-run charge limit, and the actor stops cleanly when the budget is reached.

***

### Integrations

Run the Zillow Scraper on a schedule and push data anywhere without writing glue code. On the Apify platform you can connect it to:

- **Make**, **Zapier**, and **n8n** for no-code automations
- **Google Sheets**, **Slack**, **Airbyte**, **GitHub**, and Google Drive
- **Webhooks** for real-time run-completion events (BI tools, CRMs, alerts)
- **API clients** for **Python** and **JavaScript/Node.js** (`apify-client`) and the **Apify CLI**
- **Schedules** to run daily/weekly and keep a dataset in sync (great for price-drop and new-listing tracking)

***

### Use Zillow data with AI agents (MCP)

This actor works with the **Apify MCP server**, so AI assistants like **Claude**, **ChatGPT**, and **Cursor** can run it and read the results as a tool. Point your agent at the Apify MCP server and prompt it in plain language, for example:

> "Find every 3-bed house for sale under $600k in Austin, TX, enrich each with the listing agent's phone, and give me a CSV."

The agent triggers the scraper, waits for the run, and pulls the dataset back — no manual export.

***

### Popular use cases

- **Real-estate market research** — track prices, inventory, and days-on-market by city, ZIP, or neighborhood.
- **Lead generation for agents & investors** — build lists of FSBO homes, price-reduced listings, or agent contacts.
- **Comps & valuation** — compare Zestimate® vs. list vs. sold price across an area.
- **CRM & portal feeds** — keep an internal search portal or CRM stocked with fresh listings.
- **Investment sourcing** — monitor foreclosures, auctions, and motivated-seller signals metro-wide.
- **AI & analytics** — feed housing data into dashboards, predictive models, or LLMs.

***

### Is it legal to scrape Zillow?

Scraping **publicly available** data — such as property prices, addresses, and listing attributes — is generally legal. This actor only reads data that is publicly visible on Zillow.

Be aware that results can include **personal information** for real-estate agents (a public professional role). Personal data is protected by **GDPR** (EU Regulation 2016/679), **CCPA**, and similar laws — only collect and process it if you have a legitimate basis, and never use it for spam or harassment. If you're unsure whether your use case is compliant, consult a lawyer.

For more background, see Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

***

### FAQ

#### Does Zillow have a public API?

Zillow offers several official APIs, but they're gated behind partner approval, API keys, usage limits, and restricted fields — which is why most people use a scraper as a **Zillow API alternative** for open, bulk access to publicly visible data.

#### Do I need a Zillow account or login?

No. No Zillow account, login, or API key is required.

#### Can I get more than 500 results for a big city?

Yes. Zillow caps a single query at ~820 results and shows ~500 on screen. Set `maxItems` to `0` (or a large number) and the actor automatically splits the map into quadrants to pull far beyond that.

#### Can I get the listing agent's contact info?

Yes — property details include the listing agent's name, phone, license number, and brokerage (and email when Zillow exposes it). For full agent profiles with ratings and past sales, use **Agent** mode.

#### Do I need proxies?

No — proxy rotation is built in and included in the price. US residential proxies are used by default; you can supply your own under Proxy configuration if you prefer.

#### Which locations are supported?

Any US location Zillow covers — cities, ZIP codes, counties, and neighborhoods. Results come back in English and USD.

#### How fresh is the data?

It's pulled live from Zillow at run time, so it reflects what's on the site right now.

#### Can I scrape for-rent and recently-sold homes too?

Yes. Set `listingType` to `forSale`, `forRent`, or `sold` — all three work the same way.

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

Yes — every run writes a dataset you can download as JSON, CSV, Excel, XML, or HTML. Turn on `flatOutput` for the cleanest spreadsheet columns.

#### Will I be charged for searches that return nothing?

No. You're charged per record delivered. A location that resolves to zero listings produces no listing charges.

#### Why are some fields null or missing?

Zillow doesn't publish every field for every home. Agent emails and some extended (`reso_*`) facts are frequently unavailable — the actor returns what's public and omits empty fields.

#### Can I schedule it to run automatically?

Yes — use Apify **Schedules** to run daily or weekly and keep a dataset up to date.

#### What's a Zestimate®?

It's Zillow's estimated market value (and Rent Zestimate® for estimated rent). Zestimate® mode returns it fast for any home by URL, ZPID, or plain address.

#### How do I get more results per run?

Increase `maxItems` (or set `0`), keep filters reasonable, and let large-metro runs finish — the quadrant split can take longer on dense areas.

***

### Feedback & support

Found a bug or need a field the actor doesn't return yet? Open an issue on the actor's **Issues** tab — please include your input configuration and, if possible, a shared run link so it can be reproduced quickly.

***

### More real-estate & lead-gen scrapers by this developer

- [Apartments.com Scraper — Rentals, Prices & Reviews](https://apify.com/pro100chok/apartments-scraper-usage) — rental listings to complement Zillow.
- [Website Contact Scraper — Bulk Emails, Phones & Socials](https://apify.com/pro100chok/extract-emails) — enrich agent/broker leads with contact data.
- [Google Maps Scraper — Emails, Reviews & Photos](https://apify.com/pro100chok/google-maps-scraper) — local business & lead data.
- [Booking.com Scraper — Hotels, Prices, Reviews & Host Data](https://apify.com/pro100chok/booking-all-in-one-scraper) — property & hospitality data.
- [Facebook Ads Library Scraper — Meta & Instagram Ad Spy](https://apify.com/pro100chok/meta-ads-library-scraper) — real-estate ad & competitor research.
- [TripAdvisor Hotels & Reviews Scraper](https://apify.com/pro100chok/tripadvisor-all-in-one) — reviews & hospitality listings.

***

*This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Zillow, Inc. or its subsidiaries. Zillow® and Zestimate® are trademarks of Zillow, Inc. All trademarks are the property of their respective owners.*

**Tags:** zillow scraper, zillow api, zillow api alternative, zillow data scraper, zillow listings scraper, zillow property scraper, real estate scraper, zillow zestimate scraper, zillow agent scraper, real estate agent leads, zillow rentals scraper, zillow sold listings, zillow for sale, foreclosure scraper, fsbo scraper, property data api, real estate data, zpid scraper, zillow search scraper, zillow zip code search

# Actor input Schema

## `mode` (type: `string`):

Pick a mode. Search finds listings by location/URL/ZIP; Property details returns the full data for specific homes; Zestimate returns fast valuations; Agent returns real-estate agent profiles.

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

Optional shortcut. Paste any Zillow URLs — search pages, property (homedetails) pages, or agent profiles. The actor routes each to the right mode automatically.

## `searchUrls` (type: `array`):

Zillow search / region URLs (e.g. https://www.zillow.com/homes/Austin,-TX\_rb/ or a URL containing ?searchQueryState=).

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

Free-text locations, e.g. "Austin, TX", "90210", "Los Angeles County, CA".

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

Whether to search homes for sale, for rent, or recently sold.

## `forSaleByAgent` (type: `boolean`):

Include agent-listed homes (for-sale searches).

## `forSaleByOwner` (type: `boolean`):

Include for-sale-by-owner homes (for-sale searches).

## `newConstruction` (type: `boolean`):

Include new-construction homes (for-sale searches).

## `comingSoon` (type: `boolean`):

Include coming-soon homes (for-sale searches).

## `auction` (type: `boolean`):

Include auction homes (for-sale searches).

## `foreclosures` (type: `boolean`):

Include foreclosure homes (for-sale searches).

## `priceMin` (type: `integer`):

Minimum price (or monthly rent for rentals).

## `priceMax` (type: `integer`):

Maximum price (or monthly rent for rentals).

## `bedsMin` (type: `integer`):

Minimum number of bedrooms.

## `bedsMax` (type: `integer`):

Maximum number of bedrooms.

## `bathsMin` (type: `integer`):

Minimum number of bathrooms.

## `bathsMax` (type: `integer`):

Maximum number of bathrooms.

## `sqftMin` (type: `integer`):

Minimum living area in square feet.

## `sqftMax` (type: `integer`):

Maximum living area in square feet.

## `lotSizeMin` (type: `integer`):

Minimum lot size in square feet.

## `lotSizeMax` (type: `integer`):

Maximum lot size in square feet.

## `yearBuiltMin` (type: `integer`):

Only homes built in or after this year.

## `yearBuiltMax` (type: `integer`):

Only homes built in or before this year.

## `hoaMax` (type: `integer`):

Maximum monthly HOA fee.

## `homeTypes` (type: `array`):

Restrict to specific property types. Leave empty for all.

## `daysOnZillow` (type: `string`):

Only homes listed within this timeframe.

## `keywords` (type: `string`):

Free-text keywords (max 99 chars), e.g. "pool, view, remodeled".

## `hasPool` (type: `boolean`):

Only homes with a pool.

## `hasGarage` (type: `boolean`):

Only homes with a garage.

## `hasAirConditioning` (type: `boolean`):

Only homes with air conditioning.

## `isWaterfront` (type: `boolean`):

Only waterfront homes.

## `has3DTour` (type: `boolean`):

Only homes with a 3D tour.

## `hasBasement` (type: `boolean`):

Only homes with a (finished) basement.

## `priceReducedOnly` (type: `boolean`):

Only homes with a recent price reduction.

## `sort` (type: `string`):

Sort order of search results.

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

Cap the number of listings. Use 0 for unlimited (the actor auto-splits the map to bypass Zillow's 500-result cap).

## `fetchDetails` (type: `boolean`):

For every listing found, also open its property page to add year built, price/tax history, schools, agent contact, all photos, and 100+ facts. Slower and adds a details charge per listing.

## `propertyUrls` (type: `array`):

Zillow homedetails URLs, e.g. https://www.zillow.com/homedetails/.../12345\_zpid/

## `zpids` (type: `array`):

Zillow property IDs (numbers).

## `zestimateItems` (type: `array`):

Used when Mode = Zestimate. Accepts property URLs, ZPIDs, or free-text addresses.

## `includePhotos` (type: `boolean`):

Include every listing photo (highest resolution) in property details.

## `includeHistory` (type: `boolean`):

Include price history and tax history in property details.

## `includeSchools` (type: `boolean`):

Include nearby/assigned schools in property details.

## `includeResoFacts` (type: `boolean`):

Include the extended fact set (heating, cooling, parking, HOA, appliances, etc.).

## `agentUrls` (type: `array`):

Zillow agent profile URLs (https://www.zillow.com/profile/<name>/) or a location to discover agents in (e.g. "Los Angeles, CA").

## `includeAgentListings` (type: `boolean`):

Include the agent's active for-sale/for-rent listings.

## `includeAgentPastSales` (type: `boolean`):

Include a sample of the agent's past sales.

## `includeAgentReviews` (type: `boolean`):

Include the agent's written reviews.

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

When a location is given instead of a profile URL, cap how many agents to fetch.

## `flatOutput` (type: `boolean`):

Flatten nested fields to a single level (nested lists become JSON strings). Handy for spreadsheet export.

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

Maximum number of pages fetched in parallel.

## `maxRetries` (type: `integer`):

How many times to retry a blocked request (each retry rotates the proxy).

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

US residential proxies are strongly recommended. To test with your own proxy, use the Custom proxies tab.

## Actor input object example

```json
{
  "mode": "search",
  "startUrls": [],
  "searchUrls": [],
  "locations": [
    "Austin, TX"
  ],
  "listingType": "forSale",
  "forSaleByAgent": true,
  "forSaleByOwner": true,
  "newConstruction": true,
  "comingSoon": true,
  "auction": true,
  "foreclosures": true,
  "daysOnZillow": "",
  "hasPool": false,
  "hasGarage": false,
  "hasAirConditioning": false,
  "isWaterfront": false,
  "has3DTour": false,
  "hasBasement": false,
  "priceReducedOnly": false,
  "sort": "relevance",
  "maxItems": 200,
  "fetchDetails": false,
  "propertyUrls": [],
  "zpids": [],
  "zestimateItems": [],
  "includePhotos": true,
  "includeHistory": true,
  "includeSchools": true,
  "includeResoFacts": true,
  "agentUrls": [],
  "includeAgentListings": true,
  "includeAgentPastSales": true,
  "includeAgentReviews": false,
  "maxAgentsPerLocation": 20,
  "flatOutput": false,
  "maxConcurrency": 6,
  "maxRetries": 8,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `details` (type: `string`):

No description

## `agents` (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 = {
    "startUrls": [],
    "searchUrls": [],
    "locations": [
        "Austin, TX"
    ],
    "propertyUrls": [],
    "zpids": [],
    "zestimateItems": [],
    "agentUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/zillow-scraper-all-in-one").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 = {
    "startUrls": [],
    "searchUrls": [],
    "locations": ["Austin, TX"],
    "propertyUrls": [],
    "zpids": [],
    "zestimateItems": [],
    "agentUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/zillow-scraper-all-in-one").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 '{
  "startUrls": [],
  "searchUrls": [],
  "locations": [
    "Austin, TX"
  ],
  "propertyUrls": [],
  "zpids": [],
  "zestimateItems": [],
  "agentUrls": []
}' |
apify call pro100chok/zillow-scraper-all-in-one --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow Scraper — Listings, Property Details, Zestimate & Agents",
        "description": "Scrape Zillow for-sale, for-rent, and sold listings and extract full property details, Zestimate home values, photos, price & tax history, schools, and real-estate agent contacts. Search by city, ZIP, URL, or address — with automatic bypass of Zillow's 500-result limit. Export to JSON, CSV, or Excel",
        "version": "1.0",
        "x-build-id": "3XNXWnzhzlLw2T39I"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/pro100chok~zillow-scraper-all-in-one/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-pro100chok-zillow-scraper-all-in-one",
                "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/pro100chok~zillow-scraper-all-in-one/runs": {
            "post": {
                "operationId": "runs-sync-pro100chok-zillow-scraper-all-in-one",
                "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/pro100chok~zillow-scraper-all-in-one/run-sync": {
            "post": {
                "operationId": "run-sync-pro100chok-zillow-scraper-all-in-one",
                "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": {
                    "mode": {
                        "title": "What do you want to scrape?",
                        "enum": [
                            "search",
                            "propertyDetail",
                            "zestimate",
                            "agent"
                        ],
                        "type": "string",
                        "description": "Pick a mode. Search finds listings by location/URL/ZIP; Property details returns the full data for specific homes; Zestimate returns fast valuations; Agent returns real-estate agent profiles.",
                        "default": "search"
                    },
                    "startUrls": {
                        "title": "Start URLs (any Zillow URL)",
                        "type": "array",
                        "description": "Optional shortcut. Paste any Zillow URLs — search pages, property (homedetails) pages, or agent profiles. The actor routes each to the right mode automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Zillow search / region URLs (e.g. https://www.zillow.com/homes/Austin,-TX_rb/ or a URL containing ?searchQueryState=).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations (city, ZIP, county)",
                        "type": "array",
                        "description": "Free-text locations, e.g. \"Austin, TX\", \"90210\", \"Los Angeles County, CA\".",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingType": {
                        "title": "Listing type",
                        "enum": [
                            "forSale",
                            "forRent",
                            "sold"
                        ],
                        "type": "string",
                        "description": "Whether to search homes for sale, for rent, or recently sold.",
                        "default": "forSale"
                    },
                    "forSaleByAgent": {
                        "title": "For sale by agent",
                        "type": "boolean",
                        "description": "Include agent-listed homes (for-sale searches).",
                        "default": true
                    },
                    "forSaleByOwner": {
                        "title": "For sale by owner (FSBO)",
                        "type": "boolean",
                        "description": "Include for-sale-by-owner homes (for-sale searches).",
                        "default": true
                    },
                    "newConstruction": {
                        "title": "New construction",
                        "type": "boolean",
                        "description": "Include new-construction homes (for-sale searches).",
                        "default": true
                    },
                    "comingSoon": {
                        "title": "Coming soon",
                        "type": "boolean",
                        "description": "Include coming-soon homes (for-sale searches).",
                        "default": true
                    },
                    "auction": {
                        "title": "Auctions",
                        "type": "boolean",
                        "description": "Include auction homes (for-sale searches).",
                        "default": true
                    },
                    "foreclosures": {
                        "title": "Foreclosures",
                        "type": "boolean",
                        "description": "Include foreclosure homes (for-sale searches).",
                        "default": true
                    },
                    "priceMin": {
                        "title": "Min price",
                        "type": "integer",
                        "description": "Minimum price (or monthly rent for rentals)."
                    },
                    "priceMax": {
                        "title": "Max price",
                        "type": "integer",
                        "description": "Maximum price (or monthly rent for rentals)."
                    },
                    "bedsMin": {
                        "title": "Min beds",
                        "type": "integer",
                        "description": "Minimum number of bedrooms."
                    },
                    "bedsMax": {
                        "title": "Max beds",
                        "type": "integer",
                        "description": "Maximum number of bedrooms."
                    },
                    "bathsMin": {
                        "title": "Min baths",
                        "type": "integer",
                        "description": "Minimum number of bathrooms."
                    },
                    "bathsMax": {
                        "title": "Max baths",
                        "type": "integer",
                        "description": "Maximum number of bathrooms."
                    },
                    "sqftMin": {
                        "title": "Min living area (sqft)",
                        "type": "integer",
                        "description": "Minimum living area in square feet."
                    },
                    "sqftMax": {
                        "title": "Max living area (sqft)",
                        "type": "integer",
                        "description": "Maximum living area in square feet."
                    },
                    "lotSizeMin": {
                        "title": "Min lot size (sqft)",
                        "type": "integer",
                        "description": "Minimum lot size in square feet."
                    },
                    "lotSizeMax": {
                        "title": "Max lot size (sqft)",
                        "type": "integer",
                        "description": "Maximum lot size in square feet."
                    },
                    "yearBuiltMin": {
                        "title": "Built after (year)",
                        "type": "integer",
                        "description": "Only homes built in or after this year."
                    },
                    "yearBuiltMax": {
                        "title": "Built before (year)",
                        "type": "integer",
                        "description": "Only homes built in or before this year."
                    },
                    "hoaMax": {
                        "title": "Max monthly HOA fee",
                        "type": "integer",
                        "description": "Maximum monthly HOA fee."
                    },
                    "homeTypes": {
                        "title": "Home types",
                        "type": "array",
                        "description": "Restrict to specific property types. Leave empty for all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "houses",
                                "townhomes",
                                "condos",
                                "apartments",
                                "multiFamily",
                                "manufactured",
                                "lotsLand"
                            ],
                            "enumTitles": [
                                "Houses",
                                "Townhomes",
                                "Condos/Co-ops",
                                "Apartments",
                                "Multi-family",
                                "Manufactured",
                                "Lots/Land"
                            ]
                        }
                    },
                    "daysOnZillow": {
                        "title": "Days on Zillow",
                        "enum": [
                            "",
                            "1",
                            "7",
                            "14",
                            "30",
                            "90",
                            "6m",
                            "12m",
                            "24m",
                            "36m"
                        ],
                        "type": "string",
                        "description": "Only homes listed within this timeframe.",
                        "default": ""
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Free-text keywords (max 99 chars), e.g. \"pool, view, remodeled\"."
                    },
                    "hasPool": {
                        "title": "Has pool",
                        "type": "boolean",
                        "description": "Only homes with a pool.",
                        "default": false
                    },
                    "hasGarage": {
                        "title": "Has garage",
                        "type": "boolean",
                        "description": "Only homes with a garage.",
                        "default": false
                    },
                    "hasAirConditioning": {
                        "title": "Has A/C",
                        "type": "boolean",
                        "description": "Only homes with air conditioning.",
                        "default": false
                    },
                    "isWaterfront": {
                        "title": "Waterfront",
                        "type": "boolean",
                        "description": "Only waterfront homes.",
                        "default": false
                    },
                    "has3DTour": {
                        "title": "Has 3D tour",
                        "type": "boolean",
                        "description": "Only homes with a 3D tour.",
                        "default": false
                    },
                    "hasBasement": {
                        "title": "Has basement",
                        "type": "boolean",
                        "description": "Only homes with a (finished) basement.",
                        "default": false
                    },
                    "priceReducedOnly": {
                        "title": "Price reduced only",
                        "type": "boolean",
                        "description": "Only homes with a recent price reduction.",
                        "default": false
                    },
                    "sort": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "newest",
                            "price_desc",
                            "price_asc",
                            "beds",
                            "baths",
                            "sqft",
                            "lot",
                            "yearBuilt",
                            "priceReduced"
                        ],
                        "type": "string",
                        "description": "Sort order of search results.",
                        "default": "relevance"
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap the number of listings. Use 0 for unlimited (the actor auto-splits the map to bypass Zillow's 500-result cap).",
                        "default": 200
                    },
                    "fetchDetails": {
                        "title": "Enrich each listing with full property details",
                        "type": "boolean",
                        "description": "For every listing found, also open its property page to add year built, price/tax history, schools, agent contact, all photos, and 100+ facts. Slower and adds a details charge per listing.",
                        "default": false
                    },
                    "propertyUrls": {
                        "title": "Property URLs",
                        "type": "array",
                        "description": "Zillow homedetails URLs, e.g. https://www.zillow.com/homedetails/.../12345_zpid/",
                        "items": {
                            "type": "string"
                        }
                    },
                    "zpids": {
                        "title": "ZPIDs",
                        "type": "array",
                        "description": "Zillow property IDs (numbers).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "zestimateItems": {
                        "title": "Zestimate lookups (URL / ZPID / address)",
                        "type": "array",
                        "description": "Used when Mode = Zestimate. Accepts property URLs, ZPIDs, or free-text addresses.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includePhotos": {
                        "title": "Include all photos",
                        "type": "boolean",
                        "description": "Include every listing photo (highest resolution) in property details.",
                        "default": true
                    },
                    "includeHistory": {
                        "title": "Include price & tax history",
                        "type": "boolean",
                        "description": "Include price history and tax history in property details.",
                        "default": true
                    },
                    "includeSchools": {
                        "title": "Include schools",
                        "type": "boolean",
                        "description": "Include nearby/assigned schools in property details.",
                        "default": true
                    },
                    "includeResoFacts": {
                        "title": "Include detailed facts (heating, parking, HOA…)",
                        "type": "boolean",
                        "description": "Include the extended fact set (heating, cooling, parking, HOA, appliances, etc.).",
                        "default": true
                    },
                    "agentUrls": {
                        "title": "Agent profiles or locations",
                        "type": "array",
                        "description": "Zillow agent profile URLs (https://www.zillow.com/profile/<name>/) or a location to discover agents in (e.g. \"Los Angeles, CA\").",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeAgentListings": {
                        "title": "Include agent's active listings",
                        "type": "boolean",
                        "description": "Include the agent's active for-sale/for-rent listings.",
                        "default": true
                    },
                    "includeAgentPastSales": {
                        "title": "Include agent's past sales",
                        "type": "boolean",
                        "description": "Include a sample of the agent's past sales.",
                        "default": true
                    },
                    "includeAgentReviews": {
                        "title": "Include agent reviews",
                        "type": "boolean",
                        "description": "Include the agent's written reviews.",
                        "default": false
                    },
                    "maxAgentsPerLocation": {
                        "title": "Max agents per location",
                        "minimum": 1,
                        "type": "integer",
                        "description": "When a location is given instead of a profile URL, cap how many agents to fetch.",
                        "default": 20
                    },
                    "flatOutput": {
                        "title": "Flatten output for CSV/Excel",
                        "type": "boolean",
                        "description": "Flatten nested fields to a single level (nested lists become JSON strings). Handy for spreadsheet export.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum number of pages fetched in parallel.",
                        "default": 6
                    },
                    "maxRetries": {
                        "title": "Max retries per request",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many times to retry a blocked request (each retry rotates the proxy).",
                        "default": 8
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "US residential proxies are strongly recommended. To test with your own proxy, use the Custom proxies tab.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
