API 목록으로
🏛️ 공공데이터무료

공공데이터포털

행정안전부 · Korea Open Data Portal

인증 방식

🔑 API Key

요금

무료 (대부분 API)

Base URL

apis.data.go.kr

태그

공공데이터, 정부

서비스 소개

대한민국 공공데이터포털은 정부·지자체·공공기관이 보유한 4만 개 이상의 오픈 API와 파일 데이터를 무료로 제공합니다. 교통, 환경, 보건, 문화, 경제 등 모든 분야의 공공 데이터를 하나의 계정으로 신청하여 사용할 수 있습니다.

🚀 시작하기

  1. 1

    회원가입

    data.go.kr → 회원가입 (본인인증 필요)

  2. 2

    API 검색

    원하는 데이터 키워드 검색 → 오픈 API 선택

  3. 3

    활용 신청

    활용 신청 → 신청 용도 작성 → 자동 승인 (대부분)

  4. 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"]

같은 카테고리 API