npm package: @striderlabs/mcp-zillow
Description: MCP server for Zillow real estate search and listings
Author: StriiderLabs
Latest version: 1.0.0

# @striderlabs/mcp-zillow

An MCP (Model Context Protocol) server for Zillow real estate search and listings. Search for homes, get property details, retrieve Zestimates, and search rental listings — all from within Claude or any MCP-compatible client.

## Installation

### 1. Install the package

```bash
npm install @striderlabs/mcp-zillow
```

### 2. Install Playwright Chromium browser

```bash
npx playwright install chromium
```

## MCP Configuration

### Claude Desktop

Add to your `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "zillow": {
      "command": "npx",
      "args": ["mcp-zillow"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "zillow": {
      "command": "mcp-zillow"
    }
  }
}
```

## Tools

### `search_homes`

Search Zillow for homes for sale by location with optional filters.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location` | string | Yes | City, state, zip code, or neighborhood (e.g. "Seattle, WA" or "90210") |
| `min_price` | number | No | Minimum listing price in dollars |
| `max_price` | number | No | Maximum listing price in dollars |
| `min_beds` | number | No | Minimum number of bedrooms |
| `max_beds` | number | No | Maximum number of bedrooms |
| `min_baths` | number | No | Minimum number of bathrooms |
| `home_type` | string | No | One of: `single_family`, `condo`, `townhouse`, `multi_family`, `land`, `mobile` |
| `max_results` | number | No | Maximum results to return (default: 10) |

**Example:**
```
Search for 3-bedroom homes in Austin, TX under $500,000
```

---

### `get_listing`

Get detailed information about a specific Zillow listing including price history, school ratings, tax history, and full property details.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No* | Full Zillow listing URL |
| `zpid` | string | No* | Zillow property ID |

*At least one of `url` or `zpid` is required.

**Example:**
```
Get details for Zillow property zpid 12345678
```

---

### `get_estimates`

Get the Zestimate (Zillow's estimated market value) and rent estimate for a specific address.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `address` | string | Yes | Full property address (e.g. "123 Main St, Seattle, WA 98101") |

**Example:**
```
What is the Zestimate for 1600 Pennsylvania Ave NW, Washington, DC 20500?
```

---

### `save_home`

Save a home to Zillow favorites. Note: This requires Zillow authentication and currently returns instructions for manual saving.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `zpid` | string | Yes | Zillow property ID to save |
| `note` | string | No | Optional note to attach |

---

### `search_rentals`

Search Zillow for rental properties by location with optional filters.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location` | string | Yes | City, state, zip code, or neighborhood (e.g. "Austin, TX") |
| `min_price` | number | No | Minimum monthly rent in dollars |
| `max_price` | number | No | Maximum monthly rent in dollars |
| `min_beds` | number | No | Minimum number of bedrooms |
| `max_beds` | number | No | Maximum number of bedrooms |
| `max_results` | number | No | Maximum results to return (default: 10) |

**Example:**
```
Find 2-bedroom apartments for rent in Brooklyn, NY under $3000/month
```

## Example Usage

Once configured in Claude Desktop, you can ask questions like:

- "Find homes for sale in Denver, CO with at least 3 bedrooms under $600,000"
- "What are rental prices like in San Francisco for 1-bedroom apartments?"
- "Get the Zestimate and details for 123 Main St, Portland, OR 97201"
- "Show me condos for sale in Miami Beach under $400,000"
- "Search for townhouses in Chicago with 2+ baths between $300,000 and $500,000"

## How It Works

This MCP server uses Playwright to automate a headless Chromium browser to access Zillow. It:

1. Launches a stealth-configured browser (mimics real user behavior)
2. Navigates to relevant Zillow pages
3. Extracts data from Zillow's embedded `__NEXT_DATA__` JSON
4. Falls back to CSS selector parsing if JSON is unavailable
5. Returns structured data to the MCP client

## Notes

- **Rate limiting**: Zillow may rate-limit or block automated requests. The server uses stealth techniques to minimize this.
- **Authentication**: Some features (saving homes) require a Zillow account. The server operates in anonymous mode for search and data retrieval.
- **Data freshness**: Data is fetched live from Zillow on each request.
- **Playwright**: The server requires Chromium to be installed via `npx playwright install chromium`.

## Development

```bash
# Clone the repo
git clone https://github.com/markswendsen-code/mcp-zillow.git
cd mcp-zillow

# Install dependencies
npm install

# Install Playwright browser
npx playwright install chromium

# Build
npm run build

# Run in development mode
npm run dev
```

## License

MIT