429 lines
17 KiB
Markdown
429 lines
17 KiB
Markdown
# 부동산 정보 검색 API 가이드
|
|
|
|
## 1. 공공데이터 API (국토교통부)
|
|
|
|
### 1.1 아파트 매매 실거래가 API
|
|
- **서비스명**: 국토교통부_아파트 매매 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**: https://www.data.go.kr/data/15126469/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/1613000/RTMSDataSvcAptTrade`
|
|
- **엔드포인트**: `/getRTMSDataSvcAptTrade`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
#### 주요 파라미터
|
|
- `serviceKey`: 공공데이터포털에서 발급받은 인증키
|
|
- `LAWD_CD`: 법정동 코드 5자리 (예: 서울 종로구 11110)
|
|
- `DEAL_YMD`: 계약년월 6자리 (예: 202501)
|
|
|
|
### 1.2 아파트 전월세 실거래가 API
|
|
- **서비스명**: 국토교통부_아파트 전월세 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**: https://www.data.go.kr/data/15126474/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/1613000/RTMSDataSvcAptRent`
|
|
- **엔드포인트**: `/getRTMSDataSvcAptRent`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
#### 주요 파라미터
|
|
- `serviceKey`: 공공데이터포털에서 발급받은 인증키
|
|
- `LAWD_CD`: 법정동 코드
|
|
- `DEAL_YMD`: 계약년월
|
|
|
|
### 1.3 연립/다세대 주택 실거래가 API
|
|
- **서비스명**: 국토교통부_연립다세대 매매/전월세 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**:
|
|
- 매매: https://www.data.go.kr/data/15126467/openapi.do
|
|
- 전월세: https://www.data.go.kr/data/15126473/openapi.do
|
|
- **Base URL**:
|
|
- 매매: `apis.data.go.kr/1613000/RTMSDataSvcSHTrade`
|
|
- 전월세: `apis.data.go.kr/1613000/RTMSDataSvcSHRent`
|
|
- **엔드포인트**:
|
|
- 매매: `/getRTMSDataSvcSHTrade`
|
|
- 전월세: `/getRTMSDataSvcSHRent`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
### 1.4 오피스텔 실거래가 API
|
|
- **서비스명**: 국토교통부_오피스텔 매매/전월세 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**:
|
|
- 매매: https://www.data.go.kr/data/15126464/openapi.do
|
|
- 전월세: https://www.data.go.kr/data/15126475/openapi.do
|
|
- **Base URL**:
|
|
- 매매: `apis.data.go.kr/1613000/RTMSDataSvcOffiTrade`
|
|
- 전월세: `apis.data.go.kr/1613000/RTMSDataSvcOffiRent`
|
|
- **엔드포인트**:
|
|
- 매매: `/getRTMSDataSvcOffiTrade`
|
|
- 전월세: `/getRTMSDataSvcOffiRent`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
### 1.5 단독/다가구 주택 실거래가 API
|
|
- **서비스명**: 국토교통부_단독다가구 매매/전월세 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**:
|
|
- 매매: https://www.data.go.kr/data/15126465/openapi.do
|
|
- 전월세: https://www.data.go.kr/data/15126472/openapi.do
|
|
- **Base URL**:
|
|
- 매매: `apis.data.go.kr/1613000/RTMSDataSvcSHHouseTrade`
|
|
- 전월세: `apis.data.go.kr/1613000/RTMSDataSvcSHHouseRent`
|
|
- **엔드포인트**:
|
|
- 매매: `/getRTMSDataSvcSHHouseTrade`
|
|
- 전월세: `/getRTMSDataSvcSHHouseRent`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
### 1.6 토지 실거래가 API
|
|
- **서비스명**: 국토교통부_토지 매매 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**: https://www.data.go.kr/data/15126466/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/1613000/RTMSDataSvcLandTrade`
|
|
- **엔드포인트**: `/getRTMSDataSvcLandTrade`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
### 1.7 상업/업무용 부동산 실거래가 API
|
|
- **서비스명**: 국토교통부_상업업무용 부동산 매매 실거래가 자료
|
|
- **제공기관**: 국토교통부
|
|
- **URL**: https://www.data.go.kr/data/15126463/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/1613000/RTMSDataSvcNrgTrade`
|
|
- **엔드포인트**: `/getRTMSDataSvcNrgTrade`
|
|
- **데이터 형식**: XML
|
|
- **트래픽 제한**: 개발계정 10,000/일
|
|
|
|
## 2. 한국부동산원 API
|
|
|
|
### 2.1 부동산 통계 조회 서비스
|
|
- **서비스명**: 한국부동산원_부동산통계 조회 서비스
|
|
- **제공기관**: 한국부동산원
|
|
- **URL**: https://www.data.go.kr/data/15134761/openapi.do
|
|
- **Base URL**: https://www.reb.or.kr/r-one/portal/openapi
|
|
- **주요 통계**:
|
|
- 주택가격동향조사
|
|
- 지가변동률
|
|
- 상업용부동산 임대동향
|
|
- 오피스텔 가격동향
|
|
- 공동주택 실거래가격지수
|
|
|
|
### 2.2 아파트 단지 정보 API
|
|
- **서비스명**: 한국부동산원_전국 아파트단지 정보
|
|
- **특징**: 전국 아파트 단지의 기본 정보 및 동 정보 제공
|
|
- **데이터**: 단지명, 주소, 세대수, 준공년월 등
|
|
|
|
## 3. LH 한국토지주택공사 API
|
|
|
|
### 3.1 공공임대주택 단지정보 조회 서비스
|
|
- **서비스명**: 한국토지주택공사_공공임대주택 단지정보 조회 서비스
|
|
- **URL**: https://www.data.go.kr/data/15058476/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/B552555/lhPublicRentalHousingComplexInquireSvc`
|
|
- **엔드포인트**: `/getPublicRentalHousingComplexList`
|
|
- **특징**: LH에서 관리하는 공공임대주택 정보 제공
|
|
- **데이터 형식**: XML/JSON
|
|
|
|
### 3.2 임대주택단지 조회 서비스
|
|
- **서비스명**: 한국토지주택공사_임대주택단지 조회 서비스
|
|
- **URL**: https://www.data.go.kr/data/15059475/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/B552555/lhLeaseholdBuldListService`
|
|
- **엔드포인트**: `/lhLeaseholdBuldList`
|
|
- **데이터**: 임대유형, 임대료, 위치 정보 등
|
|
- **데이터 형식**: XML/JSON
|
|
|
|
### 3.3 분양/임대 공고문 조회 서비스
|
|
- **서비스명**: 한국토지주택공사_분양임대공고문 조회 서비스
|
|
- **URL**: https://www.data.go.kr/data/15058530/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/B552555/lhLeaseNoticeInfo`
|
|
- **엔드포인트**: `/lhLeaseNoticeInfo`
|
|
- **특징**: LH 분양/임대 공고 정보 실시간 제공
|
|
- **데이터 형식**: XML/JSON
|
|
|
|
## 4. 지자체 부동산 API
|
|
|
|
### 4.1 서울시 부동산 API
|
|
- **제공기관**: 서울특별시
|
|
- **플랫폼**: 서울 열린데이터광장 (data.seoul.go.kr)
|
|
- **주요 API**:
|
|
- 서울시 부동산 실거래가 정보
|
|
- 서울시 전월세가 정보
|
|
- 서울시 부동산 중개업소 정보
|
|
|
|
### 4.2 경기도 부동산 API
|
|
- **제공기관**: 경기도
|
|
- **플랫폼**: 경기데이터드림 (data.gg.go.kr)
|
|
- **주요 API**:
|
|
- 경기도 임대주택 현황
|
|
- 경기도 부동산 중개업소 현황
|
|
|
|
### 4.3 SH 서울주택도시공사 API
|
|
- **제공기관**: 서울주택도시공사
|
|
- **URL**: https://www.i-sh.co.kr
|
|
- **주요 데이터**:
|
|
- SH 임대주택 정보
|
|
- SH 분양 정보
|
|
- 상가 및 공장 정보
|
|
|
|
## 5. 주택금융 관련 API
|
|
|
|
### 5.1 주택도시보증공사 (HUG) API
|
|
- **제공기관**: 주택도시보증공사
|
|
- **URL**: https://www.khug.or.kr
|
|
- **Base URL**: `openapi.khug.or.kr`
|
|
- **주요 API**:
|
|
- 전세보증금 보증 정보: `/api/guarantee/deposit`
|
|
- 분양보증 정보: `/api/guarantee/sale`
|
|
- 주택금융 통계: `/api/statistics/housing`
|
|
|
|
### 5.2 마이홈포털 API
|
|
- **서비스명**: 국토교통부_마이홈포털 공공임대주택 단지정보 조회 서비스
|
|
- **URL**: https://www.data.go.kr/data/15110581/openapi.do
|
|
- **Base URL**: `apis.data.go.kr/1613000/MyHomeService`
|
|
- **엔드포인트**: `/getPublicRentalHousingInfo`
|
|
- **특징**: 전국 공공임대주택 통합 정보 제공
|
|
- **데이터 형식**: XML/JSON
|
|
|
|
## 6. Python을 이용한 API 호출 예제
|
|
|
|
### 6.1 공공데이터 API 호출 예제
|
|
```python
|
|
import requests
|
|
import xml.etree.ElementTree as ET
|
|
|
|
def get_apartment_trade_data(service_key, lawd_cd, deal_ymd):
|
|
"""
|
|
아파트 매매 실거래가 데이터 조회
|
|
"""
|
|
base_url = "http://apis.data.go.kr/1613000/RTMSDataSvcAptTrade/getRTMSDataSvcAptTrade"
|
|
|
|
params = {
|
|
'serviceKey': service_key,
|
|
'LAWD_CD': lawd_cd,
|
|
'DEAL_YMD': deal_ymd,
|
|
'pageNo': 1,
|
|
'numOfRows': 100
|
|
}
|
|
|
|
response = requests.get(base_url, params=params)
|
|
|
|
if response.status_code == 200:
|
|
# XML 파싱
|
|
root = ET.fromstring(response.content)
|
|
items = root.findall('.//item')
|
|
|
|
results = []
|
|
for item in items:
|
|
data = {
|
|
'아파트명': item.findtext('아파트'),
|
|
'전용면적': item.findtext('전용면적'),
|
|
'거래금액': item.findtext('거래금액'),
|
|
'거래년': item.findtext('년'),
|
|
'거래월': item.findtext('월'),
|
|
'거래일': item.findtext('일'),
|
|
'층': item.findtext('층'),
|
|
'건축년도': item.findtext('건축년도'),
|
|
'도로명': item.findtext('도로명'),
|
|
'법정동': item.findtext('법정동')
|
|
}
|
|
results.append(data)
|
|
|
|
return results
|
|
else:
|
|
return None
|
|
```
|
|
|
|
### 6.2 오피스텔 전월세 데이터 조회 예제
|
|
```python
|
|
def get_officetel_rent_data(service_key, lawd_cd, deal_ymd):
|
|
"""
|
|
오피스텔 전월세 실거래가 데이터 조회
|
|
"""
|
|
base_url = "http://apis.data.go.kr/1613000/RTMSDataSvcOffiRent/getRTMSDataSvcOffiRent"
|
|
|
|
params = {
|
|
'serviceKey': service_key,
|
|
'LAWD_CD': lawd_cd,
|
|
'DEAL_YMD': deal_ymd,
|
|
'pageNo': 1,
|
|
'numOfRows': 100
|
|
}
|
|
|
|
response = requests.get(base_url, params=params)
|
|
|
|
if response.status_code == 200:
|
|
root = ET.fromstring(response.content)
|
|
items = root.findall('.//item')
|
|
|
|
results = []
|
|
for item in items:
|
|
data = {
|
|
'단지명': item.findtext('단지'),
|
|
'전용면적': item.findtext('전용면적'),
|
|
'보증금': item.findtext('보증금액'),
|
|
'월세': item.findtext('월세금액'),
|
|
'층': item.findtext('층'),
|
|
'건축년도': item.findtext('건축년도'),
|
|
'법정동': item.findtext('법정동')
|
|
}
|
|
results.append(data)
|
|
|
|
return results
|
|
else:
|
|
return None
|
|
```
|
|
|
|
### 6.3 통합 API 호출 클래스 예제
|
|
```python
|
|
class RealEstateAPI:
|
|
"""
|
|
국토교통부 부동산 실거래가 통합 API 클래스
|
|
"""
|
|
|
|
BASE_URL = "http://apis.data.go.kr/1613000"
|
|
|
|
ENDPOINTS = {
|
|
'apt_trade': '/RTMSDataSvcAptTrade/getRTMSDataSvcAptTrade',
|
|
'apt_rent': '/RTMSDataSvcAptRent/getRTMSDataSvcAptRent',
|
|
'sh_trade': '/RTMSDataSvcSHTrade/getRTMSDataSvcSHTrade',
|
|
'sh_rent': '/RTMSDataSvcSHRent/getRTMSDataSvcSHRent',
|
|
'offi_trade': '/RTMSDataSvcOffiTrade/getRTMSDataSvcOffiTrade',
|
|
'offi_rent': '/RTMSDataSvcOffiRent/getRTMSDataSvcOffiRent',
|
|
'house_trade': '/RTMSDataSvcSHHouseTrade/getRTMSDataSvcSHHouseTrade',
|
|
'house_rent': '/RTMSDataSvcSHHouseRent/getRTMSDataSvcSHHouseRent',
|
|
'land': '/RTMSDataSvcLandTrade/getRTMSDataSvcLandTrade',
|
|
'business': '/RTMSDataSvcNrgTrade/getRTMSDataSvcNrgTrade'
|
|
}
|
|
|
|
def __init__(self, service_key):
|
|
self.service_key = service_key
|
|
|
|
def get_data(self, api_type, lawd_cd, deal_ymd, page=1, rows=100):
|
|
"""
|
|
통합 데이터 조회 메서드
|
|
|
|
:param api_type: API 타입 (apt_trade, apt_rent, sh_trade 등)
|
|
:param lawd_cd: 법정동 코드 5자리
|
|
:param deal_ymd: 거래년월 6자리
|
|
:param page: 페이지 번호
|
|
:param rows: 한 페이지당 행 수
|
|
"""
|
|
if api_type not in self.ENDPOINTS:
|
|
raise ValueError(f"Invalid API type: {api_type}")
|
|
|
|
url = self.BASE_URL + self.ENDPOINTS[api_type]
|
|
params = {
|
|
'serviceKey': self.service_key,
|
|
'LAWD_CD': lawd_cd,
|
|
'DEAL_YMD': deal_ymd,
|
|
'pageNo': page,
|
|
'numOfRows': rows
|
|
}
|
|
|
|
response = requests.get(url, params=params)
|
|
if response.status_code == 200:
|
|
return self._parse_xml(response.content)
|
|
else:
|
|
return None
|
|
|
|
def _parse_xml(self, xml_content):
|
|
"""XML 파싱 헬퍼 메서드"""
|
|
root = ET.fromstring(xml_content)
|
|
items = root.findall('.//item')
|
|
return [self._extract_item_data(item) for item in items]
|
|
|
|
def _extract_item_data(self, item):
|
|
"""아이템 데이터 추출"""
|
|
# XML 엘리먼트에서 모든 데이터 추출
|
|
data = {}
|
|
for child in item:
|
|
data[child.tag] = child.text
|
|
return data
|
|
```
|
|
|
|
## 7. 민간 부동산 API
|
|
|
|
### 7.1 네이버 부동산
|
|
- **특징**: 공식 API 미제공, 웹 크롤링으로 데이터 수집
|
|
- **주의사항**: robots.txt 확인 및 과도한 요청 자제
|
|
- **대안**: Selenium을 이용한 동적 페이지 크롤링
|
|
|
|
### 7.2 직방 API (비공식)
|
|
- **특징**: 내부 API 엔드포인트 활용 가능
|
|
- **주의사항**: 공식 지원 없음, 변경 가능성 있음
|
|
- **주요 엔드포인트**:
|
|
- 지역 검색: `https://apis.zigbang.com/v2/search`
|
|
- 매물 리스트: `https://apis.zigbang.com/v2/items`
|
|
- 매물 상세: `https://apis.zigbang.com/v2/items/{item_id}`
|
|
- 단지 정보: `https://apis.zigbang.com/v2/complex/{complex_id}`
|
|
|
|
### 7.3 호갱노노
|
|
- **특징**: 아파트 실거래가 정보 특화
|
|
- **URL**: https://hogangnono.com
|
|
- **데이터**: 실거래가, 시세 차트, 단지 정보
|
|
- **주의사항**: 웹 크롤링 필요
|
|
|
|
### 7.4 부동산114
|
|
- **특징**: 종합 부동산 정보 제공
|
|
- **URL**: https://www.r114.com
|
|
- **데이터**: 시세, 실거래가, 분양 정보
|
|
- **주의사항**: 회원가입 필요한 경우 있음
|
|
|
|
### 7.5 KB부동산
|
|
- **특징**: KB국민은행 제공 부동산 데이터
|
|
- **URL**: https://data.kbland.kr
|
|
- **데이터**: 주택가격동향, 시세, 통계
|
|
- **주의사항**: 일부 데이터는 유료
|
|
|
|
## 8. API 활용 시 주의사항
|
|
|
|
1. **인증키 관리**: 환경변수나 별도 설정 파일로 관리
|
|
2. **트래픽 제한**: 일일 호출 제한 확인
|
|
3. **데이터 갱신 주기**: 실시간이 아닌 일정 주기로 갱신됨
|
|
4. **에러 처리**: 네트워크 오류, 서비스 점검 대응
|
|
5. **법적 제약**: 개인정보보호법 준수
|
|
|
|
## 9. 추천 활용 방법
|
|
|
|
1. **캐싱 구현**: 동일 요청 반복 방지
|
|
2. **배치 처리**: 대량 데이터는 야간 배치로 처리
|
|
3. **데이터베이스 저장**: 조회한 데이터 로컬 DB 저장
|
|
4. **모니터링**: API 응답 시간 및 에러율 모니터링
|
|
|
|
## 10. API 종류별 요약 테이블
|
|
|
|
| 구분 | API 제공처 | 데이터 종류 | 비용 | 인증 필요 |
|
|
|------|------------|-------------|------|-----------|
|
|
| 국토교통부 | 공공데이터포털 | 아파트/오피스텔/연립/단독 실거래가 | 무료 | O |
|
|
| 한국부동산원 | 한국부동산원 | 부동산 통계, 가격지수 | 무료 | O |
|
|
| LH공사 | 공공데이터포털 | 공공임대주택 정보 | 무료 | O |
|
|
| SH공사 | SH/서울시 | 서울시 임대주택 정보 | 무료 | O |
|
|
| 지자체 | 각 지자체 | 지역별 부동산 정보 | 무료 | O |
|
|
| 네이버 | 네이버 | 매물, 시세 정보 | - | X |
|
|
| 직방 | 직방 | 원룸/오피스텔 매물 | - | X |
|
|
| 호갱노노 | 호갱노노 | 아파트 실거래가 | 무료 | X |
|
|
| 부동산114 | 부동산114 | 종합 부동산 정보 | 일부유료 | △ |
|
|
| KB부동산 | KB국민은행 | 부동산 통계/시세 | 일부유료 | △ |
|
|
|
|
## 11. API 엔드포인트 빠른 참조
|
|
|
|
### 국토교통부 실거래가 API 엔드포인트 목록
|
|
|
|
| 부동산 종류 | 거래 유형 | Base URL | 엔드포인트 |
|
|
|------------|-----------|----------|------------|
|
|
| 아파트 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcAptTrade | /getRTMSDataSvcAptTrade |
|
|
| 아파트 | 전월세 | apis.data.go.kr/1613000/RTMSDataSvcAptRent | /getRTMSDataSvcAptRent |
|
|
| 연립/다세대 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcSHTrade | /getRTMSDataSvcSHTrade |
|
|
| 연립/다세대 | 전월세 | apis.data.go.kr/1613000/RTMSDataSvcSHRent | /getRTMSDataSvcSHRent |
|
|
| 오피스텔 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcOffiTrade | /getRTMSDataSvcOffiTrade |
|
|
| 오피스텔 | 전월세 | apis.data.go.kr/1613000/RTMSDataSvcOffiRent | /getRTMSDataSvcOffiRent |
|
|
| 단독/다가구 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcSHHouseTrade | /getRTMSDataSvcSHHouseTrade |
|
|
| 단독/다가구 | 전월세 | apis.data.go.kr/1613000/RTMSDataSvcSHHouseRent | /getRTMSDataSvcSHHouseRent |
|
|
| 토지 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcLandTrade | /getRTMSDataSvcLandTrade |
|
|
| 상업/업무용 | 매매 | apis.data.go.kr/1613000/RTMSDataSvcNrgTrade | /getRTMSDataSvcNrgTrade |
|
|
|
|
### 공통 파라미터
|
|
- `serviceKey`: 공공데이터포털 인증키 (필수)
|
|
- `LAWD_CD`: 법정동 코드 5자리 (필수)
|
|
- `DEAL_YMD`: 거래년월 6자리 (필수)
|
|
- `pageNo`: 페이지 번호 (선택, 기본값: 1)
|
|
- `numOfRows`: 한 페이지 결과 수 (선택, 기본값: 10)
|