Affordable Zillow Search (Pay Per Result) avatar

Affordable Zillow Search (Pay Per Result)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Affordable Zillow Search (Pay Per Result)

Affordable Zillow Search (Pay Per Result)

Zillow property listing scraper that pulls Zestimates, rent estimates, home types, broker info, and photos from any Zillow search URL, so real estate investors and analysts can get bulk listing data without manual browsing.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Kawsar

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Affordable Zillow Search: Scrape Zillow Property Listings by Search URL

Affordable Zillow Search (Pay-Per-Result)

Pull property listing data from Zillow search pages without spending hours copying and pasting. Hand this actor a list of Zillow search URLs, and it returns structured data for every listing on those pages: photos, Zestimates, rent estimates, home types, lot sizes, broker info, and direct links back to each listing. You pay per result, so you only spend what makes sense for your project.

This works by hitting Zillow's internal search API directly, which means fast results, no browser overhead, and no JavaScript rendering costs. It handles multiple search URLs in a single run, rotates proxies automatically to avoid blocks, and stops as soon as it hits your result or time limit.

Use cases

  • Real estate market research: compare listings across multiple neighborhoods or zip codes without clicking through search pages one at a time
  • Investment analysis: pull Zestimate and rent Zestimate data for a batch of areas to calculate rough cap rates and rental yields
  • Lead generation for agents: collect broker names and listing URLs from target markets to build outreach lists
  • Monitoring inventory: track how many listings appear in a given area on a schedule using Apify's built-in scheduler
  • Data journalism: gather listing data across cities for housing supply stories or price comparison pieces
  • Portfolio tracking: for investors who own properties in multiple areas, scrape current Zestimates to keep tabs on estimated values

Input

ParameterTypeDefaultDescription
url_listarray(required)Zillow search page URLs to scrape. One URL per line.
maxItemsinteger1000Cap on total results across all URLs.
timeoutSecsinteger300Hard stop for the entire run, in seconds. Max: 3600.
requestTimeoutSecsinteger30Per-request timeout in seconds. Max: 120.

Example input

{
"url_list": [
"https://www.zillow.com/yonkers-ny/?searchQueryState=%7B%22isMapVisible%22%3Atrue%2C%22mapBounds%22%3A%7B%22north%22%3A40.99471544858046%2C%22south%22%3A40.894096449904%2C%22east%22%3A-73.70881095385742%2C%22west%22%3A-74.01951804614258%7D%2C%22filterState%22%3A%7B%22sort%22%3A%7B%22value%22%3A%22globalrelevanceex%22%7D%7D%2C%22isListVisible%22%3Atrue%2C%22usersSearchTerm%22%3A%22Yonkers%2C%20NY%22%2C%22regionSelection%22%3A%5B%7B%22regionId%22%3A34937%2C%22regionType%22%3A6%7D%5D%2C%22mapZoom%22%3A13%7D",
"https://www.zillow.com/jersey-city-nj/?searchQueryState=%7B%22isMapVisible%22%3Atrue%2C%22mapBounds%22%3A%7B%22north%22%3A40.816156861215%2C%22south%22%3A40.614222204948376%2C%22east%22%3A-73.75802390771483%2C%22west%22%3A-74.37943809228514%7D%2C%22filterState%22%3A%7B%22sort%22%3A%7B%22value%22%3A%22globalrelevanceex%22%7D%7D%2C%22isListVisible%22%3Atrue%2C%22usersSearchTerm%22%3A%22Jersey%20City%2C%20NJ%22%2C%22mapZoom%22%3A12%2C%22regionSelection%22%3A%5B%7B%22regionId%22%3A25320%2C%22regionType%22%3A6%7D%5D%7D"
],
"maxItems": 1000
}

What data does this actor extract?

Each listing in the output dataset looks like this:

{
"searchUrl": "https://www.zillow.com/yonkers-ny/?searchQueryState=%7B%22isMapVisible%22%3Atrue%2C%22mapBounds%22%3A%7B...%7D",
"zpid": "20485684",
"listingUrl": "https://www.zillow.com/homedetails/123-Ocean-Ave-Santa-Monica-CA-90402/20485684_zpid/",
"photoUrl": "https://photos.zillowstatic.com/fp/abc123-p_e.jpg",
"homeType": "SINGLE_FAMILY",
"statusText": "ForSale",
"areaSquareFeet": 2150,
"lotAreaValue": 7500,
"lotAreaUnit": "sqft",
"zestimate": 3250000,
"rentZestimate": 8500,
"brokerName": "Compass",
"isFeatured": false,
"scrapedAt": "2026-04-13T10:00:00.000000+00:00",
"error": null
}
FieldTypeDescription
searchUrlstringThe original Zillow search URL this listing came from. Useful for tracing which query produced which results.
zpidstringZillow's unique property ID.
listingUrlstringDirect link to the listing detail page on Zillow.
photoUrlstringURL to the primary listing photo.
homeTypestringProperty type: SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, etc.
statusTextstringListing status: ForSale, RecentlySold, ForRent, etc.
areaSquareFeetnumberLiving area in square feet, null if unavailable.
lotAreaValuenumberLot size value, null if unavailable.
lotAreaUnitstringUnit for lot size (sqft or acres).
zestimatenumberZillow's estimated home value in USD, null if unavailable.
rentZestimatenumberZillow's estimated monthly rent in USD, null if unavailable.
brokerNamestringName of the listing brokerage.
isFeaturedbooleanWhether Zillow flags this as a promoted listing.
scrapedAtstringISO 8601 timestamp of when the data was collected.
errorstringError message if this URL failed, null on success.

How it works

  1. You provide one or more Zillow search URLs (the same URLs you see in your browser when browsing Zillow).
  2. The actor sends a request to Zillow's internal search API for each URL, mimicking a normal browser session.
  3. It pulls the "map results" from the response, which contains every listing shown on that search page.
  4. Each listing is parsed into a clean, flat JSON object and pushed to the output dataset.
  5. The actor stops when all URLs are processed, the max results cap is hit, or the timeout expires, whichever comes first.

Proxy Setup

Set your proxy in the actor's Apify Settings tab as an environment variable: PROXY_URL or APIFY_PROXY_URL = http://username:password@proxyIP:port

FAQ

What kind of Zillow URLs work with this actor? You must use full Zillow search URLs containing the searchQueryState query parameter (e.g. https://www.zillow.com/new-york-ny/?searchQueryState=%7B%22regionId%22%3A6181%7D). Bare location links without this parameter will not work because the API requires the region ID to be specified this way. You can get these URLs directly from your browser's address bar after performing a search on Zillow.

Does this handle pagination? Right now it pulls the first page of map results, which typically includes up to 80 listings depending on the area. If you need deeper pagination, run multiple searches with tighter geographic filters.

How do I avoid getting blocked? We recommend using stable proxies via the PROXY_URL environment variable. Keep your request volume reasonable, do not hammer hundreds of URLs in rapid succession.

What happens if one URL fails? The actor logs the error and records it in the output with an error field set. It then moves on to the next URL. One bad URL does not kill the whole run.

Is the data real-time? Yes. Each run fetches live data from Zillow's API. The results reflect whatever Zillow shows right now on those search pages.

Integrations

Connect Affordable Zillow Search with other apps and services using Apify integrations. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use webhooks to trigger actions whenever results are available.

Set up a recurring schedule through the Apify platform to run this actor daily or weekly and pipe results into a Google Sheet or database for ongoing market monitoring.