2026년에 부동산 데이터를 스크래핑하는 방법: Zillow, Redfin, Realtor.com, 및 Trulia
Source: Dev.to
위에 제공된 링크만으로는 실제 기사 내용이 포함되어 있지 않으므로, 번역할 텍스트를 제공해 주시면 해당 내용을 한국어로 번역해 드릴 수 있습니다.
번역이 필요한 본문을 복사해서 보내 주세요.
Overview
부동산 데이터는 매일 수십억 달러 규모의 결정을 이끌어냅니다. 투자 분석 도구를 구축하든, 시장 동향을 추적하든, 가격 모델에 데이터를 공급하든, 부동산 목록에 대한 프로그래밍 접근은 필수입니다.
이 가이드에서는 2026년 기준 미국 주요 부동산 플랫폼 네 곳을 스크래핑하는 방법을 살펴보며:
- 각 플랫폼이 제공하는 데이터
- 기술적 난관
- 프로덕션 수준의 접근 방식
High‑value use cases
| Use case | What you can do |
|---|---|
| Investment analysis | 우편번호별 평당가격을 비교하고, 시장에 머문 일수를 추적하며, 저평가된 부동산을 식별 |
| Market research | 재고 수준, 신규 매물 속도, 가격 인하를 대규모로 모니터링 |
| Competitive intelligence | 경쟁사의 임대료 가격이나 플립 마진을 실시간으로 추적 |
| Lead generation | 매도자 직접(FSBO) 매물이나 만료된 매물 목록을 구축해 영업에 활용 |
| Rental‑yield modeling | 판매 가격과 임대 추정치를 결합해 전체 대도시의 자본화율을 계산 |
플랫폼 비교
| 플랫폼 | 리스트 | API 사용 가능? | 안티봇 난이도 | 가장 적합한 용도 |
|---|---|---|---|---|
| Zillow | 135 M+ | 비공식만 | 높음 (Incapsula) | Zestimate, 가격 이력, 세금 데이터 |
| Redfin | 100 M+ | 부분 CSV 내보내기 | 중간 | 판매 데이터, 에이전트 추정치 |
| Realtor.com | 100 M+ | 공개 API 없음 | 높음 (Akamai) | MLS 정확한 리스팅 데이터 |
| Trulia | 80 M+ (Zillow‑owned) | 없음 | 중간‑높음 | 동네 통찰, 범죄 데이터 |
Zillow
Zillow는 가장 데이터가 풍부한 소스이지만 동시에 가장 보호가 강력합니다. 일반적인 Zillow 목록에는 다음과 같은 정보가 포함됩니다:
- 주소, 가격, 침실/욕실/평수
- Zestimate 및 임대 Zestimate
- 가격 이력(모든 매매, 가격 변동)
- 세금 평가 이력
- 인근 학교 및 보행 가능성 점수
- 시장에 나온 일수, 매물 담당 에이전트 정보
봇 방지: Incapsula (Imperva)와 JavaScript 챌린지, 지문 인식, 행동 분석을 사용합니다. 순수 requests.get() 호출은 즉시 차단됩니다.
2026년에 작동하는 방법
- 주거용 프록시 회전 – 실제 사용자처럼 보이는 IP를 사용합니다. ThorData와 같은 서비스는 자동으로 회전하고 지리 타겟팅을 처리하는 주거용 프록시 풀을 제공합니다(위치에 따라 Zillow가 제공하는 데이터가 다르기 때문에 중요합니다).
- 스텔스 브라우저 자동화 – Playwright 또는 Puppeteer에 안티‑디텍션 패치를 적용합니다. 뷰포트 크기, 마우스 움직임, 요청 타이밍을 무작위화합니다.
- 사전 구축된 액터 – 프로덕션 워크로드의 경우, 관리형 스크래핑 액터가 프록시 회전, CAPTCHA 해결 및 데이터 추출을 자동으로 처리합니다. 저는 Apify의 Zillow Scraper를 유지 관리하고 있으며, 가격 이력과 Zestimate를 포함한 전체 목록 데이터를 추출합니다.
예시: Python으로 Zillow 데이터 추출
import requests
from bs4 import BeautifulSoup
import json
# Use a proxy service for reliable access
proxies = {
"http": "http://user:pass@proxy.thordata.com:9000",
"https": "http://user:pass@proxy.thordata.com:9000"
}
def scrape_zillow_listing(url):
headers = {
"User-Agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"
),
"Accept-Language": "en-US,en;q=0.9"
}
resp = requests.get(url, headers=headers, proxies=proxies, timeout=30)
soup = BeautifulSoup(resp.text, "html.parser")
# Zillow embeds structured data as JSON‑LD
scripts = soup.find_all("script", type="application/ld+json")
for script in scripts:
data = json.loads(script.string)
if data.get("@type") == "SingleFamilyResidence":
return {
"price": data.get("offers", {}).get("price"),
"address": data.get("address"),
"bedrooms": data.get("numberOfRooms"),
"sqft": data.get("floorSize", {}).get("value")
}
# Example usage
listing_url = "https://www.zillow.com/homedetails/123-Main-St-Anytown-CA-12345/12345678_zpid/"
print(scrape_zillow_listing(listing_url))
프로 팁: Zillow의 JSON‑LD에는 유용한 데이터의 약 40 %만 포함되어 있습니다. Zestimate와 전체 가격 이력을 얻으려면 __NEXT_DATA__ JSON 블롭을 파싱하거나 전용 스크래핑 도구를 사용해야 합니다.
Redfin
Redfin은 Zillow보다 데이터 추출에 더 친화적입니다. 검색 결과에 대한 CSV 다운로드를 제공하며, 봇 감지 시스템이 덜 공격적입니다.
Key approach
Redfin의 검색 API (https://www.redfin.com/stingray/api/gis)는 매물 상세 정보를 JSON 형태로 반환합니다. 검색 쿼리를 프로그래밍 방식으로 복제할 수 있습니다:
import requests
search_url = "https://www.redfin.com/stingray/api/gis"
params = {
"al": 1,
"region_id": 29470, # example region (San Francisco)
"region_type": 6,
"num_homes": 350,
"sf": "1,2,3,5,6,7"
}
resp = requests.get(search_url, params=params)
# The response starts with {}&&& – strip that prefix
json_text = resp.text.lstrip("{}&&&")
data = resp.json()
print(data) # contains price, sold price, HOA, lot size, year built, dates, Redfin Estimate
What you get: 매물 가격, 판매 가격, HOA 비용, 토지 면적, 건축 연도, 매물·판매 날짜, 그리고 Redfin Estimate.
Realtor.com
Realtor.com은 MLS 데이터를 직접 가져와 활성 매물에 대한 가장 정확한 소스를 제공합니다. 이들은 Akamai 봇 보호를 사용합니다.
최적의 접근 방식
그들의 내부 GraphQL API (https://www.realtor.com/api/v1/hulk)는 구조화된 매물 데이터를 제공합니다. 다음이 필요합니다:
- 초기 브라우저 방문 시 얻은 Session cookies
- Akamai sensor‑data 헤더 (예:
x-akamai-rtb-token) - Residential proxies (ThorData가 여기서 잘 작동합니다)
데이터 품질이 뛰어나며, MLS 번호, 매물 사무소 상세 정보, 그리고 다른 사이트에서는 제공되지 않는 오픈 하우스 일정까지 확인할 수 있습니다.
Trulia
Trulia는 Zillow Group이 소유하고 있어 기본 데이터와 기술 스택이 유사합니다. Trulia가 돋보이는 점은 동네 데이터입니다: 범죄율, 통근 시간, 소음 수준, 그리고 “현지인 의견” 리뷰.
Extraction notes
-
Zillow와 동일한 프록시 + 스텔스‑브라우저 방식을 사용하세요.
-
추출할 가치가 있는 고유 데이터 포인트:
- 동네 안전 점수
- 맞춤 위치에 대한 통근 시간 추정
- 학부모 리뷰가 포함된 지역 학교 평점
- 소음 및 대기 질 지표
Production lessons (all platforms)
- 절대 데이터센터 프록시를 사용하지 마세요 – 몇 시간 안에 차단됩니다. 레지덴셜 프록시(예: ThorData)가 최소한의 실현 가능한 접근 방식입니다. Zillow의 경우, 미국 기반 레지덴셜 IP와 스티키 세션이 필요합니다.
- 간단한 옵션:
ScraperAPI는 프록시 회전 및 CAPTCHA 해결을 하나의 API 호출로 처리합니다 – 대상 URL만 전달하면 HTML을 반환합니다. - 책임 있게 제한하세요: 요청을 3–8 초 간격(지터 포함)으로 보냅니다. 너무 빠르게 요청하는 것이 1위 실수이며 즉시 차단으로 이어집니다.
부동산 매물 스크래핑 전략
도전 과제
- 부동산 사이트는 요청 패턴을 적극적으로 추적합니다.
- 매물은 지속적으로 변합니다 – 가격 인하, 상태 업데이트, 새로운 사진 등.
갱신 주기
- 일일 갱신: 모든 활성 매물에 대해 매일 업데이트합니다.
- 시간당 갱신: 피크 시간대(화‑목 아침)에는 매시간 업데이트합니다.
매물 데이터베이스 예시 스키마
{
"source": "zillow",
"zpid": "123456",
"address": "123 Main St, Austin, TX 78701",
"price": 450000,
"zestimate": 465000,
"price_per_sqft": 285,
"days_on_market": 12,
"price_history": [ /* … */ ],
"scraped_at": "2026-03-09T10:00:00Z"
}
도구 및 접근 방식 (2026)
- Managed scrapers – 예: 안티‑봇 방어를 기본 제공하는 관리형 Zillow 스크래퍼.
- Custom pipelines – 주거용 프록시와 스텔스 브라우저 자동화 프레임워크(Playwright, Puppeteer‑Stealth 등)를 결합.
규모 고려 사항
| 하루당 매물 수 | 권장 설정 |
|---|---|
| 수백 개 | 회전 프록시를 활용한 신중한 브라우저 자동화. |
| 수천 개 | 전체 프록시 인프라 + 전용 스크래핑 도구(예: Scrapy 클러스터, Docker/K8s 내 헤드리스 브라우저). |
도움 받기
부동산 데이터 파이프라인을 구축 중이신가요? 사용 사례를 댓글로 남겨 주세요 — 아키텍처 결정에 기꺼이 도와드리겠습니다.