π Zillow Scraper β Listings, Price History & Contact
Pricing
from $0.80 / 1,000 listings
π 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
Maintained by CommunityActor 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-XXXXformatcontact_phone_valid_formatβtrueonly if it parses as a real 10-digit US numbercontact_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):
| Field | What it is |
|---|---|
zpid | Zillow's unique property ID |
status | Listing status text, e.g. "Active", "House for sale" |
home_type | SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, MANUFACTURED, LOT, APARTMENT |
price | Current price, raw number (USD) |
price_display | Formatted price, e.g. "$739,000" |
price_reduction | Recent price drop note, e.g. "$9,000 (Sep 16)", or null |
address | Full street address |
street / city / state / zip | Address parts |
latitude / longitude | Coordinates |
beds / baths | Bedroom/bathroom count |
living_area_sqft | Interior square footage |
lot_size / lot_size_unit | Lot size + unit (acres or sqft) |
days_on_zillow | Days the listing has been live |
tax_assessed_value | Most recent county tax-assessed value (USD) |
is_fsba | true if "for sale by agent" listing sub-type |
is_showcase | true if a Zillow Showcase (premium) listing |
image_url | Main listing photo |
detail_url | Link to the listing's own Zillow page |
With includeDetails: true (adds these):
| Field | What it is |
|---|---|
description | Full listing description text |
mls_id / mls_name | MLS record ID and the MLS board name |
listing_status | MLS-sourced status (e.g. "Active") |
listing_last_updated | When the MLS record was last updated |
contact_phone | Normalized (XXX) XXX-XXXX contact number (see honest limits above) |
contact_phone_valid_format | true only if it parses as a real 10-digit US number |
contact_phone_type | "toll_free_call_tracking" or "direct_or_local" |
brokerage_name | Listing brokerage's name |
zestimate / rent_zestimate | Zillow's own value/rent estimate, where published |
price_per_sqft | Price Γ· living area |
hoa_fee_total | HOA fee as published, e.g. "$300 monthly" |
parking_features | List of parking features, e.g. ["Attached", "Garage"] |
has_garage | true/false |
price_history | Full list of {date, price} β every recorded price change, going back to the property's earliest Zillow record |
last_sold_price / date_sold | Most recent recorded sale, where available |
mortgage_monthly_hoa | Monthly HOA used in Zillow's mortgage calculator |
With includeBrokerageContact: true (adds these, needs includeDetails):
| Field | What it is |
|---|---|
brokerage_website | The brokerage's own official site, found via live search |
brokerage_general_email | General contact e-mail found on that site (null if none published or lookup blocked) |
brokerage_general_phone | General contact phone found on that site (null if none published or lookup blocked) |
π§ Input
| Field | What it does |
|---|---|
| location | City/state or ZIP, e.g. austin-tx, 78704, miami-fl |
| listingType | for_sale, for_rent, or recently_sold |
| minPrice / maxPrice | Price range filter |
| minBeds / minBaths | Minimum bed/bath count |
| homeTypes | Restrict to specific home types |
| includeDetails | Fetch description/price-history/contact per listing (slower) |
| includeBrokerageContact | Also look up brokerage website + general email (needs includeDetails) |
| maxResults | How many listings to pull |
| maxPages | Safety 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-serverfor 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.
βοΈ Legal
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).