UNPKG

budongsan-api

Version:

국토교통부 아파트 실거래가, 전월세, 단지 정보, 용적률 등 공공데이터 API 래퍼

214 lines (149 loc) 7.27 kB
# 🏘️ BudongsanAPI > 국토교통부 공공데이터 포털의 아파트 단지 정보, 실거래가, 전월세 데이터를 간편하게 조회할 수 있는 TypeScript 기반 API 클라이언트입니다. --- <br><br> ## ✨ 특징 - 아파트 단지 기본 및 상세 정보 조회 - 실거래가(기본, 상세) 데이터 조회 - 전월세 거래 정보 조회 - Axios 기반 HTTP 클라이언트 사용 - TypeScript 지원 및 타입 안전성 보장 - 요청 실패 시 명확한 예외 처리 --- <br><br> ## 📦 설치 ```bash npm install budongsan-api # 또는 yarn add budongsan-api ``` <br><br> ## 🚀 사용예제 ```ts import { BudongsanAPIClass, BudongsanUtil, SigunguService } from 'budongsan-api'; // ESM // or const { BudongsanAPIClass, BudongsanUtil, SigunguService } = require('budongsan-api'); // CommonJS // API 키는 공공데이터 포털에서 발급받은 서비스 키를 입력하세요. const budongsan_api = new BudongsanAPIClass('YOUR_SERVICE_KEY'); async function main() { try { // 아파트 단지 조회 const info = await budongsan_api.getApartmentBasicInfo('A10027364'); // '덕수궁롯데캐슬아파트' console.log('단지 정보:', info); const info = await budongsan_api.getApartmentDetailInfo('A10027364'); console.log('단지 상세 정보:', info); const priceList = await budongsan_api.getApartmentList('11110'); console.log('단지 정보 List:', priceList); // 실거래가 조회 (서울 종로구, 2025년 5월) const apartmentTradeBasicList = await budongsan_api.getApartmentTradeBasicList('11110', '202505'); console.log('실거래가 정보:', apartmentTradeBasicList); const apartmentTradeDetailList = await budongsan_api.getApartmentTradeDetailList('11110', '202505'); console.log('실거래가 디테일 정보:', apartmentTradeDetailList); // 전월세가 조회 const apartmentTradeRentList = await budongsan_api.getApartmentRentList('11110', '202505'); console.log('전월세가 정보:', apartmentTradeRentList); // 총괄표제부 조회 const brRecapTitleList = await budongsan_api.getBrRecapTitleList("11710", "11200", "0138", "0000"); console.log('총괄표제부 정보:', brRecapTitleList); // 전체 시군구 목록 조회 const sigunguList = SigunguService.getSigunguList(); console.log('시군구 목록:', sigunguList); /* [ { sido_name: "서울", sido_code: "1", sigungu_name: "강남구", sigungu_code: "11680'", bjd_array: [...] }, ... ] */ // 시군구 Map (코드 또는 이름 기준) const mapByCode = SigunguService.getSigunguMap("code"); console.log('강남구 정보:', mapByCode.get("11680")); const mapByName = SigunguService.getSigunguMap("name"); console.log('강남구 정보:', mapByName.get("강남구")); // 전체 법정동 리스트 const bjdList = SigunguService.getBjdList(); console.log('법정동 목록:',bjdList); /* [ { bjd_code: "10700", bjd_name: "신사동", sigungu_bjd_code: "1168010700" }, ... ] */ const now = BudongsanUtil.getKoreanYearMonth(); console.log(now); // { year: '2025', month: '07' } const ymdList = BudongsanUtil.generateDealYMDRange(2024, 5, 2025, 7); console.log(ymdList); // ['202405', '202406', ..., '202507'] const amount = BudongsanUtil.formatKoreanCurrency('55,000'); console.log(amount); // "5억 5000만 원" } catch (error) { console.error('API 호출 실패:', error.message); } } main(); ``` <br><br> ## 📘 지원 메서드 <br> ### BudongsanAPIClass 클래스 #### 📌 아파트 단지 정보 | 메서드 | 설명 | |--------|------| | `getApartmentBasicInfo(kaptCode: string)` | 단지 기본 정보 조회 | | `getApartmentDetailInfo(kaptCode: string)` | 단지 상세 정보 조회 | | `getApartmentList(sigunguCode: string, numOfRows?: string, pageNo?: string)` | 시군구 코드 기반 아파트 목록 조회 | <br> #### 📌 실거래가 | 메서드 | 설명 | |--------|------| | `getApartmentTradeBasicList(sigunguCode: string, DEAL_YMD: string, numOfRows?: string, pageNo?: string)` | 실거래가 기본 데이터 조회 | | `getApartmentTradeDetailList(sigunguCode: string, DEAL_YMD: string, numOfRows?: string, pageNo?: string)` | 실거래가 상세 데이터 조회 | <br> #### 📌 전월세 | 메서드 | 설명 | |--------|------| | `getApartmentRentList(sigunguCode: string, DEAL_YMD: string, numOfRows?: string, pageNo?: string)` | 전월세 거래 정보 조회 | <br> #### 📌 건축물대장 | 메서드 | 설명 | |--------|------| | `getBrRecapTitleList(sigunguCode: string, bjdongCode: string, bun: string, ji: string, numOfRows?: string, pageNo?: string)` | 건축물대장 총괄표제부 정보 조회 | <br> ### SigunguService 인스턴스 #### 📌 시군구 정보 | 메서드 | 설명 | | ------------------------------------------ | ------------------------------------------------ | | `getSigunguList()` | 시도/시군구 목록을 평탄화된 배열로 반환 | | `getSigunguMap(keyType: "code" \| "name")` | 시군구 정보를 Map으로 반환 (`keyType`에 따라 시군구 코드 또는 이름 기준) | <br> #### 📌 법정동 정보 (BJD) | 메서드 | 설명 | | ----------------------------------------------- | ------------------------------------------------------- | | `getBjdList()` | 모든 시군구에 포함된 법정동 목록을 평탄화된 배열로 반환 | | `getBjdMapBySigungu(keyType: "code" \| "name")` | 시군구별 법정동 배열을 Map 형태로 반환 (`keyType`에 따라 시군구 코드 또는 이름 기준) | <br><br> 메서드 계속 추가 예정입니다! <br><br> ## 🛠️ 요구 사항 - **Node.js 14 이상** 최신 Node.js 런타임 환경이 필요합니다. - **API 키** 국토교통부 공공데이터 포털에서 발급받은 서비스 키를 사용해야 합니다. 👉 [공공데이터포털 바로가기](https://www.data.go.kr/) <br><br> ## ❗ 예외 처리 모든 API 호출은 `try...catch` 구문을 통해 실패 시 명확한 예외 정보를 제공합니다. - 오류 발생 시 `Error` 객체가 throw되며, `error.message`를 통해 상세 원인을 확인할 수 있습니다. 예외는 다음과 같은 경우에 발생할 수 있습니다: - ❌ **잘못된 API 키** 인증되지 않은 키를 사용할 경우 - 🌐 **네트워크 오류** 서버 연결 실패, 응답 지연 등 - 🏢 **존재하지 않는 단지 코드** 유효하지 않은 단지 코드를 전달한 경우 - ⛔ **요청 제한 초과** API 호출 횟수 제한을 초과했을 경우 <br><br>