본문바로가기

LOCALDATA

  • 데이터받기
    • 데이터다운로드
    • OPEN API(변동분)
    • 데이터활용문의
  • 데이터찾기
    • 그룹별업종조회
    • 업종전체보기
  • 생활편의정보
    • 무인민원발급기정보
    • 모범음식점정보
    • 생활밀착데이터
  • 데이터활용안내
    • 인허가데이터소개
    • 생활편의정보안내
    • 데이터활용가이드
  • 데이터다운로드
  • OPEN API(변동분)
  • 데이터활용문의
  • 그룹별업종조회
  • 업종전체보기
  • 무인민원발급기정보
  • 모범음식점정보
  • 생활밀착데이터
  • 인허가데이터소개
  • 생활편의정보안내
  • 데이터활용가이드
OPEN API(변동분) 이용가이드
API KEY 조회 OPEN API 신청
자료제공방식

OPEN API는 변동분 자료만 호출 가능하며, 전체 자료는 데이터 다운로드페이지를 이용바랍니다. (예시 : 6월기준)

데이터 제공방식

OPEN API는 변동분 자료만 호출 가능하며, 전체자료는 데이터 다운로드페이지를 이용바랍니다. OPEN API(변동분) 데이터는 전월 24일부터 D-2일까지의 데이터를 제공하므로 데이터 다운로드페이지를 통하여 전체 자료를 다운로드 후 변동분 데이터와 합쳐서 사용하시기 바랍니다. 6월기준 예시의 경우, 최초인허가일부터 5월 31일까지의 기초자료는 다운로드기능을 통해 받으신 후, 6월 일일변동분은 OPEN API를 통해 받으실 수 있습니다.

OPEN API 요청주소 (Request URL)

http://www.localdata.go.kr/platform/rest/API유형코드/openDataApi?

요청변수 설명
요청변수에 대한 표로 변수명, 변수타입, 설명, 필수여부 정보를 제공합니다.
변수명 변수타입 설명 필수여부
authKey String 인증키 필수
localCode String 개방자치단체코드(신고지역)
bgnYmd String 인허가일자기준 검색 시작일자(YYYYMMDD)
endYmd String 인허가일자기준 검색 종료일자(YYYYMMDD)
lastModTsBgn String 데이터갱신일자기준 검색 시작일자(YYYYMMDD)
lastModTsEnd String 데이터갱신일자기준 검색 종료일자(YYYYMMDD)
state String 운영상태코드 - 01: 영업/정상, 02:휴업, 03: 폐업, 04: 취소/말소/만료/정지/중지
pageIndex String 페이지 번호
pageSize String 페이지당 출력 갯수 (def. 10)
resultFileYn String 파일 처리 여부 : y,n
resultType String 출력형식 : xml,json (파일:xls,xlsx,csv)(def. xml)
opnSvcId String 개방서비스ID

중요포인트이미지API 호출 시 lastModTsBgn,lastModTsEnd 요청 변수를 입력하지 않는 경우 기본 값에 대한 변동분만 호출됩니다.(기본값: 2일전)

중요포인트이미지데이터 갱신주기는 월요일~토요일 저녁 19시부터 수행됩니다.(종료시간은 데이터양에 따라 달라질 수 있으며, 익일 갱신작업 수행 전까지 해당 자료가 유지됩니다.)

응답변수 설명
응답변수에 대한 표로 변수명, 변수타입, 설명, 필수여부 정보를 제공합니다.
변수명 변수타입 설명 필수여부
rowNum Number 번호
opnSfTeamCode String 개방자치단체코드 필수
mgtNo String 관리번호 필수
opnSvcId String 개방서비스ID 필수
updateGbn String 데이터갱신구분
updateDt String 데이터갱신일자
opnSvcNm String 개방서비스명
bplcNm String 사업장명
sitePostNo String 지번우편번호
siteWhlAddr String 지번주소
rdnPostNo String 도로명우편번호
rdnWhlAddr String 도로명주소
siteArea String 소재지면적
apvPermYmd String 인허가일자
apvCancelYmd String 인허가취소일자
dcbYmd String 폐업일자
clgStdt String 휴업시작일자
clgEnddt String 휴업종료일자
ropnYmd String 재개업일자
trdStateGbn String 영업상태코드
trdStateNm String 영업상태명
dtlStateGbn String 상세영업상태코드
dtlStateNm String 상세영업상태명
x String 좌표정보(X)
y String 좌표정보(Y)
lastModTs String 최종수정일자
uptaeNm String 업태구분명
siteTel String 전화번호
오류코드 설명
오류코드에 대한 표로 오류코드, 설명, 조치방법 정보를 제공합니다.
오류코드 설명 조치방법
001 서비스 ID 값이 정의되지 않았습니다. 서비스 ID 값을 확인바랍니다.(개편 전 API 신청자에 한정)
002 서비스 ID 값이 유효하지 않습니다. 서비스 ID 값을 확인바랍니다.(개편 전 API 신청자에 한정)
003 검색 일자가 누락되었습니다. 검색 일자를 확인바랍니다.
004 검색 시작일자가 누락되었습니다. 검색 시작일자를 입력바랍니다.(시작일자와 종료일자는 동시 입력바랍니다.)
005 검색 종료일자가 누락되었습니다. 검색 종료일자를 입력바랍니다.(시작일자와 종료일자는 동시 입력바랍니다.)
006 검색일자 형식 오류입니다. 일자조회 시 YYYYMMDD 형식으로 입력바랍니다. (예:20150301)
007 검색 일자 오류입니다. 검색 시작일자가 검색 종료일자보다 큽니다. 검색 일자 범위를 확인 바랍니다.
008 검색 조건으로 음의 값을 사용할 수 없는 숫자가 지정되었습니다. 양의 값의 숫자로 입력바랍니다.
009 숫자 형식 오류입니다. 숫자 형식에 맞게 입력바랍니다.
010 결과 형태가 유효하지 않습니다. 결과 형태를 확인바랍니다.(resultType : (def)xml, json / 파일로 받을 시- xlsx, xls, csv )
011 영업 상태코드가 유효하지 않습니다. state변수에 들어갈 수 있는 값은 01,02,03,04 입니다.(01: 영업/정상, 02:휴업, 03: 폐업, 04: 취소/말소/만료/정지/중지)
015 전 월의 24일 이후만 가능합니다. lastModTsBgn값을 확인 바랍니다.
016 현재일 이전만 가능합니다. endYmd 또는 lastModTsEnd 값을 확인 바랍니다.
98 오픈API 요청 데이터건수가 개발용-500건/운영용-10,000건을 초과하였습니다. state, pageSize, pageIndex 요청값을 추가하여 조회하시기 바랍니다.(pageSize 개발용 최대 - 500/ 운영용 최대 - 10,000)
99 오픈API 호출간격이 짧습니다 잠시 후 다시 시도해 주시기 바랍니다.
801 파일다운로드 오류 잠시 후 다시 시도 바랍니다.
902 해당 OPENAPI의 서비스 권한이 존재하지 않습니다. API유형코드 및 인증키를 확인바랍니다.
999 알 수 없는 시스템 오류가 발생하였습니다. 관리자에게 문의 바랍니다.

예제 소스

예제소스 다운로드

/*
파일명 : apiSample.jsp
내용 : Java Controller를 이용하여 API 호출(검색 결과 XML 형식)
*/

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>API 호출 예제 소스</title>
<script src="/js/jquery-1.11.0.js" ></script>

<script>
function getData(){
      $.ajax({
        url : "/getApiCall.do",
        type: "POST",
        data:$("#form").serialize(),
        dataType:"xml",
        success:function(resultData){
            $("#list").html("");
            var resultCode = $(resultData).find("code").text();
            var resultMessage = $(resultData).find("message").text();
            if(resultCode != "00"){
              alert("에러발생");
            }else{
            if(resultData !=null){
              dataList(resultData);
            }
          }
        }
        ,error : function(xhr,status, error){
          alert("에러발생");
        }
      });
}

function dataList(resultData){
      var items ="";
      items +="<table><thead><tr><th>번호</th><th>자치단체코드(신고지역)</th><th>인허가번호</th><th>서비스ID</th></tr></thead><tbody>";
      $(resultData).find("row").each(function(){
        //API 신청 시 선택한 제공항목 입력
        items +="<tr>";
        items +="<td>" + $(this).find('rowNum').text()+"</td>";
        items +="<td>" + $(this).find('opnSfTeamCode').text()+"</td>";
        items +="<td>" + $(this).find('mgtNo').text()+"</td>";
        items +="<td>" + $(this).find('opnSvcId').text()+"</td>";
        items +="</tr>";
      });
        items += "</tbody></table>";
        $("#list").html(items);
      }
</script>

</head>
<body>
<form name="form" id="form" method="post">
<input type="text" name="localcode" id="localcode" value=""/><!-- 요청 변수 설정(조회 지역코드-가이드 참조) -->
<input type="text" name="bgnYmd" id="bgnYmd" value=""/><!-- 요청 변수 설정(시작날짜(YYYYMMDD 형식)) -->
<input type="text" name="endYmd" id="endYmd" value=""/><!-- 요청 변수 설정(종료날짜(YYYYMMDD 형식)) -->
<input type="button" onClick="getData();" value="API호출하기" />
</form>
<div id="list"></div><!-- 조회 결과 -->
</body>
</html>



/*
파일명 : apiSampleController.java
내용 : Java Controller를 이용하여 API 호출(검색 결과 XML 형식)
*/

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class apiSampleController {

@RequestMapping(value="/getApiCall.do", method={RequestMethod.POST,RequestMethod.GET})
public void getSampleApi(HttpServletRequest req, ModelMap model, HttpServletResponse response) throws Exception{

// API 신청 시 발급받은 인증키 설정
String AUTH_KEY = "신청 API 인증키";

// API 호출 시 조회 할 변수 설정 - 요청 변수 참조(jsp화면에서 입력 받은 값 셋팅)
String localcode = req.getParameter("localcode");
String bgnYmd = req.getParameter("bgnYmd");
String endYmd = req.getParameter("endYmd");

// 발급받은 API 유형(통합(TO0),그룹(GR0))
String apiurl = "http://www.localdata.go.kr/platform/rest/인증키유형/openDataApi?authKey="+AUTH_KEY;

//조건 설정에 따른 URL변경
if(localcode !=null){
    apiurl += "&localCode="+localcode;
}
if(bgnYmd !=null && endYmd !=null){
    apiurl +="&bgnYmd="+bgnYmd +"&endYmd="+endYmd;
}

URL url = new URL(apiurl );
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8"));

StringBuffer sb = new StringBuffer();
String tempStr = null;
while(true){
    tempStr = br.readLine();
   if(tempStr == null) break;
       sb.append(tempStr);
    }
    br.close();
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/xml");
    response.getWriter().write(sb.toString());
    }
}

라이브러리 다운로드

/*
파일명 : test.java
내용 :localdataApiClient.jar 사용하여 API 호출
수정된 버전에 따라 파일명이 상이 할 수 있습니다.(라이브러리 다운로드를 이용하여 최신 라이브러리를 받아주시기 바랍니다.) */

// 호출을 위한 필수 import
import kr.go.localdata.client.DatasReceive;
import kr.go.localdata.client.ReceiveLocalDatas;

public class test {

  public static void main(String[] args) {
   test t = new test();
   try {
     t.getData();
   }catch(Exception e){
     e.printStackTrace();
   }
  }

  public void getData() {
// 1.ReceiveLocalDatas 객체 생성
   ReceiveLocalDatas dr = new ReceiveLocalDatas();
// 2. 파라미터 설정 (auth_key - 인증키, api_type - API유형, resultType - 결과형태, lastModTsBgn - 최종수정일자(시작일), lastModTsEnd - 최종수정일자(종료일), pageIndex - 페이지 번호 , pageSize - 페이지당 출력 개수)
// 파라미터에 대한 상세 정보는 라이브러리다운 시 함께 제공되는 가이드 참조

String auth_key = "신청 API 인증키";
String api_type = "신청 API 유형";

//결과형태 설정 - XML / JSON
String resultType = "XML";

//receiveOpenMonthDatas() 호출 시 날짜 파라미터(YYYYMMDD 형식으로 입력)
String lastModTsBgn = "검색 시작일자 (YYYYMMDD)";
String lastModTsEnd = "검색 종료일자 (YYYYMMDD)";
//호출 시 페이지 관련 변수( 1이상의 자연수로 입력 )
int pageIndex = 1;
int pageSize = 20;

   try {
     //receiveTotalCnt() - 제공 받을 데이터 총건수를 가져오는 메소드(M-receiveOpenMonthDatas 호출 시 사용, D-receiveOpenDayDatas 호출 시 사용)
     DatasReceive totalcnt = dr.receiveTotalCnt(api_type,auth_key,"M",lastModTsBgn,lastModTsEnd);
     int totalCnt = totalcnt.getReqTotalCnt();      if(totalCnt == -1 ){
       //서버 응답 확인
       System.out.println("Response code : "+totalcnt.getResultCode());
       System.out.println("Response Msg : "+totalcnt.getMsg());
     }else{
       //pageIndex 값을 1씩 늘려가면서 반복 호출 하기 위한 변수
       int forNum = (int)Math.ceil((double)totalCnt/pageSize);
       for(pageIndex = 1; pageIndex < forNum+1; pageIndex++){
         //receiveOpenDayDatas() - 전일 변동분의 자료를 가져오는 메소드
         //DatasReceive rld = dr.receiveOpenDayDatas(api_type,auth_key,resultType,pageIndex,pageSize);

         //receiveOpenMonthDatas() - 현재 월 변동분의 자료를 가져오는 메소드 : 검색가능 날짜범위 - 전월 24일~ 현재 일자 2일전까지
         DatasReceive rld = dr.receiveOpenMonthDatas(api_type,auth_key,resultType,lastModTsBgn,lastModTsEnd,pageIndex,pageSize);

         if(rld.getResult() != 0){

           if(rld.getResult() == -1){
           System.out.println("### 서버 접속 실패 : 잠시 후 다시 이용바랍니다.");
           }

           //오류 결과 확인
           System.out.println("Response code : "+rld.getResultCode());
           System.out.println("Response Msg : "+rld.getMsg());
         }

         //서버 응답 확인
         System.out.println("Response code : "+rld.getResultCode());
         System.out.println("Response Msg : "+rld.getMsg());

         //결과 확인
         System.out.println("Response ResultData : "+rld.getResultData());
       }
     }
   }catch(Exception e){
     e.printStackTrace();
   }
  }

}

관련사이트

행정안전부
문의 : 02-2195-1080 (월~금 09:00 ~ 18:00, 공휴일 제외)
한국지역정보개발원