R 리치고 개발자 센터
MCP 서버 (AI 에이전트) 콘솔 열기

Richgo Real Estate API

아파트 데이터를 코드로 다루세요

전국 아파트 28,000여 개 단지의 기본 정보, 실거래가, 학군, 개발 호재를 REST API로 제공합니다. 단지를 검색해 ID 하나만 얻으면 모든 데이터를 바로 조회할 수 있습니다.

소개

리치고 부동산 데이터 API는 리치고 앱이 쓰는 것과 같은 데이터를 외부에서 조회할 수 있게 공개한 REST API입니다. 연구·분석·서비스 개발 목적으로 사용할 수 있습니다.

기본 정보

Base URLhttps://api-m.richgo.ai
프로토콜HTTPS만 지원합니다.
인증API Key/Secret으로 발급받은 JWT를 Authorization 헤더에 실어 보냅니다.
형식요청·응답 모두 JSON (UTF-8)
버전경로에 포함됩니다. 현재 v2

단지 식별자

모든 단지 조회는 리치고 단지 ID(danjiId)를 기준으로 합니다. a4BVkni 처럼 7자리 영숫자로 된 값입니다.

danjiId는 단지 검색 API로 찾습니다. 지역이나 단지명으로 검색하면 결과에 danjiId가 함께 내려오고, 그 값을 다른 엔드포인트의 경로에 넣어 쓰면 됩니다.

한번 찾은 danjiId는 바뀌지 않습니다. 매번 검색하지 말고 여러분 쪽 DB에 저장해 두고 재사용하세요.
Base URL
https://api-m.richgo.ai
지원 엔드포인트
# 인증
POST /v2/Authen/partner/token
POST /v2/Authen/partner/token/refresh

# 단지 찾기
GET  /v2/Partner/danji

# 단지 데이터
GET  /v2/Partner/danji/{danjiId}
GET  /v2/Partner/danji/{danjiId}/trades
GET  /v2/Partner/danji/{danjiId}/schools
GET  /v2/Partner/danji/{danjiId}/goodnews
GET  /v2/Partner/danji/{danjiId}/region-stats
GET  /v2/Partner/danji/{danjiId}/opengoods-stats
GET  /v2/Partner/danji/{danjiId}/nearby-infra

5분 만에 첫 호출

API 키를 발급받은 뒤 세 단계면 데이터를 받아볼 수 있습니다.

1. 액세스 토큰 발급

발급받은 apiKey와 apiSecret으로 액세스 토큰을 받습니다. 토큰은 24시간 동안 유효합니다.

2. 단지 찾기

지역이나 단지명으로 검색해 danjiId를 얻습니다. 이 값은 바뀌지 않으니 한 번 찾아 두면 계속 씁니다.

3. 데이터 조회

토큰을 Authorization: Bearer {accessToken} 헤더에 담고 경로에 danjiId를 넣어 호출합니다.

apiSecret은 서버에서만 사용하세요. 브라우저나 모바일 앱에 넣으면 그대로 노출됩니다. 토큰 발급은 반드시 서버에서 수행하고, 클라이언트에는 발급된 액세스 토큰만 내려보내세요.
# 1) 토큰 발급
TOKEN=$(curl -s -X POST "https://api-m.richgo.ai/v2/Authen/partner/token" \
  -H "Content-Type: application/json" \
  -d '{"apiKey":"rgk_...","apiSecret":"..."}' \
  | jq -r '.accessToken')

# 2) 단지 찾기 → danjiId
DANJI=$(curl -s -G "https://api-m.richgo.ai/v2/Partner/danji" \
  --data-urlencode "sgg=광진구" \
  --data-urlencode "name=더샵스타시티" \
  -H "Authorization: Bearer $TOKEN" \
  | jq -r '.items[0].danjiId')

# 3) 단지 조회
curl -s "https://api-m.richgo.ai/v2/Partner/danji/$DANJI" \
  -H "Authorization: Bearer $TOKEN" | jq '.'

인증

리치고 API는 API Key/Secret을 액세스 토큰으로 교환하는 방식을 씁니다. 모든 데이터 요청에는 액세스 토큰이 필요합니다.

토큰 수명

토큰유효 기간용도
accessToken24시간데이터 요청 시 Authorization 헤더에 사용
refreshToken15일액세스 토큰 재발급

토큰은 한 번에 하나만 유효합니다

토큰을 새로 발급하면 이전 토큰은 즉시 무효가 됩니다. 여러 서버에서 각자 토큰을 발급하면 서로를 무효화시키니, 발급한 토큰을 공유 저장소에 캐시해 두고 만료 전까지 재사용하세요.

만료된 토큰이나 무효화된 토큰으로 호출하면 401과 함께 TOKEN_EXPIRED 또는 TOKEN_REVOKED 코드가 돌아옵니다. 이때 토큰을 재발급받아 한 번만 재시도하도록 구현하세요.

키 관리

  • apiSecret은 발급 시점에 한 번만 전달됩니다. 다시 조회할 수 없습니다.
  • 분실하면 재발급이 필요하며, 재발급 시 기존 키는 폐기됩니다.
  • 유출이 의심되면 콘솔에서 즉시 재발급하세요. 기존 키는 그 순간 폐기됩니다.
  • 키를 저장소(Git)에 커밋하지 말고 환경변수나 시크릿 매니저를 쓰세요.
토큰 캐시 예시 (Python)
import time, requests

_cache = {"token": None, "exp": 0}

def get_token():
    # 만료 5분 전에 미리 갱신한다
    if _cache["token"] and time.time() < _cache["exp"] - 300:
        return _cache["token"]

    r = requests.post(
        "https://api-m.richgo.ai/v2/Authen/partner/token",
        json={"apiKey": API_KEY, "apiSecret": API_SECRET},
        timeout=10,
    )
    r.raise_for_status()
    data = r.json()

    _cache["token"] = data["accessToken"]
    _cache["exp"] = time.time() + data["expiresIn"]
    return _cache["token"]

응답 형식

파트너 API는 데이터를 최상위로 그대로 반환합니다. result 같은 봉투로 감싸지 않으니, .result 를 꺼내려 하면 undefined 가 됩니다.

주의: 리치고 내부 API(/api/data/*)는 { statusCode, result, ... } 봉투를 씁니다. 사내 코드나 오래된 예제를 참고하다 그 습관을 그대로 가져오면 전부 undefined 가 됩니다. /v2/Partner/* 와 /v2/Authen/partner/* 에서는 봉투가 없습니다.

오류도 봉투 없이 최상위로 옵니다. 성공(2xx)과 오류(4xx)는 본문 모양이 다르므로 HTTP 상태 코드로 분기한 뒤 본문을 읽으세요.

오류 본문 필드

필드설명
error오류 코드 (NOT_FOUND, INVALID_REQUEST, UNAUTHORIZED, RATE_LIMIT_EXCEEDED 등)
message사람이 읽을 설명
성공 응답 (200)
{
  "danjiId": "a9rJSEi",
  "danjiName": "한화포레나포항",
  "constructYear": 2024,
  "constructDate": "2024-03-01T00:00:00+09:00",
  "buildingAgeYears": 3,
  "totalHouseholds": 2192,
  "floorTop": 30,
  "constructName": "(주)한화"
}
오류 응답 (4xx)
{
  "error": "NOT_FOUND",
  "message": "해당 단지 정보를 찾을 수 없습니다."
}

호출 제한

안정적인 서비스 제공을 위해 API 키 단위로 호출량을 제한합니다. 제한을 넘기면 429 Too Many Requests가 반환됩니다.

구간한도기준
초당10회API 키
일일10,000회API 키 (매일 자정 KST 초기화)
토큰 발급분당 10회IP

응답 헤더

모든 응답에 남은 호출량이 함께 내려옵니다.

헤더설명
X-RateLimit-Limit일일 호출 한도
X-RateLimit-Remaining오늘 남은 호출 수
X-RateLimit-Reset한도 초기화까지 남은 초
Retry-After429일 때만. 재시도까지 기다릴 초
대량 조회 팁. 단지 목록을 순회할 때는 초당 10회를 넘지 않게 요청 간격을 두세요. 429를 받으면 Retry-After만큼 기다린 뒤 재시도하는 백오프를 넣어 두면 안전합니다.
429 응답
HTTP/1.1 429 Too Many Requests
Retry-After: 1
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9863
X-RateLimit-Reset: 41820

{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "초당 호출 한도를 초과했습니다."
}
백오프 재시도 (Python)
def call(path, retries=3):
    for attempt in range(retries):
        r = requests.get(
            BASE + path,
            headers={"Authorization": f"Bearer {get_token()}"},
            timeout=10,
        )
        if r.status_code != 429:
            r.raise_for_status()
            return r.json()

        wait = int(r.headers.get("Retry-After", 1))
        time.sleep(wait)

    raise RuntimeError("호출 한도 초과")

에러 코드

상태코드의미와 대처
400INVALID_REQUEST필수 파라미터 누락. 요청 본문을 확인하세요.
401INVALID_CREDENTIALSAPI Key 또는 Secret이 틀렸습니다.
401UNAUTHORIZEDAuthorization 헤더가 없습니다.
401TOKEN_EXPIRED액세스 토큰이 만료됐습니다. 재발급 후 재시도하세요.
401TOKEN_REVOKED다른 곳에서 토큰을 새로 발급해 무효화됐습니다. 재발급하세요.
401INVALID_TOKEN_TYPE리프레시 토큰으로 데이터를 요청했습니다. 액세스 토큰을 쓰세요.
404NOT_FOUND해당 danjiId의 단지가 없습니다.
429RATE_LIMIT_EXCEEDED초당 한도 초과. Retry-After 뒤 재시도하세요.
429DAILY_QUOTA_EXCEEDED일일 한도 초과. 자정(KST)에 초기화됩니다.
계약 기간이 끝난 뒤 토큰을 발급하면 401 INVALID_CREDENTIALS가 반환됩니다. 결제 상태를 먼저 확인해 주세요.

API 레퍼런스

토큰 발급

POST /v2/Authen/partner/token

API Key와 Secret으로 액세스 토큰과 리프레시 토큰을 함께 발급합니다.

요청 본문

필드타입설명
apiKey필수string발급받은 API Key (rgk_로 시작)
apiSecret필수string발급받은 API Secret

응답

필드타입설명
accessTokenstring데이터 요청에 쓰는 토큰
refreshTokenstring재발급용 토큰
expiresIninteger액세스 토큰 유효 시간(초). 86400
issuedAtinteger발급 시각 (Unix ms)
accessTokenExpiresAtinteger액세스 토큰 만료 시각 (Unix ms)
refreshTokenExpiresAtinteger리프레시 토큰 만료 시각 (Unix ms)
요청
curl -X POST "https://api-m.richgo.ai/v2/Authen/partner/token" \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "rgk_xxxxxxxxxxxxxxxx",
    "apiSecret": "xxxxxxxxxxxxxxxx"
  }'
응답
{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
  "expiresIn": 86400,
  "issuedAt": 1754438400000,
  "accessTokenExpiresAt": 1754524800000,
  "refreshTokenExpiresAt": 1755734400000
}

토큰 갱신

POST /v2/Authen/partner/token/refresh

리프레시 토큰으로 액세스 토큰과 리프레시 토큰을 새로 받습니다. 이때도 기존 토큰은 무효가 됩니다.

요청 헤더

헤더설명
Authorization필수Bearer {refreshToken} — 액세스 토큰이 아니라 리프레시 토큰입니다.

응답 형식은 토큰 발급과 동일합니다.

요청
curl -X POST \
  "https://api-m.richgo.ai/v2/Authen/partner/token/refresh" \
  -H "Authorization: Bearer $REFRESH_TOKEN"

API 레퍼런스

GET /v2/Partner/danji

지역이나 단지명으로 단지를 찾아 danjiId를 얻습니다. 다른 모든 엔드포인트를 쓰기 위한 첫 단계입니다.

파라미터

이름타입설명
sdstring시도. 아래 값 목록 참고
sggstring시군구 (예: 광진구)
emdstring읍면동 (예: 자양동)
bjdCodestring법정동 코드 10자리
namestring단지명 (부분 일치)
pageinteger페이지 번호. 기본 1
sizeinteger페이지 크기. 기본 20, 최대 100
조건 없이는 검색할 수 없습니다. 지역(sd/sgg/emd/bjdCode) 중 하나를 지정하거나, 지역 없이 단지명만 쓸 경우 2글자 이상이어야 합니다. 그렇지 않으면 400 INVALID_REQUEST가 반환됩니다.

시도(sd) 값

정식 행정구역명이 아니라 아래 축약형을 씁니다. 서울특별시가 아니라 서울입니다.

서울 경기 인천 부산 대구 대전 울산 세종 강원 충북 충남 전북 경북 경남 제주 전남광주

전남광주는 광주광역시와 전라남도가 한 값으로 묶여 있습니다. 둘을 구분해야 한다면 sgg나 bjdCode로 걸러 주세요.

응답

필드타입설명
totalCountinteger조건에 맞는 전체 건수
pageinteger현재 페이지
sizeinteger실제 적용된 페이지 크기
items[].danjiIdstring리치고 단지 ID
items[].danjiNamestring단지명
items[].sd / sgg / emdstring시도 / 시군구 / 읍면동
items[].bjdCodestring법정동 코드
items[].addressstring지번 주소
items[].totalHouseholdsinteger총 세대수
items[].constructYearinteger준공 연도

결과는 세대수가 큰 단지부터 정렬됩니다.

요청
응답
{
  "totalCount": 1,
  "page": 1,
  "size": 20,
  "items": [
    {
      "danjiId": "a4BVkni",
      "danjiName": "더샵스타시티",
      "sd": "서울",
      "sgg": "광진구",
      "emd": "자양동",
      "bjdCode": "1121510500",
      "address": "서울시 광진구 자양동 227-7",
      "totalHouseholds": 1177,
      "constructYear": 2007
    }
  ]
}

단지 기본 정보

GET /v2/Partner/danji/{danjiId}

단지의 규모와 건축 제원을 조회합니다.

경로 파라미터

이름타입설명
danjiId필수string리치고 단지 ID (7자리)

응답

필드타입설명
danjiIdstring리치고 내부 단지 ID
danjiNamestring단지명
constructYearinteger준공 연도
totalHouseholdsinteger총 세대수
floorTopinteger최고층
floorBotinteger최저층
totalParkinginteger총 주차 대수
floorAreaRatiointeger용적률(%)
buildingCoverageRatiointeger건폐율(%)
constructNamestring시공사
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni" \
  -H "Authorization: Bearer $TOKEN"
응답
{
  "danjiId": "a4BVkni",
  "danjiName": "더샵스타시티",
  "constructYear": 2007,
  "totalHouseholds": 1177,
  "floorTop": 35,
  "floorBot": 1,
  "totalParking": 2130,
  "floorAreaRatio": 376,
  "buildingCoverageRatio": 32,
  "constructName": "포스코건설"
}

실거래가

GET /v2/Partner/danji/{danjiId}/trades

국토교통부 실거래 신고 자료를 조회합니다. 기본은 최근 24개월이고, months로 최대 60개월(5년)까지 늘릴 수 있습니다.

파라미터

이름위치설명
danjiId필수path리치고 단지 ID (7자리)
pyeongTypequery평형으로 거르기. 생략하면 전 평형
monthsquery조회 기간(개월). 기본 24, 최대 60
조회 가능 기간은 최근 5년입니다. months에 그보다 큰 값을 넣어도 60으로 잘리며, 응답의 months 필드에 실제 적용된 기간이 담깁니다. 더 긴 기간이 필요한 연구 목적이라면 문의해 주세요.

응답

필드타입설명
monthsinteger실제 적용된 조회 기간(개월)
totalCountinteger반환된 거래 건수
items[].tradeDatestring거래일 (ISO 8601)
items[].pyeongTypeinteger평형
items[].priceinteger거래 금액 (만원)
items[].floorinteger거래 층
items[].supplyAreanumber공급 면적(㎡)
items[].privateAreanumber전용 면적(㎡)
items[].dongstring동
items[].transactionTypestring거래 구분 (매매/전세 등)
금액 단위는 만원입니다. 142000은 14억 2천만원입니다.
요청
# 기본 (최근 24개월, 전 평형)
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/trades" \
  -H "Authorization: Bearer $TOKEN"

# 최근 5년 + 34평만
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/trades?months=60&pyeongType=34" \
  -H "Authorization: Bearer $TOKEN"
응답
{
  "danjiId": "a4BVkni",
  "danjiName": "더샵스타시티",
  "months": 24,
  "totalCount": 71,
  "items": [
    {
      "tradeDate": "2026-07-18T00:00:00",
      "pyeongType": 34,
      "price": 180000,
      "floor": 17,
      "supplyArea": 114.8,
      "privateArea": 84.9,
      "dong": "101",
      "transactionType": "매매"
    }
  ]
}

학군

GET /v2/Partner/danji/{danjiId}/schools

단지에 배정되거나 인접한 초·중·고등학교를 학교급별로, 가까운 순으로 제공합니다. 학생 수·교원 수 같은 규모 지표와 진학률이 함께 내려갑니다.

파라미터

이름위치설명
danjiId필수path리치고 단지 ID (7자리)
topquery학교급별 최대 개수. 생략하면 전체
응답의 detailUrl 로 리치고 학교 상세(학군·학원가·진학률)에 바로 연결할 수 있습니다. 경로 형태는 /realty/place/elementary|middle|high/{schoolId} 입니다. 링크를 걸기 전에 값이 null 인지 확인하세요.

공통 필드

필드타입설명
schoolIdstring학교 ID
detailUrlstring리치고 학교 상세 페이지 주소(학군·학원가·진학률). 학교 카드를 누르면 이 주소로 보내면 됩니다. 학교급 코드가 02/03/04 가 아니면 null
schoolNamestring학교명
schoolLevelstring초등학교 / 중학교 / 고등학교
foundationTypestring설립 구분 (공립/사립/국립)
coedSchoolstring남/녀/남녀공학
distanceEuclideannumber단지 기준 직선거리(m)
totalStudentinteger전체 학생 수
studentPerClassroomnumber학급당 학생 수
studentPerTeachernumber교원당 학생 수
admissionRatenumber진학률(%). 학교급별 정의는 아래 참고
sdAdmissionRatenumber진학률 시도 내 상위 백분율 (작을수록 상위)
baseYearinteger통계 기준 연도

학교급별 추가 필드

학교급필드
초등학교higherYearsStudentRate (고학년 비율)
중학교toScienceHighSchool, toForeignLanguageHighSchool, toArtPhysicalHighSchool, toAutonomousPrivateHighSchool 및 각 진학률
고등학교toDomesticUniversity, toDomesticCollege, collegeAdmissionRate, overseaAdmissionRate
admissionRate의 정의는 학교급마다 다릅니다. 중학교는 특목고·자사고 진학률, 고등학교는 4년제 대학 진학률입니다. 초등학교 값은 그 학교 자체 실적이 아니라 배정 중학교의 특목고 진학률을 참고용으로 옮겨 둔 값이니 해석에 주의하세요.
거리는 직선거리입니다. 도보 거리는 원천 자료가 대부분 비어 있어 제공하지 않습니다.
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/schools?top=3" \
  -H "Authorization: Bearer $TOKEN"
응답
{
  "danjiId": "a4BVkni",
  "danjiName": "더샵스타시티",
  "elementarySchools": [
    {
      "schoolId": "S010002176",
      "schoolName": "서울동자초등학교",
      "schoolLevel": "초등학교",
      "foundationType": "공립",
      "distanceEuclidean": 300.7,
      "totalStudent": 946,
      "studentPerTeacher": 16.89,
      "admissionRate": 10.19,
      "baseYear": 2026
    }
  ],
  "middleSchools": [ /* ... */ ],
  "highSchools": [ /* ... */ ]
}

개발 호재

GET /v2/Partner/danji/{danjiId}/goodnews

단지 주변의 개발 호재를 가까운 순으로 제공합니다. 재개발·재건축·리모델링·모아타운 같은 정비사업과 택지 지구, 교통(지하철·철도·도로) 사업이 포함됩니다.

파라미터

이름위치설명
danjiId필수path리치고 단지 ID (7자리)
maxDistancequery검색 반경(m). 기본값이자 최댓값은 1000

응답

필드타입설명
maxDistanceinteger실제 적용된 검색 반경
summary.goodnewsScoreinteger단지 호재 종합 점수
summary.totalCountinteger반환된 호재 수
summary.trafficCountinteger교통 호재 수
summary.houseCountinteger주택(정비사업) 호재 수
summary.jiguCountinteger택지 호재 수
summary.etcCountinteger기타 호재 수
summary.*RegionMeannumber같은 지역 평균 호재 수 (비교 기준값)
items[].goodnewsIdstring호재 ID
items[].typestring대분류 (교통/주택/택지/기타)
items[].subTypestring중분류 (재개발/재건축/리모델링/모아타운/지하철 …)
items[].detailTypestring소분류. 교통 호재는 노선명
items[].namestring호재명
items[].scoreinteger호재 점수
items[].distancenumber단지 기준 직선거리(m)
items[].distanceGroupinteger거리 구간. 300 / 600 / 1000
items[].detailUrlstring리치고 호재 상세 페이지 주소. 호재를 누르면 이 주소로 보내면 됩니다. 중분류를 모르는 값이면 null
응답의 detailUrl 로 리치고 호재 상세에 바로 연결할 수 있습니다. 중분류에 따라 경로가 다릅니다 — 정비사업은 redevelop·rebuilding· remodeling·moatown, 택지는 jigu, 도로는 road, 지하철·철도는 subwayStation 입니다. 서버가 만들어 주므로 직접 조립할 필요는 없습니다.
검색 반경은 1,000m가 상한입니다. 원천 데이터가 그 범위까지만 구축돼 있어 더 큰 값을 넣어도 1,000m로 처리됩니다.
summary의 건수는 요청한 반경 안에서 실제로 반환된 항목을 센 값이고, *RegionMean은 반경과 무관한 지역 평균입니다. 두 값을 직접 빼서 비교하지 마세요.
요청
# 반경 1km (기본)
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/goodnews" \
  -H "Authorization: Bearer $TOKEN"

# 반경 300m 이내만
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/goodnews?maxDistance=300" \
  -H "Authorization: Bearer $TOKEN"
응답
{
  "danjiId": "a4BVkni",
  "danjiName": "더샵스타시티",
  "maxDistance": 1000,
  "summary": {
    "goodnewsScore": 5,
    "totalCount": 7,
    "trafficCount": 0,
    "houseCount": 6,
    "jiguCount": 0,
    "etcCount": 1,
    "houseRegionMean": 1.48584
  },
  "items": [
    {
      "goodnewsId": "d8AxKJU",
      "type": "주택",
      "subType": "재개발",
      "name": "자양동 227-147",
      "score": 4,
      "distance": 163.7,
      "distanceGroup": 300
    }
  ]
}

지역 통계

GET /v2/Partner/danji/{danjiId}/region-stats

단지가 속한 시군구의 거래량·매물량 통계입니다.

필드타입설명
sdstring시도
sggstring시군구
transactionVolume12minteger최근 12개월 거래량
opengoodsVolume12minteger최근 12개월 매물량
housingHouseholds36minteger최근 36개월 입주 세대수
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/region-stats" \
  -H "Authorization: Bearer $TOKEN"
응답
{
  "danjiId": "a4BVkni",
  "danjiName": "더샵스타시티",
  "sd": "서울특별시",
  "sgg": "광진구",
  "transactionVolume12m": 1284,
  "opengoodsVolume12m": 3921,
  "housingHouseholds36m": 1508
}

매물 통계

GET /v2/Partner/danji/{danjiId}/opengoods-stats

단지의 현재 매물 호가 범위와 매물 증감 추이입니다.

필드타입설명
memeMaxPriceinteger매매 최고 호가 (만원)
memeMinPriceinteger매매 최저 호가 (만원)
memeVolumeinteger매매 매물 수
memeVolumeRate1mnumber매매 매물 1개월 증감률(%)
jeonseVolumeinteger전세 매물 수
jeonseVolumeRate1mnumber전세 매물 1개월 증감률(%)

평형별로 보려면 ?pyeongType=34처럼 평형을 지정하세요.

요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/opengoods-stats" \
  -H "Authorization: Bearer $TOKEN"

주변 인프라

GET /v2/Partner/danji/{danjiId}/nearby-infra

지하철역, 학교, 생활 시설을 한 번에 조회합니다. top 파라미터로 각 항목의 최대 개수를 지정할 수 있습니다.

학군만 필요하다면 필드가 더 정리된 학군 API를 쓰는 편이 좋습니다. 이 엔드포인트의 schools는 앱 내부 형식을 그대로 담고 있어 필드명이 다릅니다.
필드설명
subways인근 지하철역 목록 (거리 포함)
schools인근 학교 (초/중/고 그룹)
places생활 시설 (마트, 병원 등)
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a4BVkni/nearby-infra?top=5" \
  -H "Authorization: Bearer $TOKEN"

AI 미래가격

GET /v2/Partner/danji/{danjiId}/ai-price

단지·평형의 3개월·2년·4년 예측가와 증감률을 반환합니다. 배치로 미리 계산된 값을 읽어오므로 응답이 빠르고, 호출해도 LLM 비용이 발생하지 않습니다.

모델별 적중률은 제공하지 않습니다. 리치고에 예측 모델 라인업과 과거 성적이 있긴 하지만, 그건 KB 연계용 산출물(시군구 단위)이고 여기서 주는 가격은 단지·평형 단위의 다른 파이프라인입니다. 같은 단지에서 두 값이 맞지 않고, 모델이 커버하지 않는 단지도 가격은 나옵니다. 가격 옆에 적중률을 표기하면 그 모델이 이 숫자를 냈다는 잘못된 뜻이 되므로 화면에 쓰지 마세요.
아직 예측이 산출되지 않은 평형이 있습니다. 그 경우 points 의 값이 전부 null 로 내려가며, 오류가 아니라 “이 평형은 예측 대상이 아님”을 뜻합니다.
필드설명
basePrice예측의 기준이 된 리치고 매매 시세(만원)
points[]horizon 3M / 2Y / 4Y 별 price(만원)와 rate(기준시세 대비 %)
predictedAt예측 산출 시각
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a9rJSEi/ai-price?pyeongType=33" \n  -H "Authorization: Bearer $TOKEN"

가격 시계열 · 호가 분포

GET /v2/Partner/danji/{danjiId}/price-series

월별 실거래 평균가·거래건수와 최저 호가를 함께 주고, 현재 시점의 가격대별 매물 분포(매물대)를 덧붙입니다. months 기본 36, 최대 120입니다.

실거래와 호가는 기준일이 다릅니다. 실거래는 국토부 신고 기준이라 신고 지연이 있고 호가는 매물 수집 시점입니다. 같은 달 값을 1:1로 비교해 고저를 단정하지 마세요. 거래가 없는 달도 tradeCount: 0 으로 채워 옵니다.
필드설명
series[]month(yyyy.MM), tradeAvgPrice, tradeCount, opengoodsMinPrice, opengoodsVolume
opengoodsBands[]price(만원), count, isLowest — 현재 매매 호가 분포
months실제로 적용된 조회 개월 수
요청
curl "https://api-m.richgo.ai/v2/Partner/danji/a9rJSEi/price-series?pyeongType=33&months=36" \n  -H "Authorization: Bearer $TOKEN"

시황 히트맵

GET /v2/Partner/region/heatmap

시도(필수)·시군구(선택) 안 단지들의 매매 호가 증감률과 시가총액을 한 번에 반환합니다. 시가총액 내림차순, 최대 500건입니다.

증감률은 전부 호가 기준입니다(실거래 아님) — 화면 라벨에 그대로 “호가”라고 적어 주세요. n개월 전 값이 없는 신축은 해당 rate 가 null 이니 0%로 칠하지 말고 회색 처리하세요.
필드설명
items[].rate1M / 3M / 6M / 12M기간별 매매 최저 호가 증감률(%)
items[].minPrice현재 최저 호가(만원)
items[].capPrice단지 시가총액 — 이 필드만 원 단위입니다
totalCount / isTruncated반환 건수와 상한 절삭 여부
요청
curl -G "https://api-m.richgo.ai/v2/Partner/region/heatmap" \n  --data-urlencode "sd=경북" \n  --data-urlencode "sgg=포항시 북구" \n  -H "Authorization: Bearer $TOKEN"

보증금 안전도

POST /v2/Partner/deposit-safety

채무 분석·HUG 전세보증보험 가심사·역전세를 한 번에 판정합니다. 등기부는 리치고가 발급하지 않습니다. 등기 열람은 건당 과금에 본인 계정 기반이라 재판매가 되지 않기 때문입니다. 선순위·후순위 채무와 권리관계 유무는 호출자가 직접 발급한 등기부에서 읽어 요청에 담아 보내고, 리치고는 시세와 판정 로직을 제공합니다.

jeonsePrice 가 null 이면 역전세 판정을 생략합니다. 0으로 취급하지 마세요 — 전세 시세가 없는 것을 “보증금보다 낮다”로 읽으면 없는 위험을 만들어 냅니다. 본 판정은 참고자료이며 법적 효력을 갖지 않습니다.
필드설명
요청 deposit보증금(만원)
요청 seniorDebt계약일 이전 설정되고 말소되지 않은 채권최고액 합계(만원)
요청 hasAdverseRegistryEntry경매·압류·가압류·가처분·가등기가 하나라도 있으면 true
debtRatio / debtGrade시세 대비 채무율(%)과 등급 — 50% 미만 GOOD · 70% 미만 WARNING · 이상 DANGER
expectedAuctionPrice경매 예상 낙찰가 = 매매 시세 × 70%
expectedLoss / expectedRecovery손실·회수 예상 보증금(만원)
hugEligible / hugConditions[]4개 조건을 모두 충족해야 가입 가능
hugFeeMin / hugFeeMax예상 가입비(만원, 2년치)
reverseJeonseGrade / jeonseGap전세 시세 − 보증금. 시세가 없으면 둘 다 null
요청
curl -X POST "https://api-m.richgo.ai/v2/Partner/deposit-safety" \n  -H "Authorization: Bearer $TOKEN" \n  -H "Content-Type: application/json" \n  -d '{"danjiId":"a9rJSEi","pyeongType":33,"deposit":20000,
       "seniorDebt":0,"juniorDebt":0,"hasAdverseRegistryEntry":false}'

자료 내려받기

이 페이지는 레퍼런스입니다. 실제로 붙일 때는 아래 두 가지를 같이 쓰면 훨씬 빠릅니다. AI 코딩 도구에 그대로 물려도 되도록 정리해 두었습니다.

연동 가이드 (Markdown)

richgo-integration.md 내려받기

이 페이지의 내용에 더해 11개 엔드포인트의 실제 응답 JSON 전문, 화면별 API 조합, 보증금 안전도 판정식 원문, 캐싱 권장치, 그리고 자주 틀리는 지점 12가지가 표로 들어 있습니다. 단위(만원 vs 원), 상위 백분위의 방향, 호가 기준 증감률처럼 “돌아는 가는데 숫자 해석이 틀리는” 실수를 막는 항목들입니다.

React 컴포넌트 패키지 (zip)

richgo-partner-ui-react.zip 내려받기

React 18 + TypeScript. 아래 5개 화면 컴포넌트와 타입 정의, 서버 전용 API 클라이언트, 포매팅 유틸, CSS가 들어 있습니다. 차트는 전부 손으로 그린 SVG라 차트 라이브러리 의존성이 없습니다.

컴포넌트쓰는 API
AiPriceReportai-price · price-series · trades · region-stats
DepositSafetyReportdeposit-safety
DanjiGoodnewsgoodnews
DanjiSchoolsschools
MarketHeatmapregion/heatmap
API 클라이언트는 서버에서만 쓰세요. apiSecret 이 브라우저 번들에 들어가면 그대로 유출이고, 유출된 키로 발생한 호출은 회원사의 일일 한도를 그대로 소진시킵니다. Next.js 라면 Route Handler 나 Server Component 에서 호출하고, 컴포넌트에는 결과만 props 로 내려주세요. 컴포넌트는 데이터를 스스로 가져오지 않습니다.
받아서 쓰기
# 연동 가이드
curl -O "https://m.richgo.ai/developers/richgo-integration.md"

# React 컴포넌트
curl -O "https://m.richgo.ai/developers/richgo-partner-ui-react.zip"
unzip richgo-partner-ui-react.zip

# 타입 체크
cd richgo-partner-ui
npm i && npm run typecheck

요금 및 신청

단일 요금제로 운영합니다. 아래 한도 안에서 모든 엔드포인트를 제한 없이 사용할 수 있습니다.

200,000원 / 월
  • 전체 엔드포인트 이용
  • 초당 10회 / 일 10,000회
  • 액세스 토큰 24시간, 리프레시 15일
  • 이메일 기술 지원
  • 언제든 해지 가능 (결제한 기간까지 이용)

시작하기

결제하면 바로 키가 나옵니다. 심사나 대기 시간이 없습니다.

  1. 리치고 계정으로 로그인합니다.
  2. 카드를 등록하고 월 이용권을 결제합니다.
  3. 콘솔에서 API Key와 Secret이 즉시 발급됩니다.

개발자 콘솔 열기

apiSecret은 발급 화면에서 한 번만 보입니다. 다시 조회할 수 없으니 그 자리에서 복사해 안전한 곳에 보관하세요. 잃어버렸다면 콘솔에서 재발급하면 됩니다(기존 키는 즉시 폐기됩니다).

해지

콘솔에서 언제든 해지할 수 있습니다. 해지해도 이미 결제한 기간까지는 그대로 쓸 수 있고, 그 기간이 지나면 토큰 발급이 막힙니다. 다시 결제하면 같은 키로 이어서 사용합니다.

연구·교육 목적 무료 이용

학위논문이나 수업 과제 등 연구·교육 목적이라면 결제 없이 발급해 드립니다. 소속과 이용 목적을 적어 support@richgo.ai로 문의해 주세요. 이 경우에도 이용 조건은 동일하게 적용됩니다.

데이터 정확성
# 출처
- 실거래가는 국토교통부 신고 자료 기준
- 학군·호재는 참고 자료이며
  법적 효력이 있는 자료가 아님

# 갱신
- 실거래가: 국토부 공개 주기를 따름
- 학군: 매년 2~4월 갱신
- 호재: 사업 단계 변동 시 갱신

이용 조건

API 키를 발급받아 사용하는 것은 아래 조건에 동의하는 것으로 봅니다. 위반이 확인되면 사전 통보 없이 키를 폐기할 수 있습니다.

비상업적 이용에 한합니다

본 API는 연구·학습 등 비상업적 목적으로만 사용할 수 있습니다. 다음은 모두 허용되지 않으며, 필요한 경우 별도의 상업용 계약을 맺어야 합니다.

  • 본 API의 데이터를 이용해 유료 서비스·상품을 제공하는 행위
  • 광고 등으로 수익을 얻는 서비스에 데이터를 사용하는 행위
  • 사내 영업·중개 등 영리 목적 업무에 활용하는 행위
  • 본 API를 이용한 결과물을 유상으로 제공·판매하는 행위
학위논문, 학술 발표, 수업 과제 등 연구·교육 목적의 사용은 허용됩니다. 이 경우에도 아래 출처 표기를 지켜 주세요.

재배포를 금지합니다

응답으로 받은 데이터는 이용자 본인의 분석·연구 목적으로만 사용할 수 있습니다. 다음은 데이터의 원형 여부와 관계없이 모두 금지됩니다.

  • 데이터를 파일·DB·API 등 어떤 형태로든 제3자에게 제공하거나 공개하는 행위
  • 데이터를 저장소·웹사이트·데이터셋 등에 게시하거나 공유하는 행위
  • 가공·재구성한 데이터를 배포하는 행위
  • 본 API를 중계·프록시해 제3자가 사용할 수 있게 하는 행위
  • AI 모델의 학습 데이터로 사용하거나 그 목적으로 축적하는 행위
연구 결과에 통계·집계·차트 형태로 인용하는 것은 재배포로 보지 않습니다. 원자료 자체를 넘기는 것만 금지됩니다.

계정과 호출

  • API Key와 Secret을 제3자에게 공유하거나 양도할 수 없습니다. 키 단위로 사용량이 집계됩니다.
  • 호출 제한을 우회할 목적으로 키를 여러 개 발급받거나 우회 수단을 쓸 수 없습니다.
  • 전국 단지를 순회하며 데이터를 통째로 수집하는 행위는 금지됩니다.

출처 표기

본 API의 데이터를 논문·보고서·발표 자료에 사용할 때는 "데이터 제공: 리치고(richgo.ai)"를 표기해 주세요.

면책

데이터는 있는 그대로 제공되며 정확성·완전성을 보증하지 않습니다. 특히 학군과 호재 정보는 참고 자료이고 법적 효력이 없습니다. 이 데이터에 근거한 판단으로 발생한 손해에 대해 리치고는 책임지지 않습니다.

자주 묻는 질문

danjiId는 어디서 얻나요?

단지 검색 API로 찾습니다. 지역이나 단지명으로 검색하면 결과에 danjiId가 들어 있습니다. 한번 정해진 값은 바뀌지 않으니 여러분 쪽 DB에 저장해 두고 재사용하세요.

시도를 "서울특별시"로 넣었는데 결과가 없습니다

sd는 서울, 경기 같은 축약형입니다. 전체 목록은 단지 검색 절에 있습니다. 정확한 지역을 지정하려면 법정동 코드(bjdCode)를 쓰는 편이 확실합니다.

토큰을 매번 새로 발급받아도 되나요?

권장하지 않습니다. 새로 발급하면 이전 토큰이 무효가 되고, 토큰 발급은 IP당 분당 10회로 제한됩니다. 24시간 동안 하나를 캐시해 재사용하세요.

여러 대의 서버에서 호출해도 되나요?

가능합니다. 다만 토큰은 키 하나당 하나만 유효하므로, 토큰을 Redis 같은 공유 저장소에 두고 서버들이 같은 토큰을 쓰도록 하세요. 각 서버가 따로 발급하면 서로를 무효화합니다.

실거래가는 얼마나 자주 갱신되나요?

국토교통부 실거래 공개 주기를 따릅니다. 신고 기한이 계약일로부터 30일이라 최근 한 달 데이터는 계속 채워지는 중이라고 보시면 됩니다.

호재 반경을 3km로 늘릴 수 있나요?

현재는 1,000m가 상한입니다. 원천 데이터가 그 범위까지만 구축돼 있어서 더 큰 값을 넣어도 결과가 늘지 않습니다.

학군 API에 서울대·의대 진학 실적도 있나요?

다음 버전에 추가할 예정입니다. 해당 자료는 전수 조사가 아니라 국정감사·언론 보도 등에서 모은 것이라, 자료가 없는 학교를 "0명"으로 오해하지 않도록 출처와 집계 기준을 함께 내려보내는 형태로 준비하고 있습니다.

연구 목적인데 무료로 쓸 수 있나요?

가능합니다. 학위논문이나 수업 과제 등 연구·교육 목적이면 소속과 목적을 적어 support@richgo.ai로 문의해 주세요. 검토 후 기간을 정해 무료로 발급해 드립니다. 다만 이용 조건의 비상업·재배포 금지는 동일하게 적용됩니다.

apiSecret을 잃어버렸습니다

콘솔에서 재발급하세요. 저장된 것은 해시뿐이라 원래 값을 다시 보여드릴 수 없습니다. 재발급하면 기존 키는 즉시 폐기되니, 운영 중인 서비스가 있다면 새 키로 교체한 뒤 배포하세요.

해지하면 키가 바로 막히나요?

아닙니다. 이미 결제한 기간까지는 그대로 쓸 수 있습니다. 그 기간이 지나면 토큰 발급이 401로 거부되고, 이미 발급된 액세스 토큰도 최대 24시간 안에 만료됩니다.

한도를 늘릴 수 있나요?

가능합니다. 필요한 호출량을 알려주시면 별도로 안내해 드립니다. support@richgo.ai