Zillow Property Scraper
Pricing
from $2.00 / 1,000 results
Zillow Property Scraper
Scrapes Zillow listings — prices, beds, baths, size, Zestimate, coordinates, and days on market.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Mina
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scrape Zillow property listings: prices, bedrooms, bathrooms, square footage, lot size, coordinates, days on market, and the Zestimate when Zillow shows one. No Zillow account or API key is needed.
What does Zillow Property Scraper do?
Give it a city and state, or a ZIP code, and it returns the Zillow listings there as structured data: address, price, beds and baths, living area and lot size, home type, days on Zillow, exact coordinates, listing broker, photo, and a link to the listing. When Zillow shows a Zestimate or rent Zestimate on the card, you get those too.
It covers homes for sale, homes for rent, and recently sold properties, with the sale date on sold homes.
Running it on Apify adds an API, scheduling, integrations (Google Sheets, Slack, Zapier, Make, S3), proxy rotation, and run monitoring.
Why use Zillow Property Scraper?
- Investment analysis: pull a market's listings with price, size, and location to spot value.
- Comparative market analysis: gather comparable listings and recent sales for a valuation.
- Rental research: see what comparable homes and apartments rent for in a neighbourhood.
- Lead generation for agents: track new listings and price cuts as they appear.
- Market monitoring: schedule it and watch inventory and pricing move over time.
How to scrape Zillow listings
- Enter one or more Locations, such as
Austin, TXor78704. - Choose a Listing type: for sale, for rent, or sold.
- Set Max results per location, add any filters, and click Start.
- Watch results appear in the Output tab, then download or connect them by API.
Input
Everything is set on the Input tab. Only locations is required.
| Field | Description |
|---|---|
locations | Places to search, one per line. Use City, ST or a ZIP code. |
listing_type | For sale (default), For rent, or Sold. |
max_results_per_location | Cap for each location, 1 to 800 (default 100). |
price_min / price_max | Price range. For a rent search, the monthly rent. |
min_beds / min_baths | Fewest bedrooms and bathrooms. For apartment buildings, see the note below. |
home_types | Single family, condo, townhouse, multi-family, apartment, manufactured, or lot. Leave empty for all. Apartment buildings count as APARTMENT. |
proxy_type | Apify residential (default), Apify datacenter, or No proxy. |
custom_proxy_urls | Optional proxies of your own, as http://user:pass@host:port. They are used instead of Apify's. |
proxy_country | Comma-separated country codes for Apify's proxies (default US). |
{"locations": ["Austin, TX", "78704"],"listing_type": "For sale","max_results_per_location": 100,"price_max": 600000,"min_beds": 3,"home_types": ["SINGLE_FAMILY", "TOWNHOUSE"],"proxy_type": "Apify residential"}
Filters on apartment buildings. Rent searches mostly return whole buildings, each with several floor plans. A building is kept when at least one floor plan fits both your price range and min_beds. The row still lists all its floor plans. Floor plans show no bathroom count, so min_baths doesn't remove buildings.
Output
Each listing is one row:
{"zpid": "251032876","url": "https://www.zillow.com/homedetails/5700-Bell-Tower-Ln-Austin-TX-78747/251032876_zpid/","status": "FOR_SALE","status_text": "Active","price": 330000,"price_label": "$330,000","currency": "USD","zestimate": 322600,"rent_zestimate": 2385,"beds": 4,"baths": 4,"living_area": 2302,"lot_area": 0.15,"lot_area_unit": "acres","home_type": "SINGLE_FAMILY","days_on_zillow": 3,"address": "5700 Bell Tower Ln, Austin, TX 78747","street": "5700 Bell Tower Ln","city": "Austin","state": "TX","zipcode": "78747","latitude": 30.137547,"longitude": -97.770775,"is_building": false,"broker": "Example Realty","image": "https://photos.zillowstatic.com/fp/example-p_e.jpg","listing_note": "Showcase","location_searched": "Austin, TX"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
| Field | Description |
|---|---|
zpid, url | Zillow's listing ID (as text) and the link to the listing. |
status, status_text | Market status, such as FOR_SALE, and the label Zillow shows. |
price, price_label, currency | Price as a number, as displayed, and its currency (USD). |
zestimate, rent_zestimate | Zillow's valuation and rent estimate, when Zillow shows one. Roughly 1 in 5 listings in a typical search has them. |
beds, baths, living_area | Bedrooms, bathrooms, and living area in square feet. |
lot_area, lot_area_unit | Lot size and its unit (sqft or acres). |
home_type, days_on_zillow | Property type and time on the market. |
address, street, city, state, zipcode | Address, whole and in parts. |
latitude, longitude | Exact position. |
broker, image, is_zillow_owned, listing_note | Listing brokerage, main photo, Zillow-owned flag, and any badge Zillow shows. |
is_building, location_searched | Whether the row is an apartment building, and which of your locations found it. |
Rental searches. Most rows are apartment buildings, returned as one row with is_building: true and home_type: "APARTMENT". Their price is the cheapest floor plan, and a units list gives each floor plan's price and bedrooms. A building has no single bed, bath, or size figure, and no days_on_zillow, broker, lot size, or Zestimate.
Sold searches. Each row adds date_sold (as YYYY-MM-DD), and price is the sale price. Some states, including Texas, don't disclose sale prices. Sold homes there come back with no price, price_label, or currency, and any price filter removes every row. Sold searches in Seattle or Denver, for example, have prices on every row.
How much does it cost to scrape Zillow?
The Actor uses pay-per-event pricing, with no separate charge for compute or proxies:
- $0.00005 per run start, charged per GB of memory, so once at the default 1 GB
- $0.002 per listing saved to the dataset
That comes to about $2.00 per 1,000 results. A 100-listing run costs about $0.20. Apify's free plan includes $5 of monthly credit, enough for roughly 2,500 listings.
You are only charged for listings in the dataset. Locations that return nothing are listed in the FAILED_INPUTS record and are not billed.
Tips for scraping Zillow at scale
- Zillow limits search depth. A search pages only about 20 deep, roughly 800 listings, however many match. A city reporting 5,000 results still returns only part of them. To cover a whole market, run several narrower searches by ZIP code. The run log tells you the ceiling for each search.
- Filters are applied to the results, not the search. Zillow's own URL filters are unreliable, so the Actor reads listings and then filters them. A narrow filter can return fewer rows than your limit, and the log reports how many were filtered out. On rent searches, buildings are matched floor plan by floor plan (see Input).
- Compare
pricewithzestimateon listings that have one to spot homes listed below Zillow's own valuation. days_on_zillowfinds stale listings, which are often the negotiable ones.- Schedule it on the same searches to build an inventory and pricing history.
FAQ, disclaimers, and support
Does it need a Zillow account or API key? No. It reads publicly visible search results.
A location returned nothing. Why? Check the FAILED_INPUTS record in the run's key-value store and the run's status message. They name each location that gave no listings, or stopped early, and why. Zillow may have no page for that place (check the spelling or use a ZIP code). The search may have no listings, or none matched your filters. Zillow may have refused every attempt, or the proxy couldn't connect. A refusal is never reported as "no results".
If nothing was collected and Zillow refused every search, the run is marked as failed. A mistyped place doesn't change that. Retry, or switch the proxy type. If refusals keep happening, set Your own proxy URLs. A run with no locations also fails, with a status message saying what to enter.
Why are some fields empty? Not every listing publishes every figure. Most listings have no Zestimate on the search card, and new construction often has none. Apartment buildings and sold homes in non-disclosure states leave the fields described above empty. Missing values come back empty rather than guessed.
Is scraping Zillow legal? This Actor collects publicly visible listing data. It does not collect personal information beyond the listing brokerage's business name. Zillow's terms of use prohibit automated collection, and Zillow has pursued scrapers before. You are responsible for how you use the data, including complying with Zillow's terms and local law. If you plan to use it commercially, check with a lawyer first.
Found a bug or need a field that is missing? Open an issue on the Actor's Issues tab. Custom scraping solutions are available on request.