jhhackaton/docs/api_guide.md

17 KiB

부동산 정보 검색 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:
  • Base URL:
    • 매매: apis.data.go.kr/1613000/RTMSDataSvcSHTrade
    • 전월세: apis.data.go.kr/1613000/RTMSDataSvcSHRent
  • 엔드포인트:
    • 매매: /getRTMSDataSvcSHTrade
    • 전월세: /getRTMSDataSvcSHRent
  • 데이터 형식: XML
  • 트래픽 제한: 개발계정 10,000/일

1.4 오피스텔 실거래가 API

  • 서비스명: 국토교통부_오피스텔 매매/전월세 실거래가 자료
  • 제공기관: 국토교통부
  • URL:
  • Base URL:
    • 매매: apis.data.go.kr/1613000/RTMSDataSvcOffiTrade
    • 전월세: apis.data.go.kr/1613000/RTMSDataSvcOffiRent
  • 엔드포인트:
    • 매매: /getRTMSDataSvcOffiTrade
    • 전월세: /getRTMSDataSvcOffiRent
  • 데이터 형식: XML
  • 트래픽 제한: 개발계정 10,000/일

1.5 단독/다가구 주택 실거래가 API

  • 서비스명: 국토교통부_단독다가구 매매/전월세 실거래가 자료
  • 제공기관: 국토교통부
  • URL:
  • 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 부동산 통계 조회 서비스

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 호출 예제

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 오피스텔 전월세 데이터 조회 예제

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 호출 클래스 예제

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)