🏠 Zillow Scraper β€” Listings, Price History & Contact avatar

🏠 Zillow Scraper β€” Listings, Price History & Contact

Pricing

from $0.80 / 1,000 listings

Go to Apify Store
🏠 Zillow Scraper β€” Listings, Price History & Contact

🏠 Zillow Scraper β€” Listings, Price History & Contact

Scrape live Zillow listings: price, beds/baths, sqft, address, days on market, tax value, zestimate. Optional detail mode adds description, price history, MLS info and contact phone. No official API β€” reads Zillow's own structured data via a stealth browser. For sale, rent, or recently sold.

Pricing

from $0.80 / 1,000 listings

Rating

0.0

(0)

Developer

Hitman studio

Hitman studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

🏠 Zillow Listings Scraper β€” Price, Beds/Baths, History & Contact

Live Zillow listings β€” for sale, for rent, or recently sold β€” in any US city or ZIP. Zillow retired its public API years ago, so this reads the same structured JSON Zillow's own site renders from (__NEXT_DATA__ / gdpClientCache), not scraped HTML text, via a stealth browser. Every field below was verified against live zillow.com data before this was built β€” nothing here is guessed.

Keywords: zillow scraper Β· zillow api Β· zillow api alternative Β· real estate scraper Β· real estate api Β· real estate data Β· property listings scraper Β· home listings data Β· house price data Β· house listings Β· housing market data Β· housing data api Β· MLS data Β· MLS scraper Β· property data Β· property data api Β· property investor leads Β· real estate leads Β· real estate lead generation Β· realtor contact data Β· real estate agent contact Β· brokerage contact data Β· zestimate scraper Β· zillow zestimate api Β· price history scraper Β· for sale by owner data Β· FSBO data Β· rental listings scraper Β· zillow rentals Β· recently sold homes data Β· comps data Β· comparable sales scraper Β· zillow alternative api Β· real estate investor tools Β· wholesaling real estate data Β· house flipping data Β· property management leads Β· real estate market analysis Β· zip code real estate data Β· days on market data Β· home value estimator api Β· real estate CRM data source Β· real estate agent leads scraper Β· buyer agent data Β· seller lead data Β· zillow scraping tool Β· zillow data extraction Β· US real estate data Β· nationwide property data Β· austin real estate data Β· miami real estate data Β· real estate data scraper 2026.

βœ… What you get (search mode β€” fast, default)

One row per listing: price, status, beds, baths, sqft, full address + lat/long, home type, lot size, days on Zillow, tax-assessed value, price-reduction note, Zillow link.

πŸ“ž What you get with "Include contact/description detail" (slower, optional)

Per listing, an extra page load adds: full description text, complete price history (every sale/listing price change on record, not just current), MLS ID/name, listing status + last-updated timestamp, the listing's contact phone number, brokerage name, Zestimate/Rent Zestimate, price-per-sqft, HOA fee, parking details, last sold price/date.

Honest limits on the contact field: Zillow does not publish an individual agent's personal e-mail anywhere on the page β€” only a phone number, which is usually a brokerage call-routing line (sometimes the listing agent's own line). No email field exists in Zillow's own data, so none is fabricated here. The number is also format-validated and labeled, not passed through blindly:

  • contact_phone β€” normalized (XXX) XXX-XXXX format
  • contact_phone_valid_format β€” true only if it parses as a real 10-digit US number
  • contact_phone_type β€” "toll_free_call_tracking" (800/888/877/866/855/844/833 prefix β€” this is Zillow's own Premier-Agent lead-routing line, NOT the listed agent's direct number, most of the time) vs "direct_or_local" (an actual area-code number, more likely to reach the agent/brokerage directly). Reported, never silently upgraded to "verified agent contact" β€” this codebase checks shape, not liveness (that needs an actual call, out of scope here).

Detail pages are bot-protected (PerimeterX) and get blocked on roughly half of individual attempts (verified live, repeatedly). The real cause: a fresh browser context alone resets cookies/fingerprint but NOT the egress IP, and PerimeterX's block is IP-reputation/rate driven β€” so a handful of listings in a batch could still fail even after 4 retries from the same machine IP (seen live: 8/10 on a real run). Fixed with three stacked layers, all tried per attempt: (1) a cheap crawler-UA + TLS-impersonation HTTP pre-check (no browser β€” the same "many sites serve a crawler a challenge-free SEO page" technique used in Aman's own cloudreveal research project, ported here rather than pulled in as a dependency to keep this actor's image small); (2) if that fails, a real browser routed through a brand-new Apify Proxy session (= a real new exit IP) every attempt; (3) attempts alternate between two independently-built stealth-browser stacks (Camoufox / CloakBrowser) β€” a block a site learns against one fingerprint doesn't sink every attempt, since the two projects implement their anti-detection patches completely separately. Randomized backoff between tries throughout, never a fixed metronome delay. An occasional listing can still come back without detail fields after all attempts β€” it's marked as such, never left silently blank-looking.

🌐 Optional: brokerage website + general contact lookup

Zillow's own listing data has never included an individual agent's name, profile link, or e-mail β€” verified live, repeatedly, across real listings (only contact_phone + brokerage_name ever appear). Turn on "Also look up brokerage website + general email" to add one extra, clearly-separate step: search for the listing's brokerage's own official website and read its published contact e-mail/phone off it β€” real, found data, never a guessed name.pattern@domain. This is the brokerage's general office contact, not the specific listing agent β€” output as brokerage_website / brokerage_general_email / brokerage_general_phone, labeled as such, cached per brokerage per run (most listings in one city share an office, so this is one extra lookup per unique brokerage, not per listing).

Honest limit: this depends on a live web search (DuckDuckGo), which β€” like every search engine β€” can itself challenge/CAPTCHA automated traffic independent of anything this actor does; confirmed live during development. It's opt-in and best-effort: when blocked, the three fields simply come back null rather than guessed. For reliable email enrichment instead, feed this actor's brokerage_name output into a dedicated company-name β†’ email finder (e.g. Aman's own Lead Enricher Pro actor), which resolves contacts via GitHub/SPF/DKIM rather than search-engine scraping.

πŸ“‹ Every output field

Always included (search mode):

FieldWhat it is
zpidZillow's unique property ID
statusListing status text, e.g. "Active", "House for sale"
home_typeSINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, MANUFACTURED, LOT, APARTMENT
priceCurrent price, raw number (USD)
price_displayFormatted price, e.g. "$739,000"
price_reductionRecent price drop note, e.g. "$9,000 (Sep 16)", or null
addressFull street address
street / city / state / zipAddress parts
latitude / longitudeCoordinates
beds / bathsBedroom/bathroom count
living_area_sqftInterior square footage
lot_size / lot_size_unitLot size + unit (acres or sqft)
days_on_zillowDays the listing has been live
tax_assessed_valueMost recent county tax-assessed value (USD)
is_fsbatrue if "for sale by agent" listing sub-type
is_showcasetrue if a Zillow Showcase (premium) listing
image_urlMain listing photo
detail_urlLink to the listing's own Zillow page

With includeDetails: true (adds these):

FieldWhat it is
descriptionFull listing description text
mls_id / mls_nameMLS record ID and the MLS board name
listing_statusMLS-sourced status (e.g. "Active")
listing_last_updatedWhen the MLS record was last updated
contact_phoneNormalized (XXX) XXX-XXXX contact number (see honest limits above)
contact_phone_valid_formattrue only if it parses as a real 10-digit US number
contact_phone_type"toll_free_call_tracking" or "direct_or_local"
brokerage_nameListing brokerage's name
zestimate / rent_zestimateZillow's own value/rent estimate, where published
price_per_sqftPrice Γ· living area
hoa_fee_totalHOA fee as published, e.g. "$300 monthly"
parking_featuresList of parking features, e.g. ["Attached", "Garage"]
has_garagetrue/false
price_historyFull list of {date, price} β€” every recorded price change, going back to the property's earliest Zillow record
last_sold_price / date_soldMost recent recorded sale, where available
mortgage_monthly_hoaMonthly HOA used in Zillow's mortgage calculator

With includeBrokerageContact: true (adds these, needs includeDetails):

FieldWhat it is
brokerage_websiteThe brokerage's own official site, found via live search
brokerage_general_emailGeneral contact e-mail found on that site (null if none published or lookup blocked)
brokerage_general_phoneGeneral contact phone found on that site (null if none published or lookup blocked)

πŸ”§ Input

FieldWhat it does
locationCity/state or ZIP, e.g. austin-tx, 78704, miami-fl
listingTypefor_sale, for_rent, or recently_sold
minPrice / maxPricePrice range filter
minBeds / minBathsMinimum bed/bath count
homeTypesRestrict to specific home types
includeDetailsFetch description/price-history/contact per listing (slower)
includeBrokerageContactAlso look up brokerage website + general email (needs includeDetails)
maxResultsHow many listings to pull
maxPagesSafety cap on search pages (~40 listings/page before filtering)

Example input

{ "location": "austin-tx", "listingType": "for_sale", "minPrice": 300000, "maxPrice": 800000, "maxResults": 100 }

πŸ’‘ Use cases

  • Investors / wholesalers β€” scan a market by price band, home type, days on market
  • Agents β€” competitive-listing research, price-history due diligence
  • Lead generation β€” brokerage contact numbers attached to active listings
  • Market analysts β€” price trends, days-on-market distributions by city

πŸ€– Use via MCP / AI agents

This actor works out of the box with Apify's official actors-mcp-server β€” connect your AI agent to Apify's MCP gateway and call this actor as a tool, no extra setup needed on this actor's side.

πŸ’° Cost

Pay-per-result, no subscription. Tip: leave includeDetails/includeBrokerageContact off for a fast first pass across a market, then turn them on only for your shortlist.

πŸ”Œ Integrations

  • Zapier / Make / n8n β€” alert an investor the moment a new listing matches their search.
  • API / MCP β€” call this Actor directly via the Apify API, or through Apify's official actors-mcp-server for AI agents.

πŸ‘€ About the developer

Built and maintained by an indie developer running a suite of real-estate and public-records Actors (HUDHawk foreclosures, DXBHawk UAE listings). Need another field or market added? Reach out β€” custom builds are welcome.

Reads the same publicly-viewable listing data Zillow serves to any visitor's browser β€” no login, no paywall bypass. Use responsibly and don't use contact numbers for unlawful solicitation (TCPA/do-not-call rules apply to phone outreach same as anywhere else).