---
name: gongsijiga-search
description: |
  대한민국 국토교통부가 매년 공시하는 "개별공시지가"(원/㎡) 조회.
  지번 단위 토지의 정부 공시 단가로, 재산세·종부세·양도세 등
  세금 산정의 법적 기준이다. **시세/실거래가가 아니다.**
  Use when the user asks for 공시지가, 개별공시지가, 토지 공시단가,
  세무 계산용 토지 단가, or "이 땅 공시지가 얼마야".
  Do NOT use for 시세, 실거래가, 매매가, 호가, 공동주택가격
  (those need a different data source).
license: MIT
metadata:
  category: real-estate
  locale: ko-KR
  phase: v1
---

# 개별공시지가 조회

## What this skill does

한국 국토교통부 부동산공시가격알리미(realtyprice.kr)에서 특정 필지의 **개별공시지가**(원/㎡)를 조회한다. 다년도 추이(최근 5년 이내)와 전년 대비 변동률을 정규화된 JSON으로 반환한다.

공시지가는 매년 1월 1일 기준, 4~5월 공시. 세금(재산세, 종합부동산세, 양도소득세) 산정의 법적 기준 단가다.

## When to use

- "서울 강남구 역삼동 736 공시지가 알려줘"
- "전라남도 무안군 청계면 청천리 100번지 개별공시지가"
- "서초동 산 1-2 공시지가 추이"
- 세무 계산에서 토지 공시 단가가 필요할 때

## When NOT to use

- 시세, 실거래가, 매매가, 호가 → 다른 데이터 소스 필요
- 공동주택가격, 표준지공시지가, 단독주택가격 → 별도 스킬
- 토지이용계획 → eum.go.kr 별도 스킬

## Prerequisites

- 인터넷 연결
- `curl` (또는 HTTP 호출 도구)

사용자에게 필요한 시크릿 없음 (공개 데이터).

## Default path

`gongsijiga-search` npm 패키지를 직접 호출한다. realtyprice.kr는 API 키가 필요 없는 공개 엔드포인트이므로 `k-skill-proxy`를 경유하지 않는다.

설치:

```bash
npm install gongsijiga-search
```

호출:

```bash
node -e "
const { lookupGongsijiga } = require('gongsijiga-search');
lookupGongsijiga('서울 강남구 역삼동 736').then(console.log).catch(console.error);
"
```

## Workflow

### 1. 사용자 입력 수집

사용자에게 **시도 + 시군구 + 읍면동 + 지번**이 포함된 주소를 요청한다.

- 최소 필수: 시도, 시군구, 읍면동, 본번
  - **세종특별자치시**는 시군구가 없으므로 "세종 [읍면동] [지번]" 형식
- 산 지번이면 "산" 키워드 포함
- 부번이 있으면 "100-5" 형식

예시: "서울 강남구 역삼동 736", "전남 무안군 청계면 청천리 산 1-2", "세종 고용동 100"

시도가 누락된 주소(예: "역삼동 736")는 조회 불가 — 시도를 물어본다.

### 2. 직접 호출

`gongsijiga-search` 모듈을 사용해 realtyprice.kr를 직접 호출한다 (API 키 불필요, 프록시 경유 안 함):

```javascript
const { lookupGongsijiga } = require('gongsijiga-search');

const result = await lookupGongsijiga('서울 강남구 역삼동 736');
```

### 3. 응답 해석 및 출력

성공 응답 예시:

```json
{
  "address": "서울 강남구 역삼동 736",
  "jibun": "736번지",
  "san": false,
  "latest": {
    "year": 2026,
    "price_per_sqm": 72340000,
    "notice_date": "2026-04-30",
    "base_date": "2026-01-01"
  },
  "history": [...],
  "yoy_change_pct": 5.45,
  "source_url": "https://www.realtyprice.kr/notice/gsindividual/search.htm"
}
```

**출력 규칙:**

1. 반드시 "공시지가" 단어 사용. "가격/시세/매매가" 단어 금지.
2. 헤더: `[정부 공시] 개별공시지가 — {address}`
3. 최신값: `{year}년 공시지가: {price_per_sqm:,}원/㎡ (전년 대비 +{yoy_change_pct}%)`
4. 추이 표 (history 배열을 연도순 테이블로):

| 연도 | 공시지가 (원/㎡) | 공시일 |
|------|-----------------|--------|
| 2026 | 72,340,000 | 2026-04-30 |
| ... | ... | ... |

5. 마지막 줄 disclaimer:
   `본 단가는 세금 산정용 정부 공시 가격으로, 시세나 실거래가와 다릅니다.`

### 4. 올해 미발표 안내

`latest.year`가 올해보다 작으면: "올해 공시지가는 아직 미발표 상태입니다. 최신 데이터는 {latest.year}년 기준입니다." 안내.

## Failure modes

| error.code | 의미 | 행동 |
|---|---|---|
| `ADDRESS_PARSE_FAILED` | 주소 파싱 실패 | "행정구역 + 본번까지 포함된 주소가 필요합니다" + 예시 |
| `INVALID_BUNJI` | 본번 형식 오류 | 본번 입력 형식 재요청 |
| `REGION_NOT_FOUND` | 행정구역 매칭 실패 | candidates 배열이 있으면 제안, 없으면 오타 확인 요청 |
| `LAND_NOT_FOUND` | 해당 지번 미등재 | "본번/부번 오타이거나 도로/하천 등 미과세 토지" 설명 |
| `UPSTREAM_ERROR` | realtyprice.kr 장애 | "데이터 출처 일시 장애. 잠시 후 재시도" + source_url |
| `UPSTREAM_TIMEOUT` | 30초 초과 | UPSTREAM_ERROR와 동일 |

## Notes

- 공시지가 ≠ 시세. 시세는 통상 공시지가의 1.5~3배.
- 매년 1월 1일 기준, 4~5월 발표. 1~4월은 전년도가 최신.
- realtyprice.kr는 API 키 불필요 (공개 데이터).
