세로형
Recent Posts
Recent Comments
Link
01-11 02:48
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

한국은행 ECOS Open API 사용 방법과 Python API 활용 예제 본문

python

한국은행 ECOS Open API 사용 방법과 Python API 활용 예제

이수진의 블로그 2025. 7. 14. 14:25
반응형
728x170

포스팅 개요

이번 포스팅은 한국은행에서 제공해주는 ECOS API 사용 방법과 Python 활용 방법에 대해서 정리합니다.

한국은행 경제통계시스템(ECOS)에 대해서 알아보고, 어떻게 API를 제공해주고 있는 지, 그리고 Python으로 API 호출을 하는 방법에 대해 알아보겠습니다. 

 

제가 참고한 사이트는 다음과 같습니다.

- https://ecos.bok.or.kr/api/#/

 

한국은행 Open API 서비스

 

ecos.bok.or.kr

 


포스팅 본문

한국은행 경제통계시스템(ECOS)란?

 

한국은행 경제통계시스템(ECOS)는 한국은행에서 생산하는 다양한 경제 통계 자료를 검색하고 활용할 수 있는 시스템입니다. 통화, 환율, 유동성 지표, 물가, 금리, 국제수지 등 다양한 분야의 경제 지표를 제공합니다.

무엇보다, 이를 API로 제공하여 편리하게 활용할 수 있구습니다. API 인증키만 발급 받아서 간단하게 사용할 수 있죠!

비록 ECOS API를 제공해주지만, 사실 생각보다 조금 불편한 점이 있습니다. 너무 많은 데이터를 제공해주다보니 지표가 너무 많아 검색하기 불편하더라구요. 그래서 그 방법을 정리해보고 Python으로 연동하는 방법을 정리하겠습니다.


한국은행 경제통계시스템 API 사용 방법

한국은행 ECOS API를 사용하기 위해서는 먼저 '통계표코드'를 알아야 합니다. 이 통계표코드는 한국은행 ECOS 홈페이지에서 '개발가이드' --> 통계코드검색 메뉴에서 확인할 수 있는데요. 아래와 같은 화면을 확인할 수 있습니다.

 

이와 같이 구성되어 있는 화면에서 검색을 통해 우리가 원하는 코드 값을 찾아내야 합니다.

저는 개인적으로 이게 너무 불편했습니다 ㅠ 리스트는 많은데, 리스트가 출력되는 영역의 화면은 너무 작더라구요.

(나중에 엑셀로 전체 다운로드 받을 수 있으면 좋겠네요. 아니면 있는 데, 제가 못찾은 것일수도 있습니다.)

(참고: 오른쪽에 통계항목 코드는 해당 통계표의 세부 항목만 다운로드 됩니다.)

 

만약, 환율을 알고 싶다면 환율을 검색한 뒤 해당 항목을 클릭하면 세부 코드값이 나옵니다.

여기서 주요국 통화의 대원화환율 "[731Y001][D]"와 원/미국달러 "[0000001][원]" 정보를 놓쳐서는 안됩니다.

  • 731Y001: 이 값이 통계표코드 값이며, 각 지표의 unique 값이라고 보면 됩니다.
  • D : 주기 정보입니다. 지표마다 A(년), S(반년), Q(분기), M(월), SM(반월), D(일)가 있습니다. 이 주기 정보에 맞춰서 나중에 날짜 검색 정보도 바뀌어야 합니다. 
  • 0000001: 세부통계항목코드로서 API 호출 시 해당 값을 넣어 세부 정보를 함께 제공합니다. 세부 통계값을 넣지 않으면, 통계표코드에서 제공하는 모든 데이터를 받아오게 됩니다. 즉, 환율의 경우 제공하는 모든 나라의 값을 다 받아오게 됩니다.
  • [원]: 단위입니다.

 

조금 더 상세한 예제를 위해서 '개발가이드' --> '개발 명세서' 메뉴로 들어갑니다. 이 메뉴에서는 API가 잘 동작되는 지 테스트 해볼 수 있습니다.

 

 

여기서 "통계 조회 조건 설정" 서브 메뉴를 들어가면 위 사진이 나오는데요. 조금 더 세분화 된 설명이 여기 나와있습니다.

통계표코드와 주기, 주기에 따른 검색시작일자, 종료일자가 나와있습니다.

만약, 수집하려는 데이터의 주기가 Q(분기)이면 시작 및 검색 종료일자에는 "2020Q1"과 같은 형태로 데이터를 전달해야 합니다.

수집하려는 데이터가 D(일)이라면 검색시작일자 및 종료일자에는 20200110, 20200120과 같은 형태로 데이터를 전달해야 하죠.

 

샘플 테스트에서 실제로 동작시켜 볼 수도 있습니다.

통계표 코드에 환율에 해당되는 코드인 "731Y001"을 넣고, "731Y001" 코드는 주기를 D만 제공하므로, 주기 값엔 D를, 그리고 날짜는 일단위이므로 20200110과 같이 '일'까지 포함된 값을 제공합니다.

또한, 통계항목코드1에는 0000001, 0000002와 같은 값을 넣어 달러와 엔화 값만 가져올 수 있도록 해두었습니다. 그 결과는 아래 사진과 같습니다.

 

 

그리고 결과를 JSON으로도 받아볼 수 있습니다.

요청 유형에 xml이 아닌 json으로 넣으면 json 결과를 받을 수 있습니다.

 

자, 그럼 이제 실제 Python 예제 코드로 넘어가보겠습니다.

Python 예제

Python 코드를 구성할 때는 위에 나와있는 url 형태로 request를 제공하면 됩니다.

단, 이때 여러분들의 API KEY 값을 잘 넣어주는 게 중요합니다.

API 결과는 아래와 같은 url을 띄고 있는데요.

https://ecos.bok.or.kr/api/StatisticSearch/sample/xml/kr/1/10/731Y001/D/20200110/20200114/0000001/?/?/?

 

이때, sample에 여러분들의 API 키 값을 넣으면 됩니다.

따라서, Python 코드는 아래와 같이 될 것입니다.

import requests

# URL 설정
url = "https://ecos.bok.or.kr/api/StatisticSearch/{YOUR_KEY}/json/kr/1/10/731Y001/D/20200110/20200120/0000002/?/?/?"

# GET 요청
response = requests.get(url)

# JSON 응답 확인
if response.status_code == 200:
    data = response.json()
    # print 전체 JSON
    print(data)
    
    # 필요한 데이터만 추출
    try:
        rows = data['StatisticSearch']['row']
        for item in rows:
            time = item['TIME']
            value = item['DATA_VALUE']
            print(f"날짜: {time}, 데이터값: {value}")
    except KeyError:
        print("예상과 다른 JSON 구조입니다.")
else:
    print(f"API 요청 실패: {response.status_code}")

 

 

결과가 잘 나오는 것을 확인할 수 있습니다.


마무리

이번 포스팅은 한국은행 ECOS Open API 서비스에 대해서 알아보고 Python으로 API 호출하는 방법에 대해서 알아보았습니다.

도움이 되시길 바랍니다.

 

반응형
그리드형
Comments