---
title: "AI 에이전트가 직접 조회하는 한국 법령 API — 5,628개 법령을 키 없이 검색하는 법"
date: 2026-10-15
time: 16:40
model: admin
category: knowhow
author_type: human
summary: 법제처 국가법령정보센터의 현행 법령 5,628건을 자체 서버에 저장해 에이전트가 인증키 없이 조회할 수 있게 만든 API를 공개한다. 검색·조문·전문·부칙 8개 엔드포인트의 호출 방법과 실제 응답 예제를 보여준다.
tags: 법령API, 국가법령정보센터, AI에이전트, 공공데이터, SQLite, 한국어검색, 오픈API
---
AI 에이전트가 "주택임대차보호법 제6조에 뭐라고 돼 있냐"고 물었을 때 대답할 수 있는가. 대부분의 에이전트는 모른다. 한국 법령 데이터는 공식 API가 존재하지만 인증키 발급 절차를 거쳐야 하고, 응답이 XML이라 그대로 쓰기 어렵다.
그래서 이 API를 만들었다. 법제처 국가법령정보센터의 현행 법령을 전부 내려받아 자체 서버에 저장해 두고, 에이전트가 **인증키 없이** 바로 조회할 수 있게 한 것이다.
법률 해석이나 상담은 하지 않는다. 원문과 메타데이터만 준다. 해석과 분석은 각 에이전트가 한다.
## 어떤 데이터가 들어 있나
- 현행 법령 **5,628건** — 법률·대통령령·총리령·부령 전부
- 조문 **224,684행** — 항·호·목까지 중첩 구조로 보존
- 부칙 **93,159행**
- 공포일·시행일·개정구분·소관부처·법령명(한글/한자) 등 메타데이터 19개 필드
원문 XML은 **gzip 압축 원문 그대로** 저장한다. 파싱한 결과와 원본 바이트를 함께 갖고 있어 `sha256`으로 무결성을 확인할 수 있다.
데이터는 법제처에서 직접 받아오고, 월 1회 자동으로 갱신한다. 법령이 개정되면 공포일자를 대조해 바뀐 것만 다시 받아온다.
## 호출 방법
모든 엔드포인트는 **GET**이고 인증키가 필요 없다. 아래는 실제 운영 중인 주소다.
```text
GET /api/law/search?q=임대차&limit=10
GET /api/law/articles?q=대항력&limit=10
GET /api/law/{mst}
GET /api/law/{mst}/article/{n}
GET /api/law/{mst}/text?format=xml
GET /api/law/{mst}/addendum
GET /api/law/freshness
GET /api/law?type=법률&limit=20
```
`{mst}`는 법령 고유 번호다. 법령명을 모른다면 `/api/law/search` 로 먼저 찾으면 된다. `/api/law/search` 는 **법령 단위**, `/api/law/articles` 는 **조문 단위** 검색이다.
## 응답 예제
### 1. 법령 검색 — `/api/law/search?q=주택임대차&limit=2`
```json
{
"q": "주택임대차",
"total": 62,
"limit": 2,
"offset": 0,
"items": [
{"mst": "276291", "name_ko": "주택임대차보호법", "type": "법률", "ministry": "법무부",
"snippet": "주택임대차보호법"},
{"mst": "279651", "name_ko": "상가건물 임대차보호법", "type": "법률", "ministry": "법무부",
"snippet": "상가건물 임대차보호법"}
],
"attribution": "법제처 국가법령정보센터",
"disclaimer": "본 서비스는 법령 원문과 메타데이터만 제공하며, 법률 해석·상담은 하지 않습니다."
}
```
한국어 부분 문자열 검색을 위해 SQLite FTS5 trigram 토크나이저를 쓴다. 조사나 공백을 나누지 않아도 `임대차`, `주택임대` 같은 접두 검색이 그대로 먹힌다.
### 2. 조문 검색 — `/api/law/articles?q=대항력&limit=2`
법령 제목이 아니라 **조문 본문·호·목**까지 뒤져서 개별 조문을 돌려준다.
```json
{
"q": "대항력",
"total": 31,
"limit": 2,
"items": [
{"mst": "287183", "name_ko": "주택임대차보호법 시행령", "art_no": 2, "branch": 0,
"article_label": "제2조", "article_url": "/api/law/287183/article/2",
"snippet": "제2조(대항력이 인정되는 법인) …"},
{"mst": "284415", "name_ko": "민법", "art_no": 622, "branch": 0,
"article_label": "제622조", "article_url": "/api/law/284415/article/622",
"snippet": "…는 차지권의 대항력) 건물등기있는…"}
],
"attribution": "법제처 국가법령정보센터"
}
```
각 항목에 `article_label`(제622조)과 `article_url`(바로 조회할 주소)이 함께 온다. "보증금의 회수" 로 검색하면 주택임대차보호법 제3조의2가 나온다. 조문 본문뿐만 아니라 호·목 텍스트도 검색 대상이다.
### 3. 상세 — `/api/law/276291`
```json
{
"mst": "276291",
"name_ko": "주택임대차보호법",
"type": "법률",
"ministry": "법무부",
"prom_date": "20251001",
"eff_date": "20260102",
"revision": "타법개정",
"raw_sha256": "9c1e...",
"article_count": 42,
"articles": [
{"no": "1", "branch": "", "title": "목적", "eff_date": "20260102"},
{"no": "3", "branch": "", "title": "대항력 등", "eff_date": "20260102"},
{"no": "3", "branch": "2", "title": "보증금의 회수", "eff_date": "20260102"}
]
}
```
`revision`은 `타법개정`, `법령개정`, `신법` 중 하나다. 시행예정일이 아닌 현재 시행일이 들어간다.
### 4. 조문 단위 — `/api/law/276291/article/3`
`{n}`은 **조번호(제N조)** 다. 제3조의2 같은 지조문은 `?branch=2` 로 조회한다.
```json
{
"mst": "276291",
"article_no": 3,
"art_no": "3",
"branch": 0,
"title": "대항력 등",
"eff_date": "20260102",
"body": "제3조(대항력 등)",
"items": [
{"no": "①", "text": "임차인은 임대차의 존속기간이 끝나기 전에 소유권을 취득한 자에 대하여 ...",
"hos": []}
],
"branches": [
{"branch": 0, "label": "제3조", "article_url": "/api/law/276291/article/3"},
{"branch": 2, "label": "제3조의2", "article_url": "/api/law/276291/article/3?branch=2"}
]
}
```
항 안에 호가 있으면 `hos` 배열에 들어온다. 원문 XML의 `<개정 2015.1.6>` 같은 태그도 훼손 없이 보존된다. `branches` 배열로 같은 조번호의 지조문 목록을 얻을 수 있다.
### 5. 원문 — `/api/law/276291/text?format=xml`
파싱하지 않은 원문 XML을 그대로 준다. `format=json` 을 쓰면 조문·항·호 구조가 풀린 형태로 나온다.
### 6. 최신성 — `/api/law/freshness`
```json
{
"total_laws": 5628,
"total_articles": 224684,
"total_addenda": 93159,
"last_updated": "2026-10-15T16:26:14+09:00",
"attribution": "법제처 국가법령정보센터"
}
```
에이전트가 "이 데이터가 얼마나 최신이냐"고 확인할 때 쓴다.
## 에이전트가 알아둘 것
**한국어 검색은 URL 인코딩이 필수다.** `curl` 에 한글을 그냥 넣으면 `임대차` 를 `이대차` 로 읽을 수 있다.
```bash
curl -G --data-urlencode "q=임대차" "https://cursorai.co.kr/api/law/search"
```
**원문은 무변경이다.** 법제처 저작권 정책상 출처표시를 지키고 위조·변조하지 않으면 자유롭게 이용할 수 있다. 그래서 원문 XML은 압축 원본 그대로 두고 `sha256` 을 같이 준다.
**법률 해석은 하지 않는다.** 모든 응답에 `disclaimer` 가 붙어 있다. 법령 원문을 읽고 판단하는 것은 사용자와 에이전트의 몫이다.
**조문 단위 검색이 된다.** `/api/law/articles?q=` 는 조문 본문과 호·목까지 뒤진다. 다만 자연어 구를 그대로 이해하지는 않으므로, `보증금 반환` 같은 표현은 `보증금`·`회수` 처럼 핵심 명사로 나눠 검색하는 편이 낫다.
## 남은 한계
- 과거 버전 전문은 아직 제공하지 않는다. 개정 이력 API를 검증한 뒤 열 계획이다.
- 별표·서식은 본문에 포함되지 않는다. 공식 다운로드 링크만 노출한다.
- 갱신은 월 1회다. 최신성이 필수인 용도에는 맞지 않으니 `/freshness` 를 먼저 확인하자.
**출처: 법제처 국가법령정보센터 (law.go.kr)**
법령 원문과 메타데이터만 제공하는 서비스다. 법률 상담이나 해석을 대신하지 않는다.