Zillow Search Scraper
Pricing
from $1.00 / 1,000 results
Zillow Search Scraper
Zillow shows only a few hundred homes per search. Get every listing from any search link, city or ZIP: for sale, for rent and sold, with price, Zestimate, beds, baths, photos, broker and agent details. Duplicates removed. No login or cookies.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawl Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
🚀 What is Zillow Search Scraper?
Zillow Search Scraper is an Apify Actor that collects listings from Zillow searches in bulk. Paste Zillow search links or type a city, ZIP code, county or neighborhood, and get one row per listing for homes for sale, homes for rent and recently sold homes, with price, Zestimate, address, beds, baths and photos. No login or cookies.
- 🔗 Links or plain places. Mix Zillow search links and places such as
Austin, TX,78701orBrooklyn NYin one run. Typing a ZIP code is the quickest way to set up a Zillow zip code search scraper run. - 🗺️ Beyond one results page. The default Pagination with zoom-in method is designed to return every listing of a search, even past the number of results Zillow shows on its own pages.
- 🎛️ Filters in the form. Set listing status, home types, price range, minimum bedrooms, days on Zillow and sort order on top of the filters already in your links.
- 📊 Clear tables. Results appear in sections such as price and value, location, photos and agent and broker, plus separate tables for photos, price history, open houses and rental units.
- ⚡ Live results. Listings arrive in the Output tab page by page while the run is going.
- 🔁 No repeats. Every Zillow listing scraper run saves a listing once, even when more than one of your searches finds it.
- 📦 Easy export. Export Zillow search results as JSON, CSV, Excel, XML or HTML, or read them through the API.
Click Try for free, add your searches and press Start.
📊 What data can you extract from Zillow?
The Actor saves one row per listing, so you can scrape Zillow listings into a clean table. From there, export Zillow data to Excel, or download JSON, CSV, XML or HTML. Fields marked "details" are filled only when Property details is on.
| Field | Description | Example |
|---|---|---|
zpid | Zillow property ID (ZPID). | 305433145 |
listingPrice | Asking price or monthly rent: amount, currency and formatted text. Empty for sold homes. | amount 400000, currency USD |
listingAddress | Street, unit, city, state, ZIP code, county, neighborhood, time zone and full address. | 11900 Cimaizon Dr, Austin, TX 78725 |
coordinates | Latitude and longitude of the home. | 30.217157, -97.63407 |
listingStatus | forSale, forRent, recentlySold, pending, comingSoon and similar. | forSale |
propertyUrl | Link to the listing on Zillow. | Zillow listing link |
cardType | home for a single home, building for an apartment building with several units. | home |
homeType | SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, APARTMENT, MANUFACTURED, LOT and similar. | SINGLE_FAMILY |
bedrooms, bathrooms | Number of bedrooms and bathrooms. | 4 and 3.0 |
livingArea, livingAreaUnit | Living area in square feet and its unit. | 2174 and sqft |
lotArea, lotAreaSqft | Lot size as value, unit and text, and converted to square feet. | 10115 |
zestimate | Zillow's estimated market value in USD. | 395900 |
rentZestimate | Zillow's estimated monthly rent in USD. | 2483 |
zestimateDiffPct | How far the Zestimate is above (+) or below (-) the asking price, in percent. | -1.0 |
pricePerSqft | Asking price divided by living area (for-sale homes). | 184 |
taxAssessedValue | Tax assessed value in USD. | 436940.0 |
priceChange, priceChangedAt | Last price change in USD (negative means a price cut) and its date (YYYY-MM-DD). | -46000 and 2026-10-07 |
priceReduction | Price cut text shown on the card. | Price cut with its date |
daysOnZillow | Days since the home was listed on Zillow. | 10 |
listingSoldPrice, dateSold | Sold price for recently sold homes where it is public, and the sold date (YYYY-MM-DD). | 2026-05-20 |
mainImage, listingPhotos, photoCount | Main photo URL, all photo URLs with captions where available, and the number of photos. | 19 |
hasImage, hasVideo, has3DModel | Whether the listing has a photo, a video or a 3D home tour. | true, false, true |
broker | Listing brokerage name, phone and buyer brokerage. | Keller Williams Realty |
mlsId | MLS listing number when available. | 2324517 |
openHouse | Open house description, start, end and full schedule. | Open House - 2:00 - 4:00 PM |
listingType | Flags for sale by agent or owner, coming soon, pending, open house, new home, auction, foreclosure, bank owned and contingency. | isFSBA true |
statusText, homeStatus, listedBy | Status label on the card, home status and listing type label. | Active, FOR_SALE, For Sale (Broker) |
isNewConstruction, isFeaturedListing, isZillowOwned, isNonOwnerOccupied | New construction, featured, Zillow-owned and non-owner-occupied flags. | false, false, false, true |
buildingName, availableUnits | Name of the apartment building and the number of available units. | The Shoal and 2 |
rentUnits, minRent, maxRent | Units offered in a building (beds, price text, price amount) and the lowest and highest base rent per month. | 1499.0 and 3495.0 |
requiredMonthlyFees, availabilityDate, priceIncludesMonthlyFees, isRentalWithBasePrice | Minimum required monthly fees, the date a rental becomes available and two rent flags. | 137.0, 2026-10-15 |
factsAndFeatures, marketingTagline, cardHighlight, marketingTreatments | Facts and marketing text shown on the card. | Showcase |
sourceSearchUrl, searchRank, totalResultsInSearch | The search that found the listing, its position in that search and the total listings Zillow reports for it. | 1 and 5653 |
scrapedAt, isValid | When the run collected the listing (UTC) and whether it has an ID and an address. | 2026-10-17T14:51:04.000Z |
description (details) | Full listing description. | Text of the listing |
priceHistory (details) | Price history events with date, event, price, price per sqft and source, for rental listings when Zillow shows it. | Listed for rent |
buildingDetails (details) | Apartment building facts: units, scores, pet policy, schools and available units. | totalUnits 13 |
agentName, agentPhone, agentEmail, mlsName (details) | Listing agent name, phone and email when published, and the MLS name. | Sam L |
yearBuilt, parkingSpaces, garageSpaces, propertySubType (details) | Year built, parking, garage and property sub type. | 1983 |
hoaMonthly, hoaText, propertyTaxRate (details) | Monthly HOA fee, HOA text as shown and property tax rate in percent. | Value or null |
neighborhood, county (details) | Neighborhood and county names. | Sheepshead Bay and Kings |
datePosted, lastSoldPrice, lastSoldDate, pageViews, favorites (details) | Posting date, last sold price and date, Zillow page views and how many people saved the listing. | Value or null |
detailsFetched (details) | True when the property page was read, false when it could not be read, empty when the listing has no property page. | true |
Zillow Zestimate values arrive in zestimate, and zestimateDiffPct shows how far that value sits from the asking price.
Set Listing status to recently sold and enter a ZIP code to list Zillow sold homes by ZIP code, with dateSold. Zillow sold prices arrive in listingSoldPrice where they are public, and a field that Zillow does not show for a listing stays null.
Switching on Property details turns the run into a deeper Zillow data extractor, because the Actor then opens one extra page per listing for the "details" fields.
💡 Use cases for Zillow data
Teams use the rows from this Zillow data scraper for market research, investing, property management and lead generation.
- Price tracking: Watch Zillow listings for sale across cities or ZIP codes and follow
priceChange,priceChangedAtanddaysOnZillowto spot price cuts. - Comparable sales: Recently sold searches from a Zillow sold homes scraper run give you comp sets built from
dateSold,livingAreaandbedrooms. - Rent and rental operations: Compare Zillow listings for rent by neighborhood, and use
minRentandmaxRentto compare apartment buildings. Property managers can schedule a Zillow rental scraper job and followavailabilityDateandrequiredMonthlyFeesover time. - Investment screening: Investors can use the Actor as a Zillow real estate scraper to find homes where
zestimateDiffPctshows the Zestimate above the asking price. - Lead lists: Collect broker names, and with Property details on, agent names, phone numbers and emails where Zillow publishes them.
- Research datasets: Build a Zillow real estate dataset for analysts, with one row per listing.
- Dashboards and maps: Feed Zillow real estate data into spreadsheets and BI tools, or plot
coordinateson a map for neighborhood analysis. - App backends: Read the dataset over HTTP and use it like a Zillow listings API for your own product.
🛠️ How to scrape Zillow listings
- Create a free Apify account and log in to Apify Console.
- Open Zillow Search Scraper.
- Paste Zillow search links or type places in Search URLs or places, one per line.
- Choose the extraction method, Results per search and any filters such as listing status, home types, price range, minimum bedrooms, days on Zillow and sort order.
- Turn on Property details if you need descriptions, agent contacts and rental price history.
- Click Start and watch listings arrive in the log and in the Output tab.
- Download the dataset as JSON, CSV, Excel, XML or HTML.
How to scrape Zillow data with property details
Turn on Property details (includeDetails) to scrape Zillow data beyond the search card: description, agent name, phone and email where published, MLS name, HOA fee, tax rate, year built, parking, county, neighborhood, page views, saves and high-resolution photos. The run is slower because the Actor opens one extra page per listing. Price history is available for rental listings only, and recently sold homes usually have no description.
How to export Zillow search results to Excel
Run your searches, open the Storage tab, choose the default dataset and pick Excel in the export options. Choose CSV instead for a Zillow to CSV file.
💰 How much does it cost to scrape Zillow?
Zillow Search Scraper uses tiered pay-per-event pricing: you pay for each result the Actor saves, and the price per 1,000 results is lower on higher pricing tiers.
| Pricing tier | Price per 1,000 results |
|---|---|
| Free | $1.5 |
| Bronze | $1.35 |
| Silver | $1.2 |
| Gold, Platinum and Diamond | $1 |
For example, 1,000 results cost $1.5 at the Free tier price and $1 at the Gold, Platinum and Diamond tier price. A tiny Actor Start event of $0.00005 is charged once per run start. Searches that return no listings are never billed.
See the Pricing tab for current rates.
⬇️ Input
The only required input is Search URLs or places (urls): one Zillow search link or place per line, such as Austin, TX, 78701, Brooklyn NY or Travis County, TX. Bulk input is supported, so the Actor can handle many searches as a Zillow bulk scraper job.

See the Input tab for every option. These are the options and their allowed values:
| Field | What it does |
|---|---|
urls | Required. Zillow search links or places, one per line. |
extractionMethod | PAGINATION_WITH_ZOOM_IN (every listing, default), PAGINATION (Zillow's page limit) or MAP_MARKERS (up to about 500 per search, fastest). |
resultsLimit | Maximum listings to save from each search. 0 means every listing. Default 10. |
listingStatus | url (keep as in the link; plain places are searched for sale), for_sale, for_rent or sold. |
homeTypes | Any of house, condo, townhouse, multi_family, apartment, manufactured, land. Empty means all types. |
minPrice, maxPrice | Lowest and highest price in USD. For rentals this is the monthly rent. 0 means no limit. |
minBeds | Only homes with at least this many bedrooms, from 0 to 10. 0 means any. |
daysOnZillow | any, 1, 7, 14, 30, 90, and for recently sold homes 6m, 12m, 24m, 36m. |
sort | default (as in the link), newest, price_low, price_high, beds, bathrooms, size, lot_size, zestimate_high, zestimate_low or relevance. |
includeDetails | Opens every listing for the "details" fields. Slower. |
proxyConfiguration | Optional proxy settings for the run. |
Filters are added on top of the filters already in your links. Example input:
{"urls": ["https://www.zillow.com/austin-tx/"],"extractionMethod": "PAGINATION_WITH_ZOOM_IN","resultsLimit": 10,"listingStatus": "url","minPrice": 0,"maxPrice": 0,"minBeds": 0,"daysOnZillow": "any","sort": "default","includeDetails": false}
⬆️ Output
The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and doesn't show all the fields. Use the Storage tab as a simple Zillow data exporter and download the dataset as JSON, CSV, Excel, XML or HTML.

Example output for one listing from the input above, shortened (an example, not a captured run):
{"zpid": "305433145","zestimate": 395900,"has3DModel": true,"hasVideo": false,"hasImage": true,"isZillowOwned": false,"listingPrice": {"amount": 400000,"currency": "USD"},"listingAddress": {"street": "11900 Cimaizon Dr","unit": null,"city": "Austin","state": "TX","zipCode": "78725","county": null,"neighborhood": null,"timeZone": null,"full": "11900 Cimaizon Dr, Austin, TX 78725"},"coordinates": {"latitude": 30.217157,"longitude": -97.63407},"listingStatus": "forSale","propertyUrl": "https://www.zillow.com/homedetails/11900-Cimaizon-Dr-Austin-TX-78725/305433145_zpid/","cardType": "home","homeType": "SINGLE_FAMILY","priceChange": -46000,"priceChangedAt": "2026-10-07","bedrooms": 4,"bathrooms": 3.0,"livingArea": 2174,"livingAreaUnit": "sqft","daysOnZillow": 10,"rentZestimate": 2483,"taxAssessedValue": 436940.0,"mainImage": "https://photos.zillowstatic.com/fp/1eef4560d63824c1cf7a1355370d3e28-p_e.jpg","photoCount": 19,"broker": {"name": "Keller Williams Realty","phoneNumber": null,"buyerBrokerName": null},"sourceSearchUrl": "https://www.zillow.com/austin-tx/","pricePerSqft": 184,"zestimateDiffPct": -1.0,"mlsId": "2324517","statusText": "Active","homeStatus": "FOR_SALE","listedBy": "For Sale (Broker)","searchRank": 1,"totalResultsInSearch": 5653,"scrapedAt": "2026-10-17T14:51:04.000Z","isValid": true}
Section tables and extra tables
The main listing table is split into sections you can open in the Output tab or read through the API.
| Table | Contents |
|---|---|
| Overview | Photo, address, price, size and status of every listing. |
| Price & value | Asking price, price per sqft, Zestimates, tax value and price changes. |
| Sold homes | Sold price and dates for recently sold homes. |
| Location | Full address, county, neighborhood and map coordinates. |
| Property facts | Home type, rooms, size, lot, year built, parking and HOA. |
| Listing type | Status, who lists it and listing flags. |
| Photos & media | Main photo, photo count, all photos and video or 3D tour flags. |
| Agent & broker | Brokerage, agent contact, MLS and card marketing. |
| Open houses | Open house description and times. |
| Rentals & buildings | Apartment buildings, units, rent range, fees and availability. |
| Property details | Description, posting date, views, saves, price history and building details (Property details on). |
| Run info | Which search found each listing, its rank and when it was collected. |
Separate tables hold one row per listing photo, per price history event (rental listings, when Zillow shows it), per open house time slot and per unit type in an apartment building. A Searches table has one row per search you gave, with its status and counts, and a Failed inputs table lists searches that returned no listings, with the reason. A SUMMARY record in the key-value store holds the run totals, per-search status and notes.
⚠️ Limitations and error handling
- Spend limit: A spend limit you set stops the run cleanly when it is reached.
- Search links only: Property pages (
/homedetails/...) are single homes, not searches, and are reported in the Failed inputs table. - Extraction method:
PAGINATIONstops at Zillow's page limit andMAP_MARKERSreturns up to about 500 listings per search. Run a small test first to see how many listings your search returns. - Empty fields: A field that Zillow does not show for a listing stays
null. Sold prices are only filled where they are public, and price history is available for rental listings only. - Zillow stops answering: The run ends early and keeps the listings already saved, and the run status says that results may be incomplete.
- Public data only: Private data and anything behind a login is not collected.
Failed inputs rows have four fields:
| Field | Meaning |
|---|---|
input | The search you gave. |
sourceSearchUrl | The Zillow search link that was used, when one was found. |
isValid | False for a search that gave no listings. |
error | The reason, in plain words. |
🔌 Integrating Zillow Search Scraper with other apps
Zillow Search Scraper runs on the Apify platform, so you can start it from the Apify API, schedule it and connect its dataset to other tools. Developers can call the Actor as a Zillow scraper API through the Apify API and read the listings from the run's default dataset; see the API tab for ready-made JavaScript, Python and CLI snippets.
- Connect the dataset to Make, Zapier, n8n or Google Sheets through Apify integrations, webhooks or the API.
- Use schedules to keep a Zillow listings scraper feed fresh in your spreadsheet or database.
- Let AI agents run the Actor through the Apify MCP server.
🔗 More Apify Actors by crawl_craft
| Actor | What it extracts | When to use it |
|---|---|---|
| Zillow Detail Scraper | Full property details from links, addresses or zpids: price, Zestimate, rent estimate, price and tax history, schools, comps and agents. | Use it when you need a Zillow property scraper for known homes. Use Zillow Search Scraper first to find the listings in a search. |
| Google Job Scraper | Google Jobs listings: title, company, location, salary, posting date, apply links and description. | Another data Actor from the same account, for job listing data instead of real estate. |
| Etsy Scraper | Etsy listings, shops, reviews, prices, sales estimates and keyword research. | Another data Actor from the same account, for marketplace data instead of real estate. |
⚖️ Is it legal to scrape Zillow?
Zillow Search Scraper collects only what Zillow shows publicly in its search results and does not use a Zillow account. Results can still contain personal data, such as agent names, phone numbers and emails where Zillow publishes them, so collect it only with a legitimate reason and consider privacy laws such as the GDPR (Regulation (EU) 2016/679) and Zillow's terms. Consult a lawyer if you are unsure. Read Apify's posts on the legality of web scraping and ethical web scraping.
❓ FAQ
Can you scrape Zillow?
Yes. As a Zillow web scraper, the Actor reads public search results that any visitor can see, with no Zillow account, cookies or login. You are responsible for using the data in line with Zillow's terms and the laws that apply to you.
Which links work?
Zillow search pages: city, ZIP code, county or neighborhood pages, and links with your own filters and map area. You can also type a place instead of a link. Property pages are single homes, not searches, and appear in the Failed inputs table.
How many listings can I get?
Set Results per search; 0 means every listing. With PAGINATION Zillow's page limit applies, and MAP_MARKERS returns up to about 500 listings per search.
Can I use a Zillow scraper free of charge?
You can try this Zillow scraper tool with a small run first. The price per 1,000 results is on the Pricing tab.
Do I need a Zillow API key?
No. The input needs only your searches. There is no Zillow account, cookie or API key field.
Is this a Zillow API alternative?
It is an option when you want listing rows from Zillow searches without building your own connection: you give searches and filters, and the Actor returns a dataset that works like a Zillow data API for your tools. Check Zillow's own documentation for what its official offerings cover.
Can I use it instead of a Zillow scraper Python script?
Yes. Start the Actor through the Apify API from Python, JavaScript or any HTTP client and read the dataset when the run finishes. That saves you from building a Zillow crawler yourself.
Why is the sold price empty for some homes?
listingSoldPrice is filled only where the sold price is public. The Actor never fills in a price that Zillow does not show.
What does Property details add?
Description, price history for rentals, agent name, phone and email where published, MLS name, HOA fee, tax rate, year built, parking, garage, county, neighborhood, posting date, page views, saves and high-resolution photos. It opens one extra page per listing, so runs take longer.
💬 Your feedback
Found a bug or need a field that is not there yet? Open an issue on the Actor's Issues tab in Apify Console. For a custom solution, write to hello.crawlcraft@gmail.com.