# Zillow URL Search Property Scraper (`afanasenko/zillow-url-search`) Actor

Extract Zillow real estate listings by pasting any Zillow search URL — filters baked into the URL are honored. 74 output fields including agent contacts, price history, Zestimate, and property details. Pay-per-event pricing — only pay for properties enriched. Free plan: up to 15 properties per run.

- **URL**: https://apify.com/afanasenko/zillow-url-search.md
- **Developed by:** [Andrey Afanasenko](https://apify.com/afanasenko) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 URL Search Property Scraper

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-7B59FF)](https://apify.com)

> *Paste any Zillow search URL — get one structured row per property with agent contacts, price history, and 74 output fields.*

---

### 🎯 What it does

You paste a Zillow search URL (with whatever filters you've already set up on the Zillow website) and get one structured row per property in the dataset. Filters baked into the URL's `searchQueryState` (price range, beds/baths, status, home type, school rating, 50+ property features) are honored automatically — no need to re-enter them in the actor's input. Each row includes:

- **Address & location** — street, city, state, ZIP, county, neighborhood, lat/lng
- **Listing data** — price, status (For Sale / For Rent / Recently Sold), days on Zillow, page views, favorites, listing type
- **Property details** — beds, baths, square footage, lot size, year built, home type, architectural style, flooring, heating/cooling, roof, appliances, fireplaces, garage, pool, basement, view types
- **Financial data** — Zestimate, Rent Zestimate, price per sqft, HOA fees, property tax, price history, last sold date
- **Agent contacts** — agent name, email, phone, license number, broker name, broker phone

The actor handles three URL shapes automatically:

1. **Search URLs with `searchQueryState`** (e.g. `https://www.zillow.com/austin-tx/?searchQueryState=...`) — filters extracted from the URL and applied to a location search. Covers For Sale, For Rent, and Recently Sold listings (whichever the URL's `searchQueryState` encodes).
2. **Recently sold listings** (e.g. `https://www.zillow.com/homes/recently_sold/Indiana_rb/`) — pulled as a sold-listings search.
3. **Single-property URLs** (e.g. `https://www.zillow.com/homedetails/.../12345_zpid/`) — ZPID auto-extracted, that one property enriched directly (skip search).

---

### ⚡ Quick start

Minimal input — paste a Zillow search URL:

```json
{
  "zillowUrl": "https://www.zillow.com/austin-tx/houses/?searchQueryState=%7B%22filterState%22%3A%7B%22price%22%3A%7B%22min%22%3A400000%2C%22max%22%3A900000%7D%2C%22beds%22%3A%7B%22min%22%3A3%7D%7D%7D",
  "maxProperties": 50
}
````

That run produces ~50 rows from Austin, TX with `price 400k-900k, 3+ beds`, one row per property with the default 74 output columns.

***

### 📦 Output sample

A full row from a real run. All 74 columns shown; only the narrative `propertyDescription` and the long `priceHistory` array are condensed for readability.

```json
{
  "zpid": "119617641",
  "hdpUrl": "https://www.zillow.com/homedetails/10124-Pinnacle-Crest-Loop-Austin-TX-78747/119617641_zpid/",
  "price": 375000,
  "status": "FOR_SALE",
  "propertyDescription": "Tucked away on a quiet street in popular South Austin, this beautifully upgraded home offers ... (full description ~2000 chars)",
  "homeType": "SINGLE_FAMILY",
  "latitude": 30.140326,
  "longitude": -97.76442,
  "lotAreaValue": "4,843 sqft",
  "lotAreaUnit": "sqft",
  "priceChange": null,
  "datePriceChanged": null,
  "has3DModel": false,
  "hasVideo": false,
  "pageViewCount": 2172,
  "favoriteCount": 137,
  "listingType": "FSBA",
  "streetAddress": "10124 Pinnacle Crest Loop",
  "city": "Austin",
  "state": "TX",
  "zipcode": "78747",
  "county": "Travis County",
  "neighborhood": null,
  "agentName": "Hillary Smith",
  "agentEmail": "hillary@homesmithatx.com",
  "agentEmailSource": "agent_profile_direct",
  "cellPhone": "512-585-1947",
  "coAgentName": null,
  "coAgentNumber": null,
  "agentLicenseNumber": null,
  "brokerName": "HOMESMITH REALTY, LLC",
  "brokerPhoneNumber": "(512) 585-1947",
  "zestimate": null,
  "rentZestimate": null,
  "pricePerSqft": 157,
  "hoaFee": 47,
  "propertyTax": 7749,
  "bedrooms": 5,
  "bathrooms": 3,
  "bathroomsFull": 3,
  "bathroomsHalf": null,
  "livingArea": 2385,
  "lotSize": "4,843 sqft",
  "yearBuilt": 2014,
  "stories": 2,
  "architecturalStyle": null,
  "parcelNumber": "04430309070000",
  "view": "None",
  "heating": "Central",
  "cooling": "Ceiling Fan(s), Central Air",
  "appliances": "Dishwasher, Dryer, Gas Range, Microwave, Refrigerator, Washer",
  "flooring": "Carpet, Vinyl",
  "roofType": "Composition, Shingle",
  "laundryFeatures": null,
  "fireplaceFeatures": "None",
  "communityFeatures": null,
  "hasPool": true,
  "hasGarage": true,
  "garageSpaces": null,
  "parking": null,
  "hasBasement": false,
  "daysOnZillow": "6 days",
  "openHouseSchedule": "",
  "lastSoldDate": null,
  "lastSoldPrice": null,
  "lastTaxPaid": 7749.95,
  "lastTaxAssessedValue": 378695,
  "priceHistory": [
    { "date": "2026-04-30", "price": 375000, "event": "Listed for sale", "pricePerSquareFoot": 157, "source": "Unlock MLS", "postingIsRental": false },
    { "date": "2022-11-16", "price": 2450,   "event": "Listed for rent", "pricePerSquareFoot": 1,   "source": "Zillow Rental Manager", "postingIsRental": true },
    { "date": "2022-10-01", "price": 500000, "event": "Price change",    "pricePerSquareFoot": 210, "source": "Unlock MLS", "postingIsRental": false }
    /* ... 22 more historical entries (price changes, listings, removals back to 2017) */
  ],
  "schools": [
    {
      "distance": 1.3, "name": "Blazier Elementary School", "rating": 5, "level": "Primary",
      "studentsPerTeacher": null, "assigned": null, "grades": "PK-6",
      "link": "https://www.greatschools.org/texas/austin/10788-Blazier-Elementary-School/",
      "type": "Public", "size": null, "totalCount": null, "isAssigned": null
    },
    {
      "distance": 3.3, "name": "Paredes Middle School", "rating": 2, "level": "Middle",
      "studentsPerTeacher": null, "assigned": null, "grades": "6-8",
      "link": "https://www.greatschools.org/texas/austin/9472-Paredes-Middle-School/",
      "type": "Public", "size": null, "totalCount": null, "isAssigned": null
    },
    {
      "distance": 2.2, "name": "Akins High School", "rating": 4, "level": "High",
      "studentsPerTeacher": null, "assigned": null, "grades": "9-12",
      "link": "https://www.greatschools.org/texas/austin/9663-Akins-High-School/",
      "type": "Public", "size": null, "totalCount": null, "isAssigned": null
    }
  ],
  "mainPhoto": "https://photos.zillowstatic.com/fp/b7a661227b8e215ae7cd331817f37a34-p_d.jpg",
  "photos": ["https://photos.zillowstatic.com/fp/b7a661227b8e215ae7cd331817f37a34-p_d.jpg"],
  "walkScore": null,
  "transitScore": null,
  "bikeScore": null
}
```

Notes on the sample above:

- **`zestimate` / `rentZestimate` `null`** — Zillow doesn't always publish a Zestimate on every listing.
- **`agentLicenseNumber` `null`** — not every brokerage exposes the license number on the listing page.
- **`photos` array has 1 entry** — Walk/Transit/Bike score and full photo gallery enrichment are not exposed on this URL-only actor. For per-property enrichment toggles, switch to the multi-mode parent actor.
- **`walkScore` / `transitScore` / `bikeScore` `null`** — same reason.

***

### 🧭 When to use it

- **You already use Zillow's filter UI** to narrow listings — copy the URL and let the actor do the rest. No need to translate filters into JSON.
- **Saved-search delivery** — re-run the same URL on a schedule to capture new listings + price changes over time.
- **One-off geo + filter combos** — when filters are complex (foreclosures + minimum school rating + finished basement + 3D tour), encoding them in the URL is faster than re-entering each in input.
- **Single-property lookup** — paste a Zillow property page URL (e.g. `/homedetails/.../12345_zpid/`) and enrich just that one listing.

If you don't already have a URL and prefer typing parameters, use the sibling [`zillow-zip-search`](https://apify.com/afanasenko/zillow-zip-search) (single-mode, ZIP-input) or the multi-mode parent [`zillow-property-agent-data-scraper`](https://apify.com/afanasenko/zillow-property-agent-data-scraper).

***

### 🛠 Input

Two input fields, only one required:

- **`zillowUrl`** *(required, string)* — paste any Zillow search URL or single-property URL. Filters baked into the URL are honored.
- **`maxProperties`** *(integer, default 0=unlimited)* — per-run property cap. Free plan: maximum 15 regardless.

Per-run cost ceilings are set via Apify's built-in **"Maximum cost per run"** option in the Run options panel — no input field needed.

See the **Input** tab in Apify Console for descriptions, types, defaults, and examples.

***

### 💰 Pricing

| Event | Tier | Price |
|---|---|---|
| **Property Data Enriched** *(primary)* | FREE | $0.08 |
|  | BRONZE | $0.07 |
|  | SILVER | $0.06 |
|  | GOLD | $0.05 |
|  | PLATINUM | $0.05 |
|  | DIAMOND | $0.05 |
| **Actor Start** *(one-time per run)* | all tiers | $0.00005 / GB of memory |

You only pay for properties that were successfully enriched (full property + agent + history data fetched). Listings that fail discovery (no upstream match for the URL) are free.

**Examples (FREE tier):**

- 10 properties enriched → ~$0.80
- 100 properties enriched → ~$8.00
- 1,000 properties enriched → ~$80.00

***

### 🆓 Free vs paid plan

| | Free plan | Paid plan |
|---|---|---|
| Properties per run | up to **15** | unlimited |
| Per-run budget ceiling | **$1.20** | set via Apify Run options |
| Agent email visibility | domain masked (`name@xxx`) | full email |
| Filters & URL types supported | ✅ | ✅ |

The first paid run unlocks unlimited properties + budgets + full agent emails immediately — no waiting period.

***

### 🔗 How to construct your Zillow URL

The fastest workflow is: open Zillow in your browser, apply the filters you want using the on-site UI, and copy the resulting URL straight from the address bar. Three URL shapes are supported:

#### Shape 1 — Search URL with filters (most common)

```
https://www.zillow.com/austin-tx/houses/?searchQueryState=%7B%22filterState%22%3A%7B%22price%22%3A%7B%22min%22%3A400000%2C%22max%22%3A900000%7D%2C%22beds%22%3A%7B%22min%22%3A3%7D%7D%7D
```

The `searchQueryState` parameter encodes filters as JSON — price, beds/baths, home type, and listing status (For Sale / For Rent / Recently Sold). The actor parses it and runs a location-mode search with your filters applied. Use this for any complex filter combo, including sold listings: copy the URL after you click Zillow's "Sold" tab and the `rs:true` flag will be embedded.

#### Shape 2 — Recently sold listings

```
https://www.zillow.com/homes/recently_sold/Indiana_rb/
```

A `/homes/recently_sold/<Location>_rb/` URL — the actor pulls it as a sold-listings search. Use this when you want every recent sale in a state, county, or city without setting other filters.

#### Shape 3 — Single-property page

```
https://www.zillow.com/homedetails/10124-Pinnacle-Crest-Loop-Austin-TX-78747/119617641_zpid/
```

The actor auto-detects `/12345_zpid/` and enriches just that property (skips search entirely). Useful for one-off lookups or watchlist-style runs.

***

### 📡 Live status & storage records

Every run writes a few records to the run's Storage tab:

| Key | Type | Description |
|---|---|---|
| `RUN_SUMMARY` | JSON | Full run statistics — input, properties (found / enriched / skipped), email yield, billing, plan tier, error info if any. |
| `status.html` | HTML | Auto-refreshing status page rendered live during the run. View via the **Live View** tab in Apify Console. |
| `SKIPPED_ITEMS` | JSON | Per-item list of every URL / property skipped during the run, with reason and category (`not_found`, `error`, `free_limit`, `test_run_cap`). Useful for debugging and re-running the error cohort. |
| `FREE_LIMITS_APPLIED` | JSON | Array of `{id, message}` for every free-tier ceiling hit during this run. Empty/omitted on paid runs. |
| `USER_MESSAGE` | JSON | Onboarding banner shown on a paid user's 1st and 3rd paid run. Empty/omitted otherwise. |
| `UNKNOWN_INPUT_KEYS` | JSON | Lists any input field names that were not part of this actor's schema (e.g. `zipCodes`, `zpids`, filter fields — fields from sibling actors). Empty/omitted if all input keys are recognized. |

***

### 🤖 Programmatic / API use

```bash
## Start a synchronous run + read the dataset directly
curl -X POST "https://api.apify.com/v2/acts/zillow-url-search/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"zillowUrl":"https://www.zillow.com/austin-tx/houses/?searchQueryState=%7B%22filterState%22%3A%7B%22price%22%3A%7B%22min%22%3A400000%2C%22max%22%3A900000%7D%2C%22beds%22%3A%7B%22min%22%3A3%7D%7D%7D", "maxProperties":20}'
```

The actor exposes its schema for MCP / agent consumption — `dataset_schema.json` declares every output column with type and description, and `input_schema.json` declares every input field.

***

### ❓ FAQ

#### Why a URL-input actor instead of typed filters?

Zillow's filter UI is rich (price, beds, school rating, 50+ property features, sold-in-last, days-on-Zillow, etc.). Encoding all of that in JSON input is tedious. URL input lets you set up the search visually on Zillow once, then re-run on any schedule.

#### Is it legal to scrape Zillow?

Public real-estate listing data has been collected and resold for years; this actor extracts data already publicly visible to any browser visitor. You are responsible for complying with Zillow's Terms of Service and any applicable local laws when using the output (especially for outreach to listing agents).

#### Why are some fields null?

Not every Zillow listing has every field populated — agent emails are missing on some listings, year-built is missing on new construction, lot size is missing on condos, etc. Null in the dataset means the source listing didn't expose that data.

#### Can I schedule runs?

Yes — use Apify's built-in **Schedules** feature in the Console. Common pattern: run weekly on the same Zillow URL to track new listings + price changes for that filter combo.

#### What happens when a run is aborted mid-way?

Properties already enriched and pushed to the dataset are persisted. The next run starts from scratch (this actor doesn't checkpoint between runs).

#### How do I avoid the test-mode 10-property cap?

Don't use the default Zillow URL (Beverly Hills, CA listings). Replace `zillowUrl` with your own URL and the cap is restored to your plan's normal limit (paid: unlimited; free: 15 per run).

#### Why does my paid run still show free-plan limits?

Confirm the run was started under your paid plan (the `RUN_SUMMARY.plan` field will say `paid`). API-origin runs sometimes hit a stale auth context — re-running through Console should resolve.

#### Can I do ZIP code or ZPID lookups?

Not in this actor. This is the **single-mode URL search** version. For ZIP code input, use the sibling [`zillow-zip-search`](https://apify.com/afanasenko/zillow-zip-search). For ZPID lookups (or any-mode flexibility), use the multi-mode parent [`zillow-property-agent-data-scraper`](https://apify.com/afanasenko/zillow-property-agent-data-scraper).

#### Does this actor enrich Walk Score and full photo galleries?

Not in this version. Per-property enrichment toggles (`enrichWalkScore`, `enrichPhotos`) are only available on the multi-mode parent actor. Switch to the parent if you need those columns populated.

***

### 🔗 Related actors

| You want to scrape Zillow by… | Use this actor |
|---|---|
| Multi-mode (ZIP + ZPID + URL) — full flexibility | [zillow-property-agent-data-scraper](https://apify.com/afanasenko/zillow-property-agent-data-scraper) |
| ZIP code only — simpler input, single-mode | [zillow-zip-search](https://apify.com/afanasenko/zillow-zip-search) |
| Search URL — paste any Zillow search page | **This actor** |
| MCP server — connect Claude Desktop / Cursor / ChatGPT to Zillow tools | [zillow-mcp-server](https://apify.com/afanasenko/zillow-mcp-server) |

***

### 🛟 Support & feedback

- **Bug or unexpected behavior?** Open an Issue in the actor's Issues tab.
- **Feature request?** Same place — drop a one-paragraph note describing your use case.
- **Star ratings + reviews** in the Apify Store help others find the actor.

***

### ⚖️ Disclaimer

This actor extracts data already publicly displayed on Zillow's website. It is provided "as-is" without warranty. You are responsible for complying with Zillow's Terms of Service and any applicable laws (including data-protection rules like CAN-SPAM, GDPR, CCPA) when using the extracted data, especially for outreach to agents and brokers.

# Actor input Schema

## `zillowUrl` (type: `string`):

Paste any Zillow search URL — e.g. a saved search, a city listings page, a sold-listings URL, or a rentals search with filters. The actor extracts location + filters from the URL's `searchQueryState`, paginates through results, and enriches each property. Single-property URLs (`/12345_zpid/`) are also accepted (skip search, enrich the one property directly).

## `maxProperties` (type: `integer`):

Limit how many properties to process from the URL. Set to 0 for unlimited. Free plan: maximum 15 properties per run regardless of this setting.

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

This actor is single-mode (URL search). Field accepted but ignored — kept here so users pasting input from the multi-mode parent actor `zillow-property-agent-data-scraper` don't see a hard error. To process ZIP codes or ZPIDs, switch to the parent actor or to `zillow-zip-search` (ZIP-only sibling).

## Actor input object example

```json
{
  "zillowUrl": "https://www.zillow.com/beverly-hills-ca/?searchQueryState=%7B%22usersSearchTerm%22%3A%22Beverly+Hills%2C+CA%22%2C%22filterState%22%3A%7B%7D%7D",
  "maxProperties": 0,
  "mode": "url"
}
```

# Actor output Schema

## `liveStatus` (type: `string`):

No description

## `results` (type: `string`):

No description

## `runSummary` (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 = {
    "zillowUrl": "https://www.zillow.com/beverly-hills-ca/?searchQueryState=%7B%22usersSearchTerm%22%3A%22Beverly+Hills%2C+CA%22%2C%22filterState%22%3A%7B%7D%7D"
};

// Run the Actor and wait for it to finish
const run = await client.actor("afanasenko/zillow-url-search").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 = { "zillowUrl": "https://www.zillow.com/beverly-hills-ca/?searchQueryState=%7B%22usersSearchTerm%22%3A%22Beverly+Hills%2C+CA%22%2C%22filterState%22%3A%7B%7D%7D" }

# Run the Actor and wait for it to finish
run = client.actor("afanasenko/zillow-url-search").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 '{
  "zillowUrl": "https://www.zillow.com/beverly-hills-ca/?searchQueryState=%7B%22usersSearchTerm%22%3A%22Beverly+Hills%2C+CA%22%2C%22filterState%22%3A%7B%7D%7D"
}' |
apify call afanasenko/zillow-url-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow URL Search Property Scraper",
        "description": "Extract Zillow real estate listings by pasting any Zillow search URL — filters baked into the URL are honored. 74 output fields including agent contacts, price history, Zestimate, and property details. Pay-per-event pricing — only pay for properties enriched. Free plan: up to 15 properties per run.",
        "version": "0.0",
        "x-build-id": "SNc2F28TgMOaG47at"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/afanasenko~zillow-url-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-afanasenko-zillow-url-search",
                "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/afanasenko~zillow-url-search/runs": {
            "post": {
                "operationId": "runs-sync-afanasenko-zillow-url-search",
                "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/afanasenko~zillow-url-search/run-sync": {
            "post": {
                "operationId": "run-sync-afanasenko-zillow-url-search",
                "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": [
                    "zillowUrl"
                ],
                "properties": {
                    "zillowUrl": {
                        "title": "Zillow Search URL",
                        "type": "string",
                        "description": "Paste any Zillow search URL — e.g. a saved search, a city listings page, a sold-listings URL, or a rentals search with filters. The actor extracts location + filters from the URL's `searchQueryState`, paginates through results, and enriches each property. Single-property URLs (`/12345_zpid/`) are also accepted (skip search, enrich the one property directly).",
                        "default": "https://www.zillow.com/beverly-hills-ca/?searchQueryState=%7B%22usersSearchTerm%22%3A%22Beverly+Hills%2C+CA%22%2C%22filterState%22%3A%7B%7D%7D"
                    },
                    "maxProperties": {
                        "title": "Max Properties per Run",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Limit how many properties to process from the URL. Set to 0 for unlimited. Free plan: maximum 15 properties per run regardless of this setting.",
                        "default": 0
                    },
                    "mode": {
                        "title": "Mode (ignored)",
                        "type": "string",
                        "description": "This actor is single-mode (URL search). Field accepted but ignored — kept here so users pasting input from the multi-mode parent actor `zillow-property-agent-data-scraper` don't see a hard error. To process ZIP codes or ZPIDs, switch to the parent actor or to `zillow-zip-search` (ZIP-only sibling).",
                        "default": "url"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
