How to Collect Real Estate Data with Proxies
Real estate data drives investment decisions, market analysis, and property technology platforms. Collecting comprehensive data from Zillow, Redfin, Realtor.com, and local MLS systems requires proxy infrastructure to manage rate limits, geographic targeting, and anti-bot defenses.
Disclaimer: Review each platform's Terms of Service. Use official APIs (Zillow API, Redfin API) where available. Respect MLS data licensing agreements. This guide covers technical proxy configuration.
Multi-Platform Data Collection
import httpx
import time
import random
from dataclasses import dataclass
@dataclass(frozen=True)
class PropertyData:
address: str
price: str
bedrooms: int
bathrooms: float
sqft: int
source: str
market: str
@dataclass(frozen=True)
class MarketConfig:
name: str
search_urls: dict[str, str] # platform -> URL
MARKETS = [
MarketConfig(
name="Austin TX",
search_urls={
"zillow": "https://www.zillow.com/austin-tx/",
"redfin": "https://www.redfin.com/city/30818/TX/Austin",
},
),
MarketConfig(
name="Miami FL",
search_urls={
"zillow": "https://www.zillow.com/miami-fl/",
"redfin": "https://www.redfin.com/city/11458/FL/Miami",
},
),
]
def collect_market_data(
market: MarketConfig,
proxy: str,
) -> list[PropertyData]:
"""Collect listings from all platforms for a market."""
all_listings: list[PropertyData] = []
for platform, url in market.search_urls.items():
time.sleep(random.uniform(5.0, 12.0))
try:
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=True) as client:
resp = client.get(url, headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"Accept": "text/html,application/xhtml+xml",
"Accept-Encoding": "gzip, deflate, br",
})
# Platform-specific parsing would go here
pass
except Exception:
continue
return all_listingsPrice Trend Monitoring
from datetime import datetime
@dataclass(frozen=True)
class PriceTrend:
market: str
median_price: float
avg_price: float
listing_count: int
collected_at: str
def track_market_trends(
markets: list[str],
proxy: str,
) -> list[PriceTrend]:
"""Track pricing trends across multiple markets over time."""
trends: list[PriceTrend] = []
for market in markets:
# Collect current listings and compute statistics
trends = [*trends, PriceTrend(
market=market,
median_price=0.0,
avg_price=0.0,
listing_count=0,
collected_at=datetime.utcnow().isoformat(),
)]
return trendsBest Practices
- Use residential proxies — real estate sites require high-trust IPs
- Target US proxies for domestic platforms
- Slow pacing — 5-12 second delays between requests
- Use official APIs when available for authorized access
- Respect MLS licensing — MLS data has specific usage restrictions
Hex Proxies residential network with US-focused IPs provides the trust and geographic targeting needed for comprehensive real estate data collection across all major property platforms.