내 집 마련을 준비 중이거나 부동산 투자를 고민 중이신 분들이 매일 반복하는 일과가 있습니다. 바로 네이버 부동산 앱을 켜고 관심 아파트 단지나 오피스텔에 내가 원하는 가격대의 '새로운 급매물'이 떴는지 필터를 걸어 새로고침하는 것입니다. 하지만 매번 손수 들어가는 것은 시간 낭비가 심하고 타이밍을 놓쳐 좋은 급매물을 놓치기 십상입니다.
오늘은 네이버 부동산의 비공식 내부 검색 API의 데이터 구조를 해부하고, Python과 구글 스프레드시트(Apps Script)를 결합해 내가 설정한 조건의 신규 매물만 시트에 자동으로 긁어와 누적 저장해 주는 수집기 구축법을 대공개합니다.
🔍 네이버 부동산 검색 네트워크 패킷 해부
네이버 부동산 모바일/웹 서비스는 내부적으로 특정 좌표나 단지 코드(complexNumber)를 기반으로 비동기 JSON 데이터를 받아옵니다. 크롬 개발자 도구(F12)의 Network 탭을 켜고 조회를 해보면 아래와 같은 핵심 API 엔드포인트를 찾아낼 수 있습니다.
https://m.land.naver.com/api/complex/getComplexArticleList?
complexNo=단지코드&tradeType=거래유형&prior=종류&page=페이지번호
여기서 complexNo는 해당 아파트 단지의 고유 번호이며, tradeType은 매매(A1), 전세(B1), 월세(B2) 등의 필터 조건 파라미터입니다.
🛠️ Python 기반 자동 수집 핵심 스크립트
아래 코드는 네이버 부동산 API를 찔러 특정 아파트 단지의 최신 매물 목록을 긁어와 필요한 데이터(매물 동, 층수, 가격, 공인중개사 한줄평)만 정제하여 반환해 주는 파이썬 핵심 크롤러 엔진입니다.
import requests
import json
def fetch_naver_estate(complex_no):
headers = {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15",
"Referer": f"https://m.land.naver.com/complex/info/{complex_no}"
}
url = f"https://m.land.naver.com/api/complex/getComplexArticleList"
params = {
"complexNo": complex_no,
"tradeType": "A1", # 매매 필터
"order": "prc", # 최저가 정렬
"showR1": "N",
"page": 1
}
response = requests.get(url, headers=headers, params=params, timeout=10)
if response.status_code != 200:
print("API Request Failed")
return []
data = response.json()
articles = data.get('result', {}).get('list', [])
cleaned_articles = []
for art in articles:
cleaned_articles.append({
"name": art.get('articleName'),
"dong": art.get('dongName'),
"floor": art.get('flrNm'),
"price": art.get('dealOrWrterPrc'),
"desc": art.get('articleFeatureDesc')
})
return cleaned_articles
# 대치동 은마아파트 단지번호(8874) 예제 구동
print(fetch_naver_estate("8874")[:3])
📊 구글 스프레드시트 자동 누적 연동하기
이 데이터를 파이썬에서 주기적으로 실행(Cron 사용)하여 **Google Sheets API**나 **웹훅(Webhook)**을 통해 시트의 맨 아래 행에 append 하도록 구성하면, 매일 실시간 가격 변동 시계열 차트를 수작업 없이 그릴 수 있게 됩니다.
특히 articleFeatureDesc 컬럼을 분석해 '올수리', '급매', '입주협의' 등 핵심 키워드가 포함된 신규 행이 추가될 때 슬랙(Slack)이나 카카오톡 API로 나에게 알림을 쏘도록 엮으면, 강남 급매물을 1초 만에 포착하는 무인 감시 공장을 돌릴 수 있습니다.
⚠️ 주의사항: 안정적인 수집을 위한 User-Agent와 Referer
네이버의 차단 방화벽은 모바일 웹 뷰를 타겟팅할 때 가장 느슨합니다. 따라서 헤더 설정에 반드시 iPhone 모바일 규격의 User-Agent와 매물 상세 정보 페이지의 Referer를 정밀하게 위장해 전달해야 연속 크롤링 시 차단당하지 않고 견고하게 작동합니다.
본 포스팅은 Epix IT 생산성 연구 아카이브의 일환으로 최신 기술 트랜드를 제공합니다.