App Logo
zillow.com

Search Zillow listings

TL;DR

Automatically search Zillow listings on zillow.com. One page of up to 41 homes for sale, for rent or sold, with price, beds, baths, square feet and map pin.

About

Most people point this at one neighborhood and run it on a schedule instead of refreshing Zillow by hand. Say an investor watching 78704 in South Austin runs it every morning for homes for sale under $650,000, newest first (sort "days"), diffs the zpids against yesterday's run and pulls full details only for the new ones. The filters are the ones on Zillow's own filter bar, and switching status to recently_sold gives you the recent sales in a ZIP, which is where most comp checks start. On rentals and sold searches, an apartment building comes back as a single card with price, beds, baths and area all null; the per-unit numbers sit in units as Zillow's own strings, like "$2,150+" for a starting rent. When filters are tight, Zillow pads the page with listings from outside the area and marks them nearby:true. Drop those cards before you count anything.

Input

location required

A human-readable location: city+state ("Austin, TX"), a ZIP code ("90210"), or a neighborhood. The path form resolves it to a Zillow region server-side.

page optional

1-based result page (up to 41 cards each). Default 1. Zillow caps pagination at 20 pages (~820 listings) regardless of total matches. The site's "N rentals available" counts every unit of a building, so a search can have fewer pages than N/41; when fewer than 41 cards come back, it is the last page. A page past the last one throws.

Default: 1
sort optional

Sort order. Default "globalrelevanceex" (Homes for You) matches the site. When paging across independent browsers at the same time, pass a deterministic sort (e.g. "days" = newest) so pages partition identically — the default relevance order can drift between sessions.

Default: "globalrelevanceex"
space optional

The site's Space filter, rentals only. Omit for the site's default, "entire_place"; "room" = rooms for rent only; "any" = both.

status optional

Which Zillow listing category to search — the site's own For sale / For rent / Sold toggle, passed as its URL path segment. Default "for_sale". For-rent and recently-sold results include multi-unit building cards, which have no single price/beds/baths/area — those fields are null and the per-unit numbers are in `units` instead.

Default: "for_sale"
maxBeds optional

Upper bedroom bound. Pass the same value as minBeds for the site's "Use exact match".

minBeds optional

The site's Bedrooms filter ("2+"). 0 = studio.

maxPrice optional

The site's Price filter, upper bound in USD. Monthly rent when status is for_rent, list price otherwise. Zillow matches a multi-unit building when at least one of its units falls in range, so its card can still show units above this.

minBaths optional

The site's Bathrooms filter: 1, 1.5, 2, 3 or 4 ("1.5+").

minPrice optional

The site's Price filter, lower bound in USD. Monthly rent when status is for_rent, list price otherwise.

furnished optional

Restrict to Zillow's own "Furnished" rental filter. Only meaningful when status is for_rent — ignored for sale/sold listings. Default false = no restriction (all listings, furnished or not).

Default: false
homeTypes optional

The site's Property type filter; omit for all types. For rent it offers houses, townhomes and apartments_condos. For sale and sold it offers houses, townhomes, multi_family, condos, lots_land, apartments and manufactured. A type the chosen status does not offer throws.

Output

region required

The place Zillow searched, as its search box shows it after the search (e.g. "Mission San Francisco CA", "San Francisco CA 94110"). Zillow never refuses a location: one it does not recognise is searched as the nearest place it does, with no error ("Mission District, San Francisco, CA" → "San Francisco CA"; "Nonexistentville, ZZ" → "Austin TX"). Compare it with what you asked for before treating the results as being in that place. Aliases are normal ("SoMa" → "South of Market San Francisco CA").

results required

The cards the site shows for this search, in the site's order: the in-boundary results first, then the relaxed (nearby) ones. Never empty: Zillow relaxes the boundary rather than showing nothing, so an empty array means a bucket of the answer went unread, not that the region is empty.

Example output

Shape only: placeholder values generated from the output schema, not a real run.

{ "region": "…", "results": [ { "lat": "2026-01-15T09:30:00Z", "lng": 3.5, "area": 3.5, "beds": 3.5, "zpid": "…", "baths": 3.5, "price": 3.5, "units": [ { "beds": "…", "price": "…", "roomForRent": true } ], "broker": "…", "imgSrc": "…", "nearby": true, "address": "…", "detailUrl": "https://example.com/item/123", "priceText": "…", "statusText": "…" } ] }

FAQ

Search Zillow listings for sale, for rent or recently sold in a location, with the site's own filters: price range, bedrooms, bathrooms, property type, furnished and space (rentals). Returns the place Zillow searched, as its search box shows it, and one page of cards with zpid, detailUrl, address, price, priceText, beds, baths, area, lat, lng, broker, imgSrc, statusText, units and nearby. Zillow searches the nearest place it knows when it does not recognise a location, so compare the returned place with the one you asked for. Apartment buildings come back as one card whose per-unit prices and bed counts are in units. When too few listings match inside the region, Zillow widens to the surrounding area; those cards have nearby:true. The site's result count includes every unit of a building, so a search can have fewer pages than that count suggests; a page past the last one fails. Pagination stops at 20 pages, and relevance order can change between sessions, so use a fixed sort such as newest when paging in parallel.
Ask an AI agent connected to Reduck to run reduck/zillow.com/search, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/zillow.com/search
You do not need one. "Search Zillow listings" drives the real zillow.com pages in a browser, so it works whether or not zillow.com offers an API for this.
Required: location. Optional: page, sort, space, status, maxBeds, minBeds, maxPrice, minBaths, minPrice, furnished, homeTypes.
It returns region, results.
No. It only uses pages of zillow.com that are reachable without signing in.
It only reads. It looks things up on zillow.com and changes nothing there.
Ask an AI agent connected to Reduck to run reduck/zillow.com/search, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/zillow.com/search
It is part of Reduck's official curated catalogue.
Zillow serves 41 homes per page and stops at 20 pages, which caps a single search at about 820 listings; to cover more, split the area by ZIP or by price band. Expect fewer pages than Zillow's headline count divided by 41, because that count includes every unit in an apartment building. If you fetch several pages at once, sort by "days" (newest first), since the default relevance order can shuffle between runs and hand you the same home twice.
No, the search output has no Zestimate field. Pass each zpid to the get_listing script for zillow.com to get the Zestimate along with year built, lot size, the description and rental details such as allowed pets and lease term. Zillow Group's own Zestimates API is aimed at businesses with a commercial use case, and access is granted on request.
Press & Hold is Zillow's bot check. When it won't let the browser through, the run fails with an error naming that gate instead of returning an empty list that looks like nothing matched. The check shows up more when many searches start at the same moment, and on the sibling get_listing script it refused every run from Reduck's hosted cloud browser while almost all runs through the extension in a normal Chrome completed.
Zillow quietly swaps an unknown place name for some default region (a made-up town once came back as Austin, TX), and the script fails when no word of three or more letters from your location appears in the region Zillow picked. Two-letter state codes are ignored, though: if Zillow mapped "Portland, ME" to Portland, OR, the check would not catch it. A bare ZIP skips the check entirely, which is why it pays to glance at the addresses on the first few cards whatever you searched for.

Start building not clicking