티스토리 뷰

API

실시간 환율 조회 API 연계

열코 2026. 5. 20. 18:40
반응형

한국수출입은행에서 제공하는 환율 OpenAPI는 실시간에 가까운 주요 국가 환율 정보를 제공하는 공공 API입니다.

특히 아래와 같은 서비스에서 많이 사용됩니다.

  • 해외 결제 서비스
  • 쇼핑몰 환율 계산
  • ERP 환율 자동화
  • 무역 시스템
  • 금융 플랫폼
  • 해외 송금 시스템
  • 환율 알림 서비스
  • 투자 플랫폼

API 제공기관은 한국수출입은행 입니다.

공식 OpenAPI 안내 페이지: 한국수출입은행 OpenAPI 안내

공공데이터포털: 한국수출입은행 환율 정보 API


1. API 개요

제공 기능

현재 환율 정보를 조회할 수 있습니다.

지원 예시:

  • USD/KRW
  • JPY/KRW
  • EUR/KRW
  • CNY/KRW
  • GBP/KRW

등 주요 국가 환율 제공


2. API 신청 방법

2-1. OpenAPI 페이지 접속

한국수출입은행 OpenAPI 페이지


2-2. 인증키 발급

절차:

  1. OpenAPI 인증키 신청
  2. 개인정보 동의
  3. 이메일 인증
  4. 인증키 발급 완료

2-3. 호출 제한

일일 호출 제한 1000회
데이터 갱신 영업일 오전 11시 전후
인증키 유효기간 2년

한국수출입은행 공식 안내 기준입니다.


3. API 기본 정보

방식 REST GET
응답형식 JSON
인증방식 authkey
현재 도메인 oapi.koreaexim.go.kr
이전 도메인 www.koreaexim.go.kr
데이터 유형 코드 AP01

2025년부터 신규 도메인 사용이 권장됩니다.


4. Request URL

최신 권장 URL

https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON

구버전 URL

https://www.koreaexim.go.kr/site/program/financial/exchangeJSON

구버전은 점진적으로 종료 예정입니다.


5. 전체 요청 예시

https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON
?authkey=발급인증키
&searchdate=20260514
&data=AP01

6. Request Parameter 상세 설명

authkey String 필수 발급받은 인증키 xxxxxxxxx
searchdate String(8) 필수 조회 날짜(YYYYMMDD) 20260514
data String 필수 API 타입 코드 AP01

7. Parameter 상세 분석

7-1. authkey

한국수출입은행에서 발급받은 인증키

예시:

1234567890abcdef

7-2. searchdate

조회 날짜

형식:

YYYYMMDD

예시:

값의미

20260514 2026년 5월 14일
20260101 2026년 1월 1일

7-3. data

현재는 대부분 아래 값 사용

값의미

AP01 현재환율

8. Java 연계 예제

8-1. HttpURLConnection 방식

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class ExchangeRateApiExample {

    public static void main(String[] args) throws Exception {

        String authKey = "발급받은인증키";

        String apiUrl =
                "https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON"
                + "?authkey=" + authKey
                + "&searchdate=20260514"
                + "&data=AP01";

        URL url = new URL(apiUrl);

        HttpURLConnection conn =
                (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("GET");
        conn.setRequestProperty(
                "Content-Type",
                "application/json"
        );

        int responseCode = conn.getResponseCode();

        System.out.println("응답코드 : " + responseCode);

        BufferedReader br =
                new BufferedReader(
                        new InputStreamReader(
                                conn.getInputStream()
                        )
                );

        StringBuilder sb = new StringBuilder();

        String line;

        while((line = br.readLine()) != null) {
            sb.append(line);
        }

        br.close();
        conn.disconnect();

        System.out.println(sb.toString());
    }
}

9. Java Jackson JSON Parsing 예제

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class ExchangeJsonParsing {

    public static void main(String[] args) throws Exception {

        String apiUrl =
                "https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON"
                + "?authkey=인증키"
                + "&searchdate=20260514"
                + "&data=AP01";

        URL url = new URL(apiUrl);

        HttpURLConnection conn =
                (HttpURLConnection) url.openConnection();

        BufferedReader br =
                new BufferedReader(
                        new InputStreamReader(
                                conn.getInputStream()
                        )
                );

        StringBuilder sb = new StringBuilder();

        String line;

        while((line = br.readLine()) != null) {
            sb.append(line);
        }

        br.close();

        ObjectMapper mapper = new ObjectMapper();

        JsonNode root = mapper.readTree(sb.toString());

        for(JsonNode node : root) {

            String currency =
                    node.get("cur_unit").asText();

            String rate =
                    node.get("deal_bas_r").asText();

            System.out.println(currency + " : " + rate);
        }
    }
}

반응형

10. Python 연계 예제

10-1. requests 사용

import requests

API_KEY = "발급받은인증키"

url = "https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON"

params = {
    "authkey": API_KEY,
    "searchdate": "20260514",
    "data": "AP01"
}

response = requests.get(url, params=params)

print(response.status_code)
print(response.text)

11. Python JSON Parsing 예제

import requests

API_KEY = "발급받은인증키"

url = "https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON"

params = {
    "authkey": API_KEY,
    "searchdate": "20260514",
    "data": "AP01"
}

response = requests.get(url, params=params)

data = response.json()

for item in data:

    currency = item.get("cur_unit")
    rate = item.get("deal_bas_r")
    country = item.get("cur_nm")

    print("통화코드 :", currency)
    print("국가 :", country)
    print("매매기준율 :", rate)
    print("--------------------------------")

12. 실제 응답 예시

[
  {
    "result": 1,
    "cur_unit": "USD",
    "ttb": "1,382.20",
    "tts": "1,410.12",
    "deal_bas_r": "1,396.16",
    "bkpr": "1,396",
    "yy_efee_r": "0",
    "ten_dd_efee_r": "0",
    "kftc_bkpr": "1,396",
    "kftc_deal_bas_r": "1,396.16",
    "cur_nm": "미국 달러"
  },
  {
    "result": 1,
    "cur_unit": "JPY(100)",
    "ttb": "950.12",
    "tts": "969.31",
    "deal_bas_r": "959.72",
    "bkpr": "959",
    "yy_efee_r": "0",
    "ten_dd_efee_r": "0",
    "kftc_bkpr": "959",
    "kftc_deal_bas_r": "959.72",
    "cur_nm": "일본 엔"
  }
]

13. 응답값 상세 설명

result 결과코드
cur_unit 통화코드
ttb 전신환(송금) 받으실때
tts 전신환(송금) 보내실때
deal_bas_r 매매기준율
bkpr 장부가격
yy_efee_r 년환가료율
ten_dd_efee_r 10일환가료율
kftc_bkpr 서울외국환중개 장부가격
kftc_deal_bas_r 서울외국환중개 매매기준율
cur_nm 국가/통화명

14. 주요 통화 코드 설명

USD 미국 달러
EUR 유로
JPY(100) 일본 엔(100엔 기준)
CNY 중국 위안
GBP 영국 파운드
CAD 캐나다 달러
AUD 호주 달러
HKD 홍콩 달러

15. 환율 데이터 의미 설명

deal_bas_r

실제 서비스에서 가장 많이 사용하는 기준 환율

예시:

1,396.16

의미:

1 USD = 1,396.16 KRW

 

16. 환율 API 운영 시 주의사항

16-1. 주말 데이터 없음

비영업일에는 빈 배열 반환 가능

예시:

[]

관련 사례가 실제 개발 문서 및 활용 사례에서도 언급됩니다.


16-2. 오전 11시 이전 데이터 미반영 가능

한국수출입은행 공식 안내:

  • 영업일 오전 11시 전후 업데이트

16-3. 호출 제한 초과

일일 1000회 초과 시:

{
  "result": 4
}

17. Result 코드 설명

1 정상
2 데이터 오류
3 인증 오류
4 호출 제한 초과

 

 

#환율API
#한국수출입은행
#환율OpenAPI
#공공데이터API
#환율정보API
#환율조회
#exchangeAPI
#환율연동
#JavaAPI연동
#PythonAPI연동
#RESTAPI
#JSONAPI
#SpringBootAPI
#환율계산기
#달러환율API
#환율자동화
#공공데이터포털
#API개발
#해외결제시스템
#금융API

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
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
글 보관함
반응형