# Real-estate reference Subcommands: `zillow-listing`, `zillow-property`, `redfin-listing`, `redfin-property` — 5 credits each. For short-term rentals (Airbnb), hotels (Booking) and flights, see `travel.md`. `*-listing` is for filtered searches; `*-property` is a single-property deep dive. --- ## zillow-listing ```bash hasdata zillow-listing --keyword "Austin, TX" --type forSale [filters] --raw | jq '.results[]' ``` Required: - `--keyword "City, ST"` (default: `New York, NY`) - `--type forSale|forRent|sold` (default: `forSale`) Price / size (bracketed pairs, kept as floats): - `--price-min N --price-max N` - `--beds-min N --beds-max N` - `--baths-min N --baths-max N` - `--square-feet-min N --square-feet-max N` - `--lot-size-min N --lot-size-max N` - `--year-built-min N --year-built-max N` - `--hoa N` — max HOA fee - `--parking-spots-min N` Array filters (enum-validated, lowercase camelCase values): - `--home-types house|townhome|multiFamily|condo|lot|apartment|manufactured` (repeatable) - `--pets allowsLargeDogs|allowsSmallDogs|allowsCats` (repeatable) - `--other-amenities ac|pool|waterfront|onsiteParking|inUnitLaundry|acceptZillowApplications|incomeRestricted|apartmentCommunity` (repeatable) - `--views city|mountain|park|water` (repeatable) - `--basement finished|unfinished` (repeatable) - `--property-status comingSoon|acceptingBackupOffers|pendingAndUnderContract` (repeatable) - `--listing-publish-options ownerPosted|agentListed|newConstruction|foreclosures|auctions|foreclosed|preForeclosures` (repeatable) - `--tours open|3d` (repeatable) Booleans: - `--must-have-garage` — only listings with a garage - `--single-story-only` - `--hide55plus-communities` Other: - `--listing-type byAgent|byOwner` - `--days-on-zillow 1|7|14|30|90|6m|12m|24m|36m` - `--keywords "open floor plan"` — refinement keywords (matches in description) - `--move-in-date 2026-06-01` - `--page N` — pagination - `--sort verifiedSource|homesForYou|priceHighToLow|priceLowToHigh|paymentHighToLow|paymentLowToHigh|newest|bedrooms|bathrooms|squareFeet|lotSize` ### Examples ```bash # Family home, mid-market, sorted cheapest first hasdata zillow-listing \ --keyword "Austin, TX" --type forSale \ --price-min 400000 --price-max 900000 \ --beds-min 3 --beds-max 5 --baths-min 2 \ --home-types house --home-types townhome \ --sort priceLowToHigh --raw | jq '.results[] | {address, price, beds, baths}' # Pet-friendly rental hasdata zillow-listing \ --keyword "Seattle, WA" --type forRent \ --price-max 4000 \ --pets allowsSmallDogs --pets allowsCats \ --parking-spots-min 1 --must-have-garage \ --raw # Recently sold comps hasdata zillow-listing \ --keyword "Miami, FL" --type sold \ --square-feet-min 1500 --square-feet-max 4000 \ --year-built-min 2000 --year-built-max 2020 \ --days-on-zillow 12m --sort newest --raw ``` Bracketed query params (`price[max]`, `homeTypes[]`, `yearBuilt[min]`) are handled by the CLI — pass the kebab-case flags shown above, not the raw API names. ## zillow-property ```bash hasdata zillow-property --url "https://www.zillow.com/homedetails/.../123_zpid/" --raw | jq . ``` Or with `--zpid `. Returns full property details (photos, history, schools, taxes, walk-score, etc.). ## redfin-listing Similar shape to `zillow-listing` but Redfin's enums differ. Run `hasdata redfin-listing --help` for the exact list. Common pattern: ```bash hasdata redfin-listing --location "San Francisco, CA" --status forSale \ --min-price 800000 --max-price 1500000 \ --min-beds 2 --raw ``` ## redfin-property ```bash hasdata redfin-property --url "https://www.redfin.com/CA/San-Francisco/.../home/12345" --raw ``` --- ## Non-obvious use cases - **Investment screening** — combine `--type sold` + `--days-on-zillow 12m` + `--year-built-min` + `--lot-size-min` to surface flip / value-add candidates. Then `xargs` into `zillow-property` for ARV analysis. - **Tax-appeal comps** — `--type sold --keyword "ZIP CODE" --days-on-zillow 12m` filtered to your home's beds/baths/sqft band gives recent sales the assessor used; export to CSV with `jq -r '.results[] | [.address, .price, .beds, .baths, .squareFootage, .soldDate] | @csv'`. - **Appraiser comp pull** — same trick, narrower square-footage and same year-built band. - **Motivated-seller signal** — `--type forSale --days-on-zillow 90` returns listings that have lingered. Often willing to negotiate. - **Pre-relocation neighborhood scan** — run the same `--type forRent` filter across 5–10 neighborhoods, dump rent distributions with `jq '.results[].price'`, eyeball cost differences before booking visits. - **STR-vs-LTR feasibility** — pair `airbnb-listing` (see `travel.md`) for nightly rates with `zillow-listing --type forSale` for purchase price in the same area; compute gross yield client-side. - **HOA filter** — `--hoa N` caps fee; useful for buyers who want max payment ceilings. - **School-driven house hunt** — `zillow-property` returns school ratings; filter `zillow-listing` results down by walking each property and keeping those with rating ≥ X. - **Open-houses this weekend** — Zillow tags open-house listings; check `.results[].openHouseTimes` for upcoming slots. - **3D-tour / virtual-tour-only filter** — `--tours 3d` → only listings with virtual tours. Useful for remote / international buyers. - **Pet-friendly rentals at scale** — `--pets allowsLargeDogs --pets allowsCats` for multi-pet households. Pairs well with `--keyword` for specific neighborhoods. - **Foreclosure and pre-foreclosure leads** — `--listing-publish-options foreclosures --listing-publish-options preForeclosures`. - **Non-traditional listing types** — `--listing-type byOwner` for FSBO; `--listing-type byAgent` for agent-listed (default mix). - **Move-in date constraint** — `--move-in-date YYYY-MM-DD` for rental searches with a hard timing requirement. - **Bulk address verification** — pipe a list of property URLs through `zillow-property` to confirm they resolve and pull the canonical address Zillow uses. - **Verify a Redfin/Zillow listing is real** — `redfin-property --url X --raw | jq .status` to confirm it hasn't been pulled.