Zillow Scraper API: For Sale, Sold, Rentals & Zestimate avatar

Zillow Scraper API: For Sale, Sold, Rentals & Zestimate

Pricing

from $1.70 / 1,000 properties

Go to Apify Store
Zillow Scraper API: For Sale, Sold, Rentals & Zestimate

Zillow Scraper API: For Sale, Sold, Rentals & Zestimate

Zillow scraper and Zillow search scraper. Scrape Zillow homes for sale, Zillow rentals and Zillow sold homes by city, ZIP code or search link, with FSBO, foreclosure and auction filters, plus details with Zestimate, tax value and photos by link, zpid or address. Zillow listings API; Zillow MCP.

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

2

Monthly active users

18 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"
]
}

Search filters

All optional; with none set, a search returns what Zillow shows by default. They apply to places and to search links (a filter you set here overrides the link's own value).

  • Price, beds, baths, size, year built: minPrice, maxPrice (monthly rent for rentals), minBeds, maxBeds, minBaths, minSqft, maxSqft, minYearBuilt, maxYearBuilt.
  • Home types: homeTypes, for example ["house", "condo"]. Sold within: maxDaysOnZillow on sold searches. Order: sortBy (newest, priceLow, priceHigh and more).
  • Listing types: listingTypes picks by agent, by owner (FSBO), new construction, coming soon, auctions, foreclosures, and the off-market foreclosed (bank owned) and preForeclosure homes Zillow shows only when asked. Rows then carry listingSubTypes. includePending adds pending and under-contract homes.
  • Keywords and features: keywords (Zillow's text filter, for example pool or ADU), maxHoa, minLotSqft, maxLotSqft, minParkingSpots, and mustHave (garage, pool, waterfront, single story, air conditioning, basement, city view, open house).
{
"locations": ["Austin, TX"],
"status": "forSale",
"listingTypes": ["foreclosure", "foreclosed", "auction"],
"maxPrice": 400000,
"minBeds": 3,
"maxResultsPerSearch": 100
}

Price history, tax history and schools

Turn on Price history, tax history and schools (includeHistory: true) and each property row also gets priceHistory (every listing, price change and sale with date and price), taxHistory (yearly tax paid and assessed value), schools (rating, grades, distance) and nearby homes. It works for for-sale, pending, sold and off-market homes, and is charged as a normal property.

Apartment buildings: every unit with rent, fees and availability

Rental searches mostly return apartment buildings, not single homes. Add "extractBuildingUnits": true to the JSON input ("all" works too) and each building becomes one row per available unit: unit number, rent, fees, beds, baths, square feet, availability date, lease terms and pet policy, plus the building's amenities, offers and scores. Building links (/apartments/..., /b/...) pasted in Properties always give unit rows. maxUnitsPerBuilding caps spend on very large buildings. Each unit is charged as a property.

{
"locations": ["Austin, TX"],
"status": "forRent",
"extractBuildingUnits": true,
"maxUnitsPerBuilding": 50
}

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 buildings appear in rental searches as one building row each, unless extractBuildingUnits is set in the JSON input; building links in Properties always give one row per unit.

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.