How to Scrape Zillow Real Estate Data in 2026 Without Blocks

Scrape Zillow, Redfin, and Realtor.com in 2026: how anti-bot stacks detect scrapers, why geo-accurate mobile proxies decide success, and the legal lines.

VoidMob Team
14 min read
Purple banner showing Zillow, Realtor.com, and Redfin listing data flowing from a house model into scraped listing cards and a geo-targeted map

Scraping real estate data from Zillow, Redfin, and Realtor.com powers every serious valuation model, lead-gen pipeline, and market analysis dashboard in the industry. Property listings, price histories, days-on-market, rental comps, agent rosters, neighborhood trends - all of it sits on public portals, visible to any browser. Investors price deals with it. PropTech teams build products on it. Getting it out programmatically is where things get interesting.

Quick Summary TLDR

  • 1Zillow, Redfin, and Realtor.com have all hardened their anti-bot stacks: TLS and browser fingerprinting, IP reputation scoring, rate limits, and silent blocks that serve stale data instead of a 403.
  • 2Real estate data is inherently local - the IP's location must match the target market, or listing order, pricing context, and market stats can shift.
  • 3Datacenter proxies are pre-flagged, shared residential pools are increasingly burned; carrier-grade mobile IPs behind CGNAT are the hardest to block.
  • 4Official routes (Zillow's Bridge Public Records API, MLS/RESO feeds) are the compliant path where you qualify; scraping public pages sits in a legal gray area shaped by the hiQ v. LinkedIn line of cases.
  • 5Practical setup: headless browser with fresh contexts per session, geo-matched sticky proxy sessions, 4-7 second randomized delays, and validation against a manual browser check.

Building a Zillow scraper that survives more than 50 requests is a completely different problem. A single residential IP hitting Zillow's search endpoint gets soft-blocked within minutes, sometimes in fewer than 30 requests before CAPTCHAs start firing. Zillow, Redfin, and Realtor.com have all hardened their anti-bot stacks significantly since 2024. The generic "just use rotating proxies" advice floating around most tutorials doesn't hold up anymore.

And here's the thing most guides skip entirely: real estate data is inherently local. Scraping Austin comps through a Virginia IP can return different pricing context, different listing order, or outright blocks. Most content ranking for this topic either hands over a Python snippet with zero context on blocking, or sells residential proxies without ever mentioning geo-accuracy. That gap matters more than people realize.

Zillow's Terms of Service explicitly prohibit automated scraping. So do Redfin's and Realtor.com's. That's a fact, and anyone building a Zillow scraper should know it upfront.

US case law tells a slightly different story, though. The hiQ v. LinkedIn line of decisions has generally held that scraping publicly available data - information anyone can see without logging in - doesn't violate the Computer Fraud and Abuse Act. Courts have drawn a distinction between accessing data behind authentication walls and collecting what's already public.

Caveats still apply. Personal data (agent phone numbers, emails) carries CCPA and state privacy obligations. ToS violations can still support civil claims even if they don't trigger federal computer fraud statutes. The legal picture also shifts depending on jurisdiction.

Official routes exist for teams that qualify. Zillow's Bridge Public Records API serves parcel, assessment, and transaction data to approved commercial use cases; the ZTRAX research database, which Zillow stopped distributing directly in 2023, now lives at ICPSR for academic access; and MLS/RESO Web API feeds are the gold standard for teams with board membership. For smaller investors, indie developers, and data teams without any of those, scraping public listing pages remains the practical option - just stay on the public side of the login wall, because that's exactly where the case law stops protecting you.

How Zillow and Redfin Actually Block Scrapers

Understanding the detection stack is half the battle. Here's what a Zillow web scraper runs into in 2026:

HUMAN Security (formerly PerimeterX) is the bot mitigation layer Zillow sessions run into - its challenge interstitials are what appear when a session gets flagged. The system fingerprints browser environments, checks for headless browser signatures, and scores every request with a machine-learning risk score based on behavioral signals. Fall below the threshold and it triggers CAPTCHAs or, worse, silent blocks where the site serves empty results or stale data without any obvious error. That second one is the tricky part because there's no 403 telling the scraper something went wrong.

Rate limiting works on both IP and session level. As a ballpark, a clean residential IP averaging one request every 4 seconds commonly runs somewhere in the 120-180 request range before encountering a challenge. Datacenter IPs tend to hit challenges far sooner, often within an estimated 8-15 requests.

IP reputation scoring means datacenter IP ranges are pre-flagged before a single request goes out. A lot of residential IPs from popular proxy providers are already burned too, because thousands of users share the same pools. The major portals maintain reputation data that updates frequently.

TLS and HTTP/2 fingerprinting catches mismatches instantly. A Python requests script claiming to be Chrome has a completely different TLS fingerprint than actual Chrome. Modern detection systems cross-verify TLS fingerprints, HTTP headers, and client-side JavaScript attributes against each other, so one inconsistent layer burns the whole session. Redfin is especially aggressive about this.

Zillow's Internal GraphQL Endpoints

Internal API endpoints are worth mentioning separately. Zillow serves listing data through internal GraphQL and JSON endpoints. Hitting these directly is faster than parsing HTML, but they're more heavily monitored and require valid session cookies plus correct headers to return anything useful.

Detection LayerZillowRedfinRealtor.com
Primary bot mitigationHUMAN (PerimeterX)Layered TLS + behavioral checksJS challenge + TLS checks
Typical clean-IP tolerance (est.)~120-180 requests~80-100 requests~200+ requests
Fingerprint checksTLS + browser + behavioralTLS + header analysisTLS + JS challenge
Internal API monitoringHeavy (GraphQL)Moderate (REST)Moderate
Geo-sensitivityHighHighModerate

Why the Proxy Decides Everything

Every real estate scraper guide mentions proxies. Very few explain why the proxy type matters specifically for real estate data.

Real estate is local. Zillow serves different results based on where the request originates - sometimes different listing order, different featured listings, different "market temperature" indicators. Scrape Denver listings from a New York IP and the addresses might be accurate, but pricing context and some market data can shift in subtle ways. For rental comps especially, geo-mismatch introduces noise into datasets that's hard to catch after the fact. The same dynamic shows up in ASN and geo-targeted scraping more broadly: where the IP sits changes what the site returns.

On top of the geo problem, proxy type determines block rates more than any other single variable.

Datacenter vs. Residential vs. Mobile Proxies for Zillow

Datacenter proxies are the cheapest and fastest option. They're also close to useless for Zillow in 2026 - their IP ranges are pre-classified as hosting infrastructure, so most sessions die early. Fine for small batches on less-protected portals, but that's about it.

Residential proxies are the standard recommendation across most guides. They work better, but the shared pools from major providers are increasingly burned. A fresh residential IP lasts longer than datacenter, but pool quality varies wildly between providers and even between times of day. Success rates on Zillow are moderate at best.

Mobile proxies use carrier-grade 4G/5G IPs that typically score well in IP reputation because they're assigned by real carriers to real devices. CGNAT puts hundreds of legitimate users behind a single mobile IP, which makes it very difficult for platforms to block those ranges aggressively without affecting real visitors. Block rates drop significantly in most configurations.

~10-15%
Datacenter on Zillow
Estimated session success rate - ranges pre-flagged as hosting infrastructure
~45-55%
Residential on Zillow
Estimated session success rate - depends heavily on pool freshness
~85-90%
Mobile on Zillow
Estimated session success rate - carrier ASN reputation plus CGNAT cover

The part that ties it together: mobile proxies from the right carrier in the right metro area solve both problems at once. A carrier IP geolocating to Phoenix returns Phoenix-accurate listing data and faces minimal friction from bot scoring. That's the actual advantage for real estate use cases, and it's why proxy selection isn't just a technical decision here. It directly affects data quality. For a broader look at how the options stack up, see the mobile proxies for web scraping comparison.

Three Ways to Scrape Real Estate Data in 2026

Three practical approaches, ordered from most compliant to most hands-on:

1. Official APIs and data feeds. Zillow's Bridge Public Records API provides structured property data for approved use cases. MLS/RESO Web API feeds are the gold standard for teams with board access. Limited availability, but zero blocking concerns and clean structured output.

2. Listing page scraping with Playwright/Puppeteer. Spin up a headless browser, navigate to search result pages, extract listing cards. Playwright with hardened launch settings covers the obvious headless tells. Pair it with rotating proxies and randomized delays (4-7 seconds between actions) and this is basically how most Zillow data scraper setups work in practice. Not glamorous, but functional.

3. Internal endpoint scraping. Zillow's search results load via GraphQL calls to internal APIs. Intercepting these requests and replaying them with correct headers and cookies yields clean JSON with no HTML parsing needed. Significantly faster, but it requires maintaining session state and rotating proxies more aggressively. The endpoints also change without notice, which means more maintenance.

Here's the session structure for the Playwright approach, using a VoidMob flex-mode proxy pinned to the target market (credentials come from POST /v1/proxies/:id/flex_credentials):

zillow_session.pypython
1# Session structure, not a full scraper - add retries, CAPTCHA
2# detection, and 403/429 handling for production use
3import asyncio, random
4from playwright.async_api import async_playwright
5
6# _c_US + _city_Phoenix pins the exit IP to the target market;
7# _s_<id> keeps the same IP for the session, _ttl_30m caps its lifetime
8PROXY = {
9 "server": "http://proxy.voidmob.com:10092",
10 "username": "<username>_c_US_city_Phoenix_s_zil1_ttl_30m",
11 "password": "<password>",
12}
13
14async def scrape_listings(zip_code: str):
15 listings = []
16
17 async def capture(response):
18 # Search results load via an internal search-page-state call -
19 # capture the JSON instead of parsing HTML listing cards
20 if "async-create-search-page-state" in response.url and response.ok:
21 payload = await response.json()
22 results = (payload.get("cat1", {})
23 .get("searchResults", {})
24 .get("listResults", []))
25 listings.extend(results)
26
27 async with async_playwright() as p:
28 browser = await p.chromium.launch(proxy=PROXY, headless=True)
29 context = await browser.new_context(
30 viewport={"width": 1920, "height": 1080},
31 locale="en-US",
32 )
33 page = await context.new_page()
34 page.on("response", capture)
35 await page.goto(f"https://www.zillow.com/homes/{zip_code}/")
36 await page.wait_for_timeout(random.randint(4000, 7000))
37 await browser.close()
38
39 for home in listings:
40 print(home.get("address"), home.get("unformattedPrice"))
41
42asyncio.run(scrape_listings("85004"))

Worth emphasizing: this is a structural example. A production Zillow scraper needs retry logic, CAPTCHA detection, session rotation, and proper error handling for 403/429 responses. The internal endpoint name and response shape also change without notice, so treat the capture handler as a pattern to maintain, not a permanent contract. The skeleton just shows how proxy integration, browser context setup, and response interception work together.

Practical Tips and Troubleshooting

Zillow Silent Blocks: Stale Data Instead of a 403

Silent blocks are worse than hard blocks. This is probably the single biggest source of bad data in real estate scraping. Zillow sometimes serves outdated or incomplete listings instead of returning a 403. Always validate listing counts against a manual browser check for the same search. If the scraper returns 34 listings and a real browser shows 127, that's a silent block.

Rotate sessions, not just IPs. Changing the IP but keeping the same cookies and fingerprint is an obvious tell. Each new IP should get a fresh browser context: new cookies, a new viewport size, fresh headers.

Match proxy geo to target market. Scraping listings in Miami? Use a proxy geolocating to South Florida. Wrong geo means wrong data, and it sometimes triggers additional verification because the access pattern looks suspicious to the anti-bot system. Someone in Seattle browsing Miami zip codes every 4 seconds doesn't match normal user behavior.

Respect reasonable rate limits. Even with mobile proxies, hammering 10 requests per second gets flagged. One request every 4-7 seconds with some randomized jitter mimics human browsing patterns well enough.

Personal Data Warning

Scraping agent contact details (emails, direct phone numbers) from listing pages may trigger state privacy law obligations under CCPA and similar statutes. Stick to property data like addresses, prices, listing status, and square footage unless legal counsel has reviewed the personal data collection approach.

Check IP reputation before scraping. The free IP checker shows exactly how a proxy IP is classified: carrier, ASN, geolocation, and connection type. Running a quick check before starting a scrape session saves hours of debugging empty responses later. It takes about 10 seconds and eliminates an entire category of problems.

Where VoidMob Fits

For teams that need a proxy for real estate scraping with actual geo-accuracy, VoidMob's mobile proxies run on real 4G/5G carrier infrastructure, not datacenter IPs repackaged as mobile. Shared pool access handles high-volume jobs to scrape real estate listings across multiple markets simultaneously, with country and city targeting set per request. Dedicated mobile proxies work better for sustained monitoring situations, like tracking price changes on a watchlist of 500 properties daily.

API access means proxy rotation integrates directly into scraping pipelines with no browser extensions or manual switching. And mobile IPs carry legitimate carrier ASNs - the signal bot-mitigation scoring weighs most heavily - which is why they avoid the constant CAPTCHA loops that burn through residential pools.

Mobile proxy session success rate on Zillow (estimated)~85-90%

FAQ

1Is it legal to scrape Zillow in 2026?

Scraping publicly available listing data has been supported by US case law (hiQ v. LinkedIn). Zillow's ToS do prohibit it, and personal data collection carries separate privacy obligations. It's a gray area: not criminal under current precedent, but not permitted by the platform either.

2What's the best proxy type for a Zillow scraper?

Mobile proxies consistently outperform residential and datacenter options for Zillow specifically, due to carrier-grade IP reputation and CGNAT dynamics. Residential can work for lighter workloads on less-protected portals like Realtor.com.

3Can you scrape Zillow without proxies?

For maybe 15-30 requests, yes. After that, expect CAPTCHAs, throttling, or silent data degradation. Any serious real estate web scraper needs proxy rotation.

4Why does my Zillow scraper return fewer listings than the website?

That's usually a silent block: instead of a 403, Zillow serves a reduced or stale result set to sessions its bot scoring has flagged. Validate scraper output against a manual browser check for the same search, then rotate to a fresh session (new IP, new cookies, new fingerprint) before retrying.

5Does IP location affect the data returned?

Yes. Zillow and Redfin both personalize results based on request origin. Scraping with a geographically mismatched IP can return different listing orders, pricing displays, and market stats. Geo-accurate proxies aren't optional for clean data.

6How often does Zillow update its anti-bot detection?

HUMAN Security pushes updates frequently, sometimes weekly. A Zillow web scraper that worked last month may need header and fingerprint adjustments. Monitoring for changes in response patterns is just part of ongoing maintenance.

Wrapping Up

Scraping real estate data in 2026 comes down to understanding the detection layers, choosing geo-accurate proxies, and being aware of the legal boundaries.

A Zillow scraper built on datacenter IPs won't last a session. Residential gets partway there. Mobile proxies, especially ones geolocated to the target market, solve both the blocking problem and the data accuracy problem at the same time.

Official APIs remain the cleanest path where available. For everything else, a well-configured scraping setup with proper proxy infrastructure does the job.

Geo-accurate mobile proxies for real estate data

Shared and dedicated 4G/5G mobile proxies with real carrier IPs, per-request city targeting, and API access - plus a free IP checker to verify exit IPs before every run.