인증 방식
🔑 API Key
요금
무료 (대부분 API)
Base URL
apis.data.go.kr
태그
공공데이터, 정부
서비스 소개
대한민국 공공데이터포털은 정부·지자체·공공기관이 보유한 4만 개 이상의 오픈 API와 파일 데이터를 무료로 제공합니다. 교통, 환경, 보건, 문화, 경제 등 모든 분야의 공공 데이터를 하나의 계정으로 신청하여 사용할 수 있습니다.
🚀 시작하기
- 1
회원가입
data.go.kr → 회원가입 (본인인증 필요)
- 2
API 검색
원하는 데이터 키워드 검색 → 오픈 API 선택
- 3
활용 신청
활용 신청 → 신청 용도 작성 → 자동 승인 (대부분)
- 4
인증키 발급
마이페이지 → 개발계정 → Encoding 키와 Decoding 키 확인. 반드시 Decoding 키 사용
💡 코드 예제
JavaScriptJavaScript (공통 패턴)
// 공공데이터포털 API 공통 호출 패턴
async function callOpenAPI(endpoint: string, params: Record<string, string>) {
const url = new URL(endpoint)
// 중요: Encoding 키가 아닌 Decoding 키 사용!
url.searchParams.set('serviceKey', process.env.DATA_GO_KR_KEY!)
url.searchParams.set('dataType', 'JSON')
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v))
const res = await fetch(url.toString())
if (!res.ok) throw new Error(`API 오류: ${res.status}`)
const data = await res.json()
// 오류 코드 확인 (HTTP 200이어도 오류일 수 있음)
if (data.response?.header?.resultCode !== '00') {
throw new Error(data.response?.header?.resultMsg)
}
return data.response.body
}PythonPython (공통 패턴)
import requests
import os
API_KEY = os.environ["DATA_GO_KR_KEY"] # Decoding 키
def call_open_api(endpoint: str, **params) -> dict:
"""공공데이터포털 API 공통 호출 함수"""
response = requests.get(
endpoint,
params={"serviceKey": API_KEY, "dataType": "JSON", **params},
)
data = response.json()
# 오류 처리
header = data.get("response", {}).get("header", {})
if header.get("resultCode") != "00":
raise ValueError(f"API Error: {header.get('resultMsg')}")
return data["response"]["body"]