Search US homes for rent or for sale in a city.
Searches Zillow listings in a US city like the site's own map list: apartment buildings with their price range per unit type, single homes and apartments with price, beds, baths and square feet, status, coordinates and link. Paid showcase and builder placements are dropped by default.
- Site
- Zillow, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 34d46b0a08da…
Requests
sent from your browser, in order- 1GET/{{q.slug}}/{{q.kind}}{{q.pg}}Next.js page; script#__NEXT_DATA__ → searchPageState.cat1.searchResults.listResults. The one-item foreach builds the city slug ('Austin, TX' → austin-tx) and the rentals path.
Parameters
from your agentcitystringrequiredUS city and state, e.g. 'Austin, TX', 'Brooklyn, NY'
include_paidboolean = false
listing_typeenum "rent" | "buy" = "rent"
max_priceintegerUSD (per month for rent); filters the returned page
pageinteger = 1
Returns
to your agentcitystring
currencyany
homesobject[]address, area_sqft, baths, beds, id, kind, latitude, longitude, name, paid, price_from, price_text, status, url
listing_typestring
totalinteger
Where it can send
- www.zillow.com
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.homes) > `5`
- output.total > `100`
- length(output.homes[?price_from > `2500`]) == `0`
- starts_with(output.homes[0].url, 'https://www.zillow.com/')
Raw recipe
Served as canonical JSON from /api/v1/recipes/zillow.com/search-homes, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/zillow.com/search-homes | shasum -a 256 # 34d46b0a08da197cf3e2fe6cfc5d67af224b959cc8eb7b491dbe2c15e3a973cf
zillow.com/search-homes.json, v1
{ "description": "Searches Zillow listings in a US city like the site's own map list: apartment buildings with their price range per unit type, single homes and apartments with price, beds, baths and square feet, status, coordinates and link. Paid showcase and builder placements are dropped by default.", "effect": "read", "id": "zillow.com/search-homes", "keywords": [ "zillow", "apartments for rent", "homes for sale", "real estate", "rental", "house hunting", "usa", "immobilien usa", "wohnung mieten usa" ], "output": { "schema": { "properties": { "city": { "type": "string" }, "currency": { "const": "USD" }, "homes": { "items": { "properties": { "address": { "type": "string" }, "area_sqft": { "type": [ "number", "null" ] }, "baths": { "type": [ "number", "null" ] }, "beds": { "description": "Number for homes; unit bed counts for buildings", "type": [ "number", "string", "null" ] }, "id": { "type": "string" }, "kind": { "enum": [ "building", "home" ] }, "latitude": { "type": [ "number", "null" ] }, "longitude": { "type": [ "number", "null" ] }, "name": { "type": [ "string", "null" ] }, "paid": { "type": "boolean" }, "price_from": { "description": "Lowest price (per month for rentals); for buildings the cheapest unit", "type": [ "number", "null" ] }, "price_text": { "type": [ "string", "null" ] }, "status": { "type": [ "string", "null" ] }, "url": { "format": "uri", "type": "string" } }, "type": "object" }, "type": "array" }, "listing_type": { "type": "string" }, "total": { "type": [ "integer", "null" ] } }, "required": [ "city", "homes" ], "type": "object" }, "value": "let $max = params.max_price, $paid = params.include_paid in {city: params.city, listing_type: params.listing_type, total: steps.search[0].total, currency: 'USD', homes: steps.search[0].homes[?($paid || !paid) && (!$max || price_from == `null` || price_from <= $max)]}" }, "params": { "additionalProperties": false, "properties": { "city": { "description": "US city and state, e.g. 'Austin, TX', 'Brooklyn, NY'", "maxLength": 60, "minLength": 2, "type": "string" }, "include_paid": { "default": false, "type": "boolean" }, "listing_type": { "default": "rent", "enum": [ "rent", "buy" ], "type": "string" }, "max_price": { "description": "USD (per month for rent); filters the returned page", "minimum": 1, "type": "integer" }, "page": { "default": 1, "maximum": 20, "minimum": 1, "type": "integer" } }, "required": [ "city" ], "type": "object" }, "provenance": { "method": "browser-inspect", "notes": "spikes/zillow.md. Next.js SSR: __NEXT_DATA__ props.pageProps.searchPageState.cat1 (searchResults.listResults ~40 per page, searchList.totalResultCount). Rentals are mostly buildings (isBuilding) with units[{price '$1,833+', beds}]; single listings have unformattedPrice, beds, baths, area. isFeaturedListing was true on all 41 (not a paid signal); isShowcaseListing / isPaidBuilderNewConstruction are. Zillow runs PerimeterX/HUMAN bot defence that challenges non-browser traffic; run from the user's own browser only.", "recorded_at": "2026-11-07T12:56:00+01:00", "recorded_by": "C4" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "zillow.com", "language": "en", "login_url": "https://www.zillow.com/user/acct/login/", "name": "Zillow", "origin": "https://www.zillow.com", "origins": [ "https://www.zillow.com" ] }, "steps": [ { "description": "Next.js page; script#__NEXT_DATA__ → searchPageState.cat1.searchResults.listResults. The one-item foreach builds the city slug ('Austin, TX' → austin-tx) and the rentals path.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "embedded_json": { "selector": "script#__NEXT_DATA__", "vars": { "homes": "props.pageProps.searchPageState.cat1.searchResults.listResults[].{id: to_string(zpid || id), name: buildingName || `null`, kind: isBuilding == `true` && 'building' || 'home', address: address, price_from: (isBuilding == `true` && min(map(&to_number(replace(replace(replace(price || '0', '$', ''), ',', ''), '+', '')), units || `[]`))) || unformattedPrice || `null`, price_text: price || join(' / ', units[].price || `[]`), beds: beds || (units && join(', ', units[].beds)) || `null`, baths: baths || `null`, area_sqft: area || `null`, status: statusText || `null`, paid: isShowcaseListing == `true` || isPaidBuilderNewConstruction == `true`, latitude: latLong.latitude || `null`, longitude: latLong.longitude || `null`, url: starts_with(detailUrl || '', 'http') && detailUrl || join('', ['https://www.zillow.com', detailUrl || ''])}", "total": "props.pageProps.searchPageState.cat1.searchList.totalResultCount" } } }, "foreach": { "as": "q", "in": "[{slug: lower(replace(replace(trim(params.city), ', ', '-'), ' ', '-')), kind: params.listing_type == 'rent' && 'rentals/' || '', pg: params.page > `1` && join('', [to_string(params.page), '_p/']) || ''}]", "max": 1 }, "id": "search", "parse": "html", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "url": "/{{q.slug}}/{{q.kind}}{{q.pg}}" } } ], "task": "Search US homes for rent or for sale in a city", "tos": { "notes": "Zillow's terms prohibit automated queries and scraping. One user-initiated search page at a time from the user's own browser (1 request).", "reviewed": false }, "verify": { "checks": [ "length(output.homes) > `5`", "output.total > `100`", "length(output.homes[?price_from > `2500`]) == `0`", "starts_with(output.homes[0].url, 'https://www.zillow.com/')" ], "example_params": { "city": "Austin, TX", "listing_type": "rent", "max_price": 2500 }, "max_ms": 6000 }, "version": 1 }