--- 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)** 법령 원문과 메타데이터만 제공하는 서비스다. 법률 상담이나 해석을 대신하지 않는다.