📅 공공데이터포털 공휴일 API 사용법 총정리

2025. 5. 26. 10:46·기술블로그-Fastapi편

📅 공공데이터포털 공휴일 API 사용법 총정리


1️⃣ 공공데이터포털 공휴일 API란?

**공공데이터포털(https://www.data.go.kr)**에서는 연도별 대한민국의 공휴일 정보를 제공하는 API를 지원합니다.

✔️ 주요 제공 정보:

  • 공휴일 명칭 (예: 설날, 추석)
  • 날짜 (예: 2025-09-29)
  • 양력/음력 여부
  • 대체공휴일 여부 등

이 API는 예약 시스템, 캘린더 앱, 학교 일정 관리 등에 매우 유용합니다.


2️⃣ 사용 절차 요약

Step 1. 회원가입 및 인증키 발급

  • 공공데이터포털 회원가입
  • 공휴일, 특일 정보 등 검색 후 "활용 신청"
  • 신청 완료 후 인증키(API Key) 발급 받기

Step 2. API 문서 확인 및 URL 구성

  • 기본 URL:
  • https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo
  • 필수 파라미터:파라미터 설명
    serviceKey 발급받은 인증키 (인코딩 필요)
    solYear 공휴일을 조회할 연도
    numOfRows 한 페이지당 항목 수
    pageNo 페이지 번호
  • 전체 요청 예시:
  • https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo?serviceKey=인증키&solYear=2025&numOfRows=100

3️⃣ 응답 형식 예시 (XML)

<item>
  <dateName>삼일절</dateName>
  <locdate>20250301</locdate>
  <isHoliday>true</isHoliday>
</item>
  • dateName: 공휴일 이름
  • locdate: 날짜 (YYYYMMDD)
  • isHoliday: 실제 공휴일 여부

4️⃣ Python으로 연동하는 방법

import requests
from xml.etree import ElementTree

url = "https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo"
params = {
    'serviceKey': '당신의_인증키',
    'solYear': '2025',
    'numOfRows': '100'
}

response = requests.get(url, params=params)
tree = ElementTree.fromstring(response.content)

for item in tree.iter('item'):
    name = item.find('dateName').text
    date = item.find('locdate').text
    print(f"{name}: {date}")

5️⃣ 실무 활용 팁 💡

  • 날짜(locdate)는 datetime.strptime 등으로 파싱하면 편리함
  • 대체공휴일을 고려한 예약 로직에 적용 가능
  • JSON 응답이 필요한 경우, JSON 지원 API로 별도 요청 가능

⚠️ 주의사항

  • 하루 호출 횟수 제한 있음 (보통 1,000회/일)
  • 인증키는 노출 금지! .env 등으로 안전하게 관리
  • 데이터 출처는 한국천문연구원, 신뢰도 매우 높음

🎯 요약

공공데이터포털의 공휴일 API는 FastAPI, Django, Flask 등 모든 백엔드 프로젝트에서 활용 가능하며, 공식 연휴 데이터를 쉽게 연동할 수 있는 강력한 도구입니다.

캘린더 기반 기능이 필요하다면 반드시 활용해보세요!

'기술블로그-Fastapi편' 카테고리의 다른 글

🌟 Python asyncio 와 FastAPI/Django 비동기 여러 작업 동시 처리 기능 정리  (0) 2025.05.26
👉 Python 개념 정리: 상수(Constant) 와 리터럴(Literal)  (0) 2025.05.26
✅ isinstance() 함수 완전 정복  (0) 2025.05.23
✅ Python 타입 힌트는 강제성이 있을까?  (0) 2025.05.23
✅ Git 브랜치가 왜 main이 아닌 master일까?  (0) 2025.05.23
'기술블로그-Fastapi편' 카테고리의 다른 글
  • 🌟 Python asyncio 와 FastAPI/Django 비동기 여러 작업 동시 처리 기능 정리
  • 👉 Python 개념 정리: 상수(Constant) 와 리터럴(Literal)
  • ✅ isinstance() 함수 완전 정복
  • ✅ Python 타입 힌트는 강제성이 있을까?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bts
    titaniumcase
    뷔
    btsjungkook
    americaparty
    classaction
    self-growth
    lawsuitculture
    livebroadcast
    urbantrends
    newpoliticalparty
    travel ban
    basalcellcarcinoma
    college reunions
    homebartrend
    RM
    btsdischarge
    americanlaw
    hotcoffeecase
    youngprofessionals
    trumpmuskclash
    smartphonedurability
    chatgpterror
    chinanightlife
    btsreunion
    btscomeback
    global politics
    life reflection
    gpterror
    remittance
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📅 공공데이터포털 공휴일 API 사용법 총정리
상단으로

티스토리툴바