# Zillow Property Records

Full Zillow property dossier — price, beds/baths, valuation, tax & price history, schools, agent, photos and more — for every property surfaced by a ZIP code, a typed location, or a Zillow search URL.

**Pricing:** $1.5 / 1k results

**Endpoint:** `POST /api/v1/agents/zillow/properties/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `zipCodes` | array | No | US ZIP codes to pull properties from, one per line (e.g. 10014, 90210). Returns the full record for each property found. |
| `searchTerm` | string | No | A typed location to search — a city, neighborhood, or borough (e.g. 'Brooklyn, NY', 'Austin, TX'). Returns the full record for each property found. |
| `searchUrls` | array | No | Paste a real Zillow search-results URL (one per line). Copy it from your browser after filtering on zillow.com — the URL must contain '?searchQueryState='. Returns the full record for each property in the results. |
| `propertyStatus` | string | No | Which listings to look for. Zillow uses a different data source per status, so pick the one matching your search. |
| `priceMin` | integer | No | Minimum price filter (monthly price for rentals). By ZIP only. |
| `priceMax` | integer | No | Maximum price filter (monthly price for rentals). By ZIP only. |
| `daysOnZillow` | string | No | Only properties listed within this window (for Recently Sold, days since sold). By ZIP only. |
| `maxResults` | integer | No | Maximum number of property records to return (the cost cap). Each record is one full Zillow dossier. |

## Example

```bash
curl -X POST https://api.mindcase.co/api/v1/agents/zillow/properties/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/api/v1/agents/zillow/properties/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/api/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/api/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `source` | Source | text |
| `sourceInput` | Source Input | text |
| `buildingUnit` | Building Unit | text |
| `zillowUrl` | Zillow URL | url |
| `zpid` | ZPID | number |
| `street` | Street | text |
| `city` | City | text |
| `state` | State | text |
| `zip` | Zip | text |
| `zipPlus4` | Zip Plus 4 | text |
| `county` | County | text |
| `countyFips` | County FIPS | text |
| `parcelNumber` | Parcel Number | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `neighborhood` | Neighborhood | text |
| `subdivision` | Subdivision | text |
| `status` | Status | text |
| `detailedStatus` | Detailed Status | text |
| `propertyType` | Property Type | text |
| `listingType` | Listing Type | text |
| `underContract` | Under Contract | text |
| `isOpenHouse` | Is Open House | boolean |
| `openHouses` | Open Houses | object_array |
| `daysOnZillow` | Days on Zillow | number |
| `listedDate` | Listed Date | text |
| `price` | Price | currency |
| `pricePerSqft` | Price Per Sqft | currency |
| `priceCut` | Price Cut | currency |
| `priceCutDate` | Price Cut Date | text |
| `zestimate` | Zestimate | currency |
| `zestimateLowPercent` | Zestimate Low Percent | percentage |
| `zestimateHighPercent` | Zestimate High Percent | percentage |
| `rentZestimate` | Rent Zestimate | currency |
| `lastSoldPrice` | Last Sold Price | currency |
| `lastSoldDate` | Last Sold Date | text |
| `taxAssessedValue` | Tax Assessed Value | currency |
| `annualTaxAmount` | Annual Tax Amount | currency |
| `propertyTaxRate` | Property Tax Rate | percentage |
| `annualHomeInsurance` | Annual Home Insurance | currency |
| `monthlyHoaFee` | Monthly HOA Fee | currency |
| `likelyToSellScore` | Likely to Sell Score | number |
| `bedrooms` | Bedrooms | number |
| `bathrooms` | Bathrooms | number |
| `fullBaths` | Full Baths | number |
| `halfBaths` | Half Baths | number |
| `livingAreaSqft` | Living Area (sqft) | number |
| `lotSizeSqft` | Lot Size (sqft) | number |
| `yearBuilt` | Year Built | number |
| `stories` | Stories | number |
