# Zillow Scraper - Search Listings (`mof1re/zillow-scraper`) Actor

Scrape Zillow listings by location. Search For Sale, For Rent, or Sold properties with price, beds/baths, photos, agent or owner info, and more. Fast API-based Zillow scraper, no browser needed, with built-in proxies and full filter support.

- **URL**: https://apify.com/mof1re/zillow-scraper.md
- **Developed by:** [Vladimir Efimenco](https://apify.com/mof1re) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

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

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


# README

## Zillow Scraper | Search Listings for Sale, Rent & Sold

This Zillow scraper pulls property listings directly from Zillow's internal mobile search API, no browser involved. Search any location and get full listing data back: price, address, beds/baths, photos, agent or owner info, and more.

### ⚡ Why this Zillow scraper

- **No browser session required.** This actor talks to the same search API Zillow's own mobile app uses, so there's no page to render and nothing to wait on.
- **Search by location, not by URL.** Just give it a city, address, or zip code. No need to go find a Zillow search URL first or figure out map bounding boxes yourself.
- **All three search types.** For Sale, For Rent, and Sold, each with the full set of Zillow's own filters (price, beds, baths, home type, lot size, year built, days on Zillow, amenities, and more).
- **Owner vs agent listings flagged.** Every result tells you whether it's listed by an agent, a broker, a builder, or FSBO (for sale by owner) directly.
- **Clean, flat output.** Every field comes back as a top-level key, not buried in nested objects, so it drops straight into Excel or a CSV/Sheets export without extra processing.
- **Batch scraping.** Pass multiple locations and they run concurrently in the same job.
- **Proxies included.** No need to bring your own.
- **Fast.** Pure HTTP requests to Zillow's search API, no page load, no rendering delay.

### 🎯 Who uses this Zillow scraper

- **Real estate investors and wholesalers** scanning a market for FSBO deals, price drops, or properties sitting on the market for a while.
- **Real estate agents and brokers** building comps, tracking competitor listings, or monitoring inventory in a farm area.
- **Market researchers and analysts** tracking price trends, inventory levels, or days-on-market across cities or zip codes.
- **Lead generation teams** pulling agent and broker contact info attached to active listings.
- **Developers building real estate dashboards or tools** who need structured Zillow data without maintaining their own scraper against a site that changes often.
- **Rental market researchers** comparing rent estimates against asking rents across a neighborhood.

### 🧾 What you get, per listing

- Address, coordinates, and a direct link to the listing (desktop and mobile app URL)
- Price, price history (last change and date), price per square foot
- Zestimate and rent Zestimate
- Tax assessed value and assessment year
- Beds, baths (full/half), living area, lot size, year built, property type
- Listing status, marketing status, days on Zillow, listing date
- Whether it's FSBO (owner) or agent/broker/builder listed, plus the agent, broker, or builder name when available
- Main photo, full photo gallery, floor plan image, and video/3D tour flags
- Zillow's own listing highlights (short generated blurbs like "recently renovated" or "weatherized for efficiency")
- Featured, Showcase, and preforeclosure auction flags

### 🔍 How search works

You search the same way you would on zillow.com or the app: type a location and pick a search type.

- **`searchType`**: `FOR_SALE`, `FOR_RENT`, or `SOLD`
- **`location`**: city, neighborhood, address, or zip code (e.g. `"Newark, DE"`)
- **Filters**: price range, bed/bath range, living area, lot size, year built, home types, days on Zillow, amenities, keywords, and more, matching what's available in Zillow's own search filters

### 🔧 Input options

| Field | Description |
|---|---|
| `locations` | One or more locations to search (city, address, or zip code) |
| `searchType` | `FOR_SALE`, `FOR_RENT`, or `SOLD` |
| `maxResults` | Max listings to collect per location |
| `sortBy` | Sort order: relevance, newest, recently changed, price (high/low), beds, baths, living area, year built |
| `minPrice` / `maxPrice` | Price range |
| `minBedrooms` / `maxBedrooms` | Bedroom range |
| `minBathrooms` / `maxBathrooms` | Bathroom range |
| `minLivingAreaSqft` / `maxLivingAreaSqft` | Living area range |
| `minLotSizeSqft` / `maxLotSizeSqft` | Lot size range |
| `minYearBuilt` / `maxYearBuilt` | Year built range |
| `daysOnZillow` | Max time on market (e.g. `1_week`, `1_month`, `3_months`) |
| `homeTypes` | Property types to include |
| `keywords` | Keyword search within listings |

### 📊 Data Fields

#### 📍 Location & Listing Link

| Field | Description |
|---|---|
| `zpid` | Zillow's unique property ID |
| `street_address` / `city` / `state` / `zipcode` | Property address |
| `latitude` / `longitude` | Coordinates |
| `url` | Direct Zillow listing page URL |
| `mobile_url` | Zillow mobile app deep link |

#### 💰 Price & Estimates

| Field | Description |
|---|---|
| `price` | Current listing price |
| `price_change` / `price_changed_date` | Most recent price change and when it happened |
| `price_per_sqft` | Price per square foot |
| `zestimate` / `rent_zestimate` | Zillow's estimated value and estimated rent |
| `tax_assessed_value` / `tax_assessment_year` | Tax assessment data |

#### 🏠 Property Details

| Field | Description |
|---|---|
| `property_type` | Home type (single family, condo, manufactured, etc.) |
| `bedrooms` / `bathrooms` / `full_bathrooms` / `half_bathrooms` | Room counts |
| `living_area_sqft` / `lot_size` / `lot_size_unit` | Size details |
| `year_built` | Year the property was built |

#### 📌 Listing Status

| Field | Description |
|---|---|
| `listing_status` / `marketing_status` | Current listing state |
| `days_on_zillow` / `listing_date` | Time on market |
| `is_contingent` | Under contract but contingent |

#### 🧑‍💼 Seller Info

| Field | Description |
|---|---|
| `is_sold_by_owner` | True for FSBO listings |
| `is_sold_by_agent` | True if listed by an agent, broker, or builder |
| `agent_name` / `broker_name` / `builder_name` | Who's listing it, when available |

#### 🖼️ Media & Highlights

| Field | Description |
|---|---|
| `main_image` / `all_images` | Photos |
| `floor_plan_image` | Floor plan image, if available |
| `has_videos` / `has_3d_tour` / `has_floor_plan` | Media flags |
| `highlights` | Zillow's short generated listing highlights |
| `is_featured` / `is_showcase_listing` / `is_preforeclosure_auction` | Listing type flags |

### 📋 Example output

```json
[
  {
    "query": "Newark, DE",
    "url": "https://www.zillow.com/homedetails/72932692_zpid/",
    "mobile_url": "https://www.zillow.com/homedetail/MobileAppHDPShopperPlatformServicePage.htm?fromApp=true&p=android&variant=FOR_SALE#zpid=72932692&homeDetailsVariant=FOR_SALE&webviewLayout=doubleScroll&showFactsAndFeatures=true&fromApp=true&gmaps=true&streetview=true",
    "zpid": 72932692,
    "street_address": "806 N Country Club Dr",
    "city": "Newark",
    "state": "DE",
    "zipcode": "19711",
    "latitude": 39.69733,
    "longitude": -75.772865,
    "main_image": "https://photos.zillowstatic.com/fp/319c1fef7df959a17522ab13a3b33092-p_f.jpg",
    "all_images": [
      "https://photos.zillowstatic.com/fp/319c1fef7df959a17522ab13a3b33092-p_f.jpg",
      "https://photos.zillowstatic.com/fp/a4b8642549b21a409068c5a3c84d9592-p_f.jpg"
    ],
    "has_videos": false,
    "has_3d_tour": true,
    "has_floor_plan": true,
    "floor_plan_image": "https://www.zillowstatic.com/floor_map/02b30a63-b59f-4c7a-bd2a-78f59218fff8/hero.png",
    "price": 499900,
    "price_change": null,
    "price_changed_date": null,
    "price_per_sqft": 217,
    "currency": "usd",
    "zestimate": 512400,
    "rent_zestimate": 3209,
    "tax_assessed_value": 503700,
    "tax_assessment_year": "2025",
    "property_type": "singleFamily",
    "bedrooms": 4,
    "bathrooms": 3.0,
    "full_bathrooms": 2,
    "half_bathrooms": 1,
    "living_area_sqft": 2300,
    "year_built": 1971,
    "lot_size": 0.5800045913682277,
    "lot_size_unit": "acres",
    "listing_status": "forSale",
    "marketing_status": "active",
    "days_on_zillow": 5,
    "listing_date": "07/17/2026",
    "is_contingent": false,
    "pals_id": "5632006_DENC2104134",
    "is_sold_by_owner": false,
    "is_sold_by_agent": true,
    "broker_name": "EXP Realty, LLC",
    "agent_name": null,
    "builder_name": null,
    "is_featured": false,
    "is_showcase_listing": false,
    "is_preforeclosure_auction": false,
    "highlights": [
      "3D Tour",
      "Freshly painted throughout",
      "5 days on Zillow"
    ]
  },
  {
    "query": "Newark, DE",
    "url": "https://www.zillow.com/homedetails/73019171_zpid/",
    "mobile_url": "https://www.zillow.com/homedetail/MobileAppHDPShopperPlatformServicePage.htm?fromApp=true&p=android&variant=SHOWCASE#zpid=73019171&homeDetailsVariant=SHOWCASE&webviewLayout=doubleScroll&showFactsAndFeatures=true&fromApp=true&gmaps=true&streetview=true",
    "zpid": 73019171,
    "street_address": "108 Paddock Dr",
    "city": "Newark",
    "state": "DE",
    "zipcode": "19711",
    "latitude": 39.733837,
    "longitude": -75.71586,
    "main_image": "https://photos.zillowstatic.com/fp/7f589cad1ef26f9a29d3c15509b741f0-p_f.jpg",
    "all_images": [
      "https://photos.zillowstatic.com/fp/7f589cad1ef26f9a29d3c15509b741f0-p_f.jpg",
      "https://photos.zillowstatic.com/fp/f2d21064acd2129aab44d436e65ea5ae-p_f.jpg"
    ],
    "has_videos": false,
    "has_3d_tour": true,
    "has_floor_plan": true,
    "floor_plan_image": "https://www.zillowstatic.com/floor_map/913fe276-9c67-4a1b-81ab-d449e345f126/hero.png",
    "price": 575000,
    "price_change": null,
    "price_changed_date": null,
    "price_per_sqft": 173,
    "currency": "usd",
    "zestimate": 608100,
    "rent_zestimate": 3469,
    "tax_assessed_value": 550600,
    "tax_assessment_year": "2025",
    "property_type": "singleFamily",
    "bedrooms": 4,
    "bathrooms": 3.0,
    "full_bathrooms": 2,
    "half_bathrooms": 1,
    "living_area_sqft": 3320,
    "year_built": 1992,
    "lot_size": 0.33000459136822774,
    "lot_size_unit": "acres",
    "listing_status": "forSale",
    "marketing_status": "active",
    "days_on_zillow": 6,
    "listing_date": "07/16/2026",
    "is_contingent": true,
    "pals_id": "5632006_DENC2107250",
    "is_sold_by_owner": false,
    "is_sold_by_agent": true,
    "broker_name": "Patterson-Schwartz-Hockessin",
    "agent_name": null,
    "builder_name": null,
    "is_featured": false,
    "is_showcase_listing": true,
    "is_preforeclosure_auction": false,
    "highlights": [
      "Showcase",
      "3D Tour",
      "Striking stone-accented fireplace"
    ]
  }
]
````

### 🚀 Running the actor

#### Via Apify Console

Open the actor page, fill in the input form, and click **Start**.

#### Via Apify API: Python

```python
import requests

APIFY_TOKEN = "your_apify_token"
ACTOR_ID = "mof1re~zillow-scraper"

run_input = {
    "locations": ["Newark, DE"],
    "searchType": "FOR_SALE",
    "maxResults": 200,
}

response = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR_ID}/run-sync-get-dataset-items",
    params={"token": APIFY_TOKEN},
    json=run_input,
)

listings = response.json()
print(f"Fetched {len(listings)} listings")
```

#### Via Apify API: Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'your_apify_token' });

const input = {
    locations: ['Newark, DE'],
    searchType: 'FOR_SALE',
    maxResults: 200,
};

const run = await client.actor('mof1re/zillow-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log(`Fetched ${items.length} listings`);
```

#### Example input JSON

```json
{
  "locations": ["Newark, DE", "Philadelphia, PA"],
  "searchType": "FOR_SALE",
  "maxResults": 300,
  "sortBy": "priceLowToHigh",
  "minPrice": 150000,
  "maxPrice": 500000,
  "minBedrooms": 2
}
```

### ❓ FAQ

**How is this different from other Zillow scrapers?** Most either need a pre-built Zillow search URL or a manual map bounding box. This one takes a plain location string, the same way you'd search on zillow.com, and handles pagination and filters on its own.

**Does this scraper need an account or API key?** No. It extracts publicly available listing data.

**Can I search multiple locations in one run?** Yes. Pass a list of locations and they're scraped concurrently.

**Can I search For Sale, For Rent, and Sold listings?** Yes. Set `searchType` to `FOR_SALE`, `FOR_RENT`, or `SOLD`.

**Do I need my own proxies?** No. Proxies are built into the actor.

**Is this legal? Can I scrape publicly available Zillow listings?** This tool extracts publicly available listing data. You're responsible for complying with Zillow's terms of service and applicable data protection laws for your use case.

### 💳 Pricing

Pay-per-result. You're charged for listings actually delivered, not for pages fetched or requests made.

### ⚠️ Notes

- Free-tier accounts are capped at a smaller number of results per run, and to a limited number of locations per run. Upgrade to a paid Apify plan for full volume and batch scraping.
- Data reflects what's publicly listed on zillow.com at the time of the run; the source updates continuously.

### 🔗 See also

Need data from another real estate or travel platform? Check out:

- [Tripadvisor Reviews Scraper](https://apify.com/mof1re/tripadvisor-reviews-scraper)
- [Booking.com Reviews Scraper](https://apify.com/mof1re/booking-reviews-scraper-browserless)
- [AirBnb Reviews Scraper](https://apify.com/mof1re/airbnb-reviews-scraper-browserless)
- [Trustpilot Reviews Scraper](https://apify.com/mof1re/trustpilot-scraper-fast-browserlessapif)
- [ULTA Reviews Scraper](https://apify.com/mof1re/ulta-reviews-scraper)

# Actor input Schema

## `searchType` (type: `string`):

What kind of listings to search for.

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

ZIP code, city + state e.g. "90210", "Chicago, IL", or "Newark, DE". Add multiple to scrape several locations in one run.

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

Maximum number of listings to collect. Leave empty to collect all available results.

## `sortBy` (type: `string`):

How to sort the results. Leave empty to use Zillow's default relevance sorting for the selected search type.

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

Optional free-text keyword to filter listings (e.g. "pool", "renovated").

## `minPrice` (type: `integer`):

Minimum price in USD (Sale/Sold) or minimum monthly rent (For Rent).

## `maxPrice` (type: `integer`):

Maximum price in USD (Sale/Sold) or maximum monthly rent (For Rent).

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms.

## `maxBedrooms` (type: `integer`):

Maximum number of bedrooms.

## `minBathrooms` (type: `number`):

Minimum number of bathrooms.

## `maxBathrooms` (type: `number`):

Maximum number of bathrooms.

## `minLivingAreaSqft` (type: `integer`):

Minimum interior living area in square feet.

## `maxLivingAreaSqft` (type: `integer`):

Maximum interior living area in square feet.

## `minLotSizeSqft` (type: `integer`):

Minimum lot size in square feet. 21780 sqft ≈ 1/2 acre.

## `maxLotSizeSqft` (type: `integer`):

Maximum lot size in square feet. 21780 sqft ≈ 1/2 acre.

## `minYearBuilt` (type: `integer`):

Minimum construction year.

## `maxYearBuilt` (type: `integer`):

Maximum construction year.

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

Property types to include. For 'For Rent' searches, only Houses (singleFamily), Townhomes, and Condos are supported — other values are silently dropped.

## `basementStatuses` (type: `array`):

Basement status.

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

Only show listings posted within this time window.

## `minParkingSpots` (type: `integer`):

Minimum number of parking spots.

## `otherAmenitiesFilters` (type: `array`):

General amenities. Only applies to 'For Sale' and 'For Rent' searches.

## `rentalAmenitiesFilters` (type: `array`):

Rental-specific amenities. Only applies to 'For Rent' searches.

## `allowedPets` (type: `array`):

Only show rentals that allow these pets. Only applies to 'For Rent' searches, and is ignored if 'No pets allowed' below is checked.

## `noPetsAllowed` (type: `boolean`):

Only show rentals that don't allow pets. Only applies to 'For Rent' searches. When checked, 'Pets allowed' above is ignored.

## `forRentByOwner` (type: `boolean`):

Only show rentals listed directly by the owner. Only applies to 'For Rent' searches.

## `showOnlyFilter` (type: `array`):

Only show listings with these features. Not all values apply to every search type — Zillow will ignore ones that don't apply.

## `viewTypesFilter` (type: `array`):

Only show listings with these views.

## Actor input object example

```json
{
  "searchType": "FOR_SALE",
  "locations": [
    "Newark, DE"
  ],
  "maxResults": 150,
  "noPetsAllowed": false,
  "forRentByOwner": false
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Newark, DE"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mof1re/zillow-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 = { "locations": ["Newark, DE"] }

# Run the Actor and wait for it to finish
run = client.actor("mof1re/zillow-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 '{
  "locations": [
    "Newark, DE"
  ]
}' |
apify call mof1re/zillow-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow Scraper - Search Listings",
        "description": "Scrape Zillow listings by location. Search For Sale, For Rent, or Sold properties with price, beds/baths, photos, agent or owner info, and more. Fast API-based Zillow scraper, no browser needed, with built-in proxies and full filter support.",
        "version": "0.1",
        "x-build-id": "A1GlhXt7gYQ2djIzK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mof1re~zillow-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mof1re-zillow-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/mof1re~zillow-scraper/runs": {
            "post": {
                "operationId": "runs-sync-mof1re-zillow-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/mof1re~zillow-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-mof1re-zillow-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",
                "required": [
                    "searchType",
                    "locations"
                ],
                "properties": {
                    "searchType": {
                        "title": "🔍 Search type",
                        "enum": [
                            "FOR_SALE",
                            "FOR_RENT",
                            "SOLD"
                        ],
                        "type": "string",
                        "description": "What kind of listings to search for.",
                        "default": "FOR_SALE"
                    },
                    "locations": {
                        "title": "📍 Locations (Smart Detect)",
                        "type": "array",
                        "description": "ZIP code, city + state e.g. \"90210\", \"Chicago, IL\", or \"Newark, DE\". Add multiple to scrape several locations in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to collect. Leave empty to collect all available results.",
                        "default": 150
                    },
                    "sortBy": {
                        "title": "↕️ Sort by",
                        "enum": [
                            "newest",
                            "recentlyChanged",
                            "priceHighToLow",
                            "priceLowToHigh",
                            "bedsMostFirst",
                            "bathsMostFirst",
                            "livingAreaLargestFirst",
                            "yearBuiltOldestFirst"
                        ],
                        "type": "string",
                        "description": "How to sort the results. Leave empty to use Zillow's default relevance sorting for the selected search type."
                    },
                    "keywords": {
                        "title": "🔑 Keywords",
                        "type": "string",
                        "description": "Optional free-text keyword to filter listings (e.g. \"pool\", \"renovated\")."
                    },
                    "minPrice": {
                        "title": "💲 Min price / min monthly rent",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price in USD (Sale/Sold) or minimum monthly rent (For Rent)."
                    },
                    "maxPrice": {
                        "title": "💲 Max price / max monthly rent",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price in USD (Sale/Sold) or maximum monthly rent (For Rent)."
                    },
                    "minBedrooms": {
                        "title": "🛏️ Min bedrooms",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Minimum number of bedrooms."
                    },
                    "maxBedrooms": {
                        "title": "🛏️ Max bedrooms",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum number of bedrooms."
                    },
                    "minBathrooms": {
                        "title": "🛁 Min bathrooms",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum number of bathrooms."
                    },
                    "maxBathrooms": {
                        "title": "🛁 Max bathrooms",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "number",
                        "description": "Maximum number of bathrooms."
                    },
                    "minLivingAreaSqft": {
                        "title": "📐 Min living area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum interior living area in square feet."
                    },
                    "maxLivingAreaSqft": {
                        "title": "📐 Max living area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum interior living area in square feet."
                    },
                    "minLotSizeSqft": {
                        "title": "🌳 Min lot size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum lot size in square feet. 21780 sqft ≈ 1/2 acre."
                    },
                    "maxLotSizeSqft": {
                        "title": "🌳 Max lot size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum lot size in square feet. 21780 sqft ≈ 1/2 acre."
                    },
                    "minYearBuilt": {
                        "title": "🏗️ Min year built",
                        "type": "integer",
                        "description": "Minimum construction year."
                    },
                    "maxYearBuilt": {
                        "title": "🏗️ Max year built",
                        "type": "integer",
                        "description": "Maximum construction year."
                    },
                    "homeTypes": {
                        "title": "🏠 Home types (limited options for For Rent)",
                        "type": "array",
                        "description": "Property types to include. For 'For Rent' searches, only Houses (singleFamily), Townhomes, and Condos are supported — other values are silently dropped.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "singleFamily",
                                "condo",
                                "multiFamily",
                                "manufactured",
                                "land",
                                "townhome"
                            ],
                            "enumTitles": [
                                "Houses",
                                "Condos",
                                "Multi-family",
                                "Manufactured",
                                "Land",
                                "Townhomes"
                            ]
                        }
                    },
                    "basementStatuses": {
                        "title": "🧱 Basement (FOR_SALE, SOLD Only)",
                        "type": "array",
                        "description": "Basement status.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "finished",
                                "unfinished",
                                "partial"
                            ],
                            "enumTitles": [
                                "Finished",
                                "Unfinished",
                                "Partial"
                            ]
                        }
                    },
                    "daysOnZillow": {
                        "title": "🕒 Days on Zillow",
                        "enum": [
                            "1_day",
                            "1_week",
                            "2_weeks",
                            "1_month",
                            "3_months",
                            "6_months",
                            "1_year",
                            "2_years",
                            "3_years"
                        ],
                        "type": "string",
                        "description": "Only show listings posted within this time window."
                    },
                    "minParkingSpots": {
                        "title": "🚗 Min parking spots",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Minimum number of parking spots."
                    },
                    "otherAmenitiesFilters": {
                        "title": "✨ Amenities (not for Sold)",
                        "type": "array",
                        "description": "General amenities. Only applies to 'For Sale' and 'For Rent' searches.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "havePool",
                                "onWaterfront",
                                "haveAirConditioning"
                            ],
                            "enumTitles": [
                                "Pool",
                                "Waterfront",
                                "Air conditioning"
                            ]
                        }
                    },
                    "rentalAmenitiesFilters": {
                        "title": "🏢 Rental amenities (For Rent only)",
                        "type": "array",
                        "description": "Rental-specific amenities. Only applies to 'For Rent' searches.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "laundryAvailable",
                                "parkingAvailable"
                            ],
                            "enumTitles": [
                                "In-unit laundry",
                                "Parking available"
                            ]
                        }
                    },
                    "allowedPets": {
                        "title": "🐾 Pets allowed (For Rent only)",
                        "type": "array",
                        "description": "Only show rentals that allow these pets. Only applies to 'For Rent' searches, and is ignored if 'No pets allowed' below is checked.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "largeDogs",
                                "smallDogs",
                                "cats"
                            ],
                            "enumTitles": [
                                "Large dogs",
                                "Small dogs",
                                "Cats"
                            ]
                        }
                    },
                    "noPetsAllowed": {
                        "title": "🚫 No pets allowed (For Rent only)",
                        "type": "boolean",
                        "description": "Only show rentals that don't allow pets. Only applies to 'For Rent' searches. When checked, 'Pets allowed' above is ignored.",
                        "default": false
                    },
                    "forRentByOwner": {
                        "title": "🧑‍💼 For rent by owner (For Rent only)",
                        "type": "boolean",
                        "description": "Only show rentals listed directly by the owner. Only applies to 'For Rent' searches.",
                        "default": false
                    },
                    "showOnlyFilter": {
                        "title": "✅ Must have",
                        "type": "array",
                        "description": "Only show listings with these features. Not all values apply to every search type — Zillow will ignore ones that don't apply.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "priceReduction",
                                "singleStory",
                                "garage",
                                "elevatorAccess",
                                "furnished",
                                "hasHardwoodFloor",
                                "hasDishwasher",
                                "hasFitnessCenter",
                                "areUtilitiesIncluded",
                                "highSpeedInternetAvailable",
                                "outdoorSpace"
                            ],
                            "enumTitles": [
                                "Price reduction (For Sale only)",
                                "Single story",
                                "Garage",
                                "Elevator access",
                                "Furnished",
                                "Hardwood floor",
                                "Dishwasher",
                                "Fitness center",
                                "Utilities included",
                                "High-speed internet",
                                "Outdoor space"
                            ]
                        }
                    },
                    "viewTypesFilter": {
                        "title": "🌄 Views",
                        "type": "array",
                        "description": "Only show listings with these views.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "mountain",
                                "city",
                                "water",
                                "park"
                            ],
                            "enumTitles": [
                                "Mountain",
                                "City",
                                "Water",
                                "Park"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
