Zillow Search Scraper
Pricing
$1.00 / 1,000 results
Go to Apify Store
Zillow Search Scraper
Zillow Search Scraper Scrapes Zillow property listings by location. Supports For Sale, For Rent, and Sold searches. Inputs: - query: Location ("New York, NY") - searchType: "For Sale", "For Rent", or "Sold" Outputs property data in JSON including price, address, beds/baths, status, and listing ID.
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
axly
Maintained by Community
Actor stats
10
Bookmarked
204
Total users
22
Monthly active users
24 days ago
Last modified
Categories
Share
This Apify Actor scrapes property listings from Zillow based on a location search query. It supports searching properties that are For Sale, For Rent, or have been Sold.
Features
- Search properties by location query (e.g. city names, addresses)
- Filter by listing type (For Sale, For Rent, Sold)
- Get detailed property information
- Handles pagination automatically
- Robust error handling and retry mechanisms
- Bypasses Zillow's anti-scraping protections
Installation
Prerequisites
- Python 3.9+
- Apify CLI (optional, for local development)
Deployment to Apify
- Log in to your Apify account
- Create a new Actor
- Deploy this code to the Actor
- Configure the Actor's input
Input Parameters
The Actor accepts the following input parameters:
| Parameter | Type | Description | Default |
|---|---|---|---|
query | String | Location to search (e.g., 'New York, NY') | "New York, NY" |
homeStatuses | String | Listing status to include (select one). Options: newConstruction, foreclosure, comingSoon, fsbo, fsba, auction, forRent, recentlySold | "newConstruction" |
minPrice | Integer | Minimum price in USD | - |
maxPrice | Integer | Maximum price in USD | - |
minBedrooms | Integer | Minimum number of bedrooms | - |
maxBedrooms | Integer | Maximum number of bedrooms | - |
minBathrooms | Integer | Minimum number of bathrooms | - |
maxHoaFees | Integer | Maximum HOA fees per month in USD | - |
homeTypes | Array | Property types. Options: singleFamily, multiFamily, condo, manufactured, land, townhome, apartment | - |
includeNoHoaData | Boolean | Include homes with no HOA data | true |
sortOrder | String | Sort order: recentlyChanged, relevance, priceLowToHigh, priceHighToLow | "recentlyChanged" |
maxResults | Integer | Maximum number of results to return | 500 |
Output
Sample output
{"property": {"zpid": 2057430830,"location": {"latitude": 37.74573,"longitude": -122.47662},"address": {"streetAddress": "2256 20th Ave #A","zipcode": "94116","city": "San Francisco","state": "CA","buildingId": 2082971133},"media": {"propertyPhotoLinks": {"highResolutionLink": "https://photos.zillowstatic.com/fp/7fb5cc0d6ed64f744cf80e1d5907ecbb-p_f.jpg"},"thirdPartyPhotoLinks": {"streetViewLink": "https://maps.googleapis.com/maps/api/streetview?size=1280x256&location=37.745731353759766,-122.47662353515625&key=AIzaSyBWYJWCA8FNMQvSe_k3LKfDGJaEgdKwsco&signature=g4i8FaLhoo0Ns5Ux5NNzm1rByjY=","satelliteLink": "https://maps.googleapis.com/maps/api/staticmap?mobile=false&sensor=true&maptype=satellite&size=1280x512&zoom=19¢er=37.745731353759766,-122.47662353515625&key=AIzaSyBWYJWCA8FNMQvSe_k3LKfDGJaEgdKwsco&signature=vIMYpPN6GsyyZi4fMDeR8jGVxg0=","streetViewMetadataLink": "https://maps.googleapis.com/maps/api/streetview/metadata?location=37.745731353759766,-122.47662353515625&key=AIzaSyBWYJWCA8FNMQvSe_k3LKfDGJaEgdKwsco&signature=1umhv61ahkKyPD3U4YPpf-49mVs="},"hasVRModel": false,"hasVideos": false,"hasApprovedThirdPartyVirtualTour": false,"allPropertyPhotos": {"highResolution": ["https://photos.zillowstatic.com/fp/7fb5cc0d6ed64f744cf80e1d5907ecbb-p_f.jpg","https://photos.zillowstatic.com/fp/243f899a4696ec0d6725c5604708c3e3-p_f.jpg","https://photos.zillowstatic.com/fp/2d559621800ecafc96630537061ad6c7-p_f.jpg","https://photos.zillowstatic.com/fp/cb7464b60d3362423f40371e114fb541-p_f.jpg","https://photos.zillowstatic.com/fp/121a9268eeb1aaaeee94b9f94aeec9ad-p_f.jpg","https://photos.zillowstatic.com/fp/5867ab8a369658ebf132aa351950caec-p_f.jpg","https://photos.zillowstatic.com/fp/5e0a1c153807a9b757e9445082bc3d7d-p_f.jpg","https://photos.zillowstatic.com/fp/cf0c3954e31995204c6d495e43532a5a-p_f.jpg","https://photos.zillowstatic.com/fp/eca26db691c6d06b35fb51ba2a505a6e-p_f.jpg"]}},"isFeatured": false,"isShowcaseListing": false,"rental": {"areApplicationsAccepted": true,"isRoomForRent": false,"isBuildToRent": false,"isRentByBed": false,"marketingTreatments": ["zillowRentalManager"]},"currency": "usd","country": "usa","groupType": "apartmentComplex","listingDateTimeOnZillow": 1742502731012,"bestGuessTimeZone": "America/Los_Angeles","isUnmappable": false,"listCardRecommendation": {"flexFieldRecommendations": [{"displayString": "16 hours ago","flexFieldType": "timeOnInfo","contentType": "timeOnInfo"},{"displayString": "Apply instantly","flexFieldType": "unknown","contentType": "frZillowApplication"}],"ctaRecommendations": [{"displayString": "Request a tour","contentType": "REQUEST_A_TOUR"}]},"bathrooms": 1.0,"bedrooms": 2,"livingArea": 400,"propertyType": "townhome","listing": {"listingStatus": "forRent","providerListingID": "1c62p4frzp5g7","listingSubType": {}},"daysOnZillow": 0,"isPreforeclosureAuction": false,"price": {"value": 2195,"pricePerSquareFoot": 5},"estimates": {"zestimate": 609800,"rentZestimate": 1847},"zillowOwnedProperty": {"isZillowOwned": false},"hdpView": {"listingStatus": "forRent","price": 2195,"hdpUrl": "/homedetail/MobileAppHDPShopperPlatformServicePage.htm?fromApp=true&p=android&variant=FOR_RENT#zpid=2057430830&homeDetailsVariant=FOR_RENT&webviewLayout=doubleScroll&showFactsAndFeatures=true&fromApp=true&gmaps=true&streetview=true"},"region": {},"personalizedResult": {"isViewed": false},"propertyDisplayRules": {"canShowAddress": true,"canShowOnMap": true,"agent": {},"mls": {},"builder": {},"soldByOffice": {},"listingCategory": "category2"},"ssid": 100066},"resultType": "property"}
Usage
API Usage Example
const Apify = require('apify');Apify.main(async () => {const input = {query: "San Francisco, CA",};const client = Apify.newClient();const run = await client.actor("your-username/zillow-search-scraper").call(input);// Process resultsconst dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${dataset.items.length} listings`);});