Zillow Scraper API: Property Details, Zestimate & Search avatar

Zillow Scraper API: Property Details, Zestimate & Search

Pricing

from $1.70 / 1,000 properties

Go to Apify Store
Zillow Scraper API: Property Details, Zestimate & Search

Zillow Scraper API: Property Details, Zestimate & Search

Scrape Zillow: homes for sale, for rent and recently sold by city, ZIP or Zillow search link, and property details with Zestimate, rent Zestimate, tax value, agent and photos by link, zpid or street address. No login; also via MCP. $2 per 1,000 properties.

Pricing

from $1.70 / 1,000 properties

Rating

0.0

(0)

Developer

Saulius AutomatesIT

Saulius AutomatesIT

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Get Zillow data in bulk: homes for sale, for rent and recently sold in any city, ZIP code, neighborhood, county or state, or behind any Zillow search link with your filters, and property details with Zestimate for any Zillow link, zpid or street address. Each home comes with price, Zestimate and its range, rent Zestimate, tax assessed value, last sold price, beds, baths, living area, lot, year built, home type, days on Zillow, page views and saves, description, facts, listing agent and broker, MLS id, coordinates and photos.

No Zillow account, no cookies of yours, no browser. $2 per 1,000 properties with full details, $1.50 per 1,000 listings from searches.

What you can use it for

  • Real estate investing: every home for sale in a ZIP code with price, Zestimate and rent Zestimate side by side, to spot underpriced homes and rental yields.
  • Valuations in bulk: paste a list of street addresses and get the Zestimate, its low and high range, rent Zestimate, tax value and last sale for each.
  • Market research: inventory, prices, days on market and sold homes by city or neighborhood, scheduled daily or weekly.
  • Lead generation: listings with the listing agent, broker and MLS id; recently sold homes by area.
  • Rentals: apartments and homes for rent with unit prices by bedroom count.

Why not call Zillow yourself

Zillow has no public API for listings or Zestimates (its old API was shut down). The website loads its data from page JSON and an internal search endpoint that caps every search at 20 pages, answers unknown place names with San Francisco, and pushes back on repeated requests. This Actor resolves places the way Zillow's search box does, pages through results, splits big areas into smaller map boxes to get past the 820-home cap, retries on fresh IPs, and returns plain JSON: one call from Python, JavaScript, cURL or an AI agent.

How to use it

  1. Add Places to search (Austin, TX, 78704) and pick for sale, for rent or sold; or paste Zillow search links with any filters you set on zillow.com; or both.
  2. Add Properties: Zillow links, zpids or street addresses, for one detailed row each.
  3. Turn on Full details for search results if you want the full property row for every home a search finds.
  4. Run it and download the results as JSON, CSV or Excel, or read them through the API.

Input example

{
"locations": ["Austin, TX", "78704"],
"status": "forSale",
"maxResultsPerSearch": 500,
"includeDetails": false,
"searchUrls": ["https://www.zillow.com/seattle-wa/rentals/"],
"properties": [
"2114 Bigelow Ave N, Seattle, WA 98109",
"https://www.zillow.com/homedetails/48841077_zpid/",
"48749425"
]
}

Output

{
"type": "listing",
"zpid": "58312123",
"url": "https://www.zillow.com/homedetails/1011-Brodie-St-APT-28-Austin-TX-78704/58312123_zpid/",
"status": "FOR_SALE",
"price": 600000,
"address": "1011 Brodie St APT 28, Austin, TX 78704",
"city": "Austin", "state": "TX", "zipcode": "78704",
"latitude": 30.24636, "longitude": -97.76386,
"bedrooms": 3, "bathrooms": 3, "livingArea": 1521,
"lotArea": 4173.048, "lotAreaUnit": "sqft",
"homeType": "SINGLE_FAMILY",
"zestimate": null, "rentZestimate": null, "taxAssessedValue": 516022,
"daysOnZillow": 2, "dateSold": null,
"brokerName": "Compass RE Texas, LLC",
"photos": ["https://photos.zillowstatic.com/fp/7a619a56e12d0d6372afe4917d72ff10-p_e.jpg"],
"source": "search", "searchInput": "78704", "searchStatus": "forSale", "matchedPlace": "78704", "position": 2
}

Rentals in apartment buildings have isBuilding: true, the building name and units with price per bedroom count, and no zpid.

{
"type": "property",
"zpid": "48749425",
"url": "https://www.zillow.com/homedetails/2114-Bigelow-Ave-N-Seattle-WA-98109/48749425_zpid/",
"status": "OTHER",
"price": 2155400,
"zestimate": 2155400, "zestimateLow": 1939860, "zestimateHigh": 2370940,
"rentZestimate": 6769,
"streetAddress": "2114 Bigelow Ave N", "city": "Seattle", "state": "WA", "zipcode": "98109",
"county": "King County",
"bedrooms": 4, "bathrooms": 3, "livingArea": 3470, "lotSize": 4680, "yearBuilt": 1924,
"homeType": "SINGLE_FAMILY",
"taxAssessedValue": 2044000, "propertyTaxRate": 0.82, "lastSoldPrice": 995000,
"daysOnZillow": 6522, "pageViews": null, "favorites": null,
"description": null,
"agentName": null, "brokerName": null, "mlsId": null,
"neighborhood": "Queen Anne", "pricePerSquareFoot": 621,
"facts": { "homeType": "SingleFamily", "lotSize": "4,680 sqft", "yearBuilt": 1924, "parkingFeatures": ["Off-street", "Garage"] },
"photos": ["https://photos.zillowstatic.com/fp/..."],
"source": "address", "input": "2114 Bigelow Ave N, Seattle, WA 98109",
"matchedAddress": "2114 Bigelow Ave N Seattle, WA 98109"
}

For-sale homes add the listing description, agent name and phone, broker, MLS name and id, page views and saves, HOA fee and price per square foot. priceHistory and taxHistory are filled when Zillow puts them in the page (some showcase listings); otherwise they are null.

Good to know

  • Search size: Zillow shows at most about 820 homes per search (20 pages of 41). Ask for more and the Actor splits the area into map quarters, again and again where needed, and removes duplicates. The run summary (OUTPUT in the key-value store) shows how many homes Zillow has per search and how many you got.
  • Places are matched with Zillow's own search box: the first place it suggests is used, and the row says which (matchedPlace). A name Zillow does not know comes back as a free NOT_FOUND row instead of another city's homes.
  • Addresses are matched the same way; the row carries the address Zillow matched (matchedAddress).
  • Zestimates are Zillow's estimates; some homes and some states have none, and the field is then null.
  • Apartment pages (/apartments/..., /b/...) are not supported as inputs; their homes appear in rental searches as building rows.

Pricing

Pay per result, no subscription:

ItemPrice
Property (full details)$0.002 ($2 per 1,000)
Listing (search result)$0.0015 ($1.50 per 1,000)
Run start$0.00005

Bronze, Silver and Gold Apify plans pay 5%, 10% and 15% less. With Full details for search results on, each home is charged once, as a property. Inputs that give nothing (unknown place, deleted home, a search with no homes) come back as free error rows that say why.

Use it from code or an AI agent

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("sauliusautomatesit/zillow-scraper-api").call(run_input={
"locations": ["78704"],
"status": "forSale",
"maxResultsPerSearch": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["price"], item["zestimate"], item["address"])

As an MCP tool for Claude, Cursor or any MCP client: https://mcp.apify.com/?tools=sauliusautomatesit/zillow-scraper-api.

Notes

The Actor reads only public data that Zillow shows to any logged-out visitor, and it does not collect agents' e-mail addresses. Use the data in line with Zillow's terms and the privacy and fair housing laws that apply to you.