祝日・営業日API

日本の祝日・振替休日・国民の休日を、1955年から2100年まで返すAPIです。「◯営業日後はいつ?」「今月末の支払日は?」といった計算に使えるJavaScriptも用意しています。

できること
その年の祝日の一覧 / 振替休日・国民の休日の見分け / 確定(内閣府が公表済み)か予定かの印 / 営業日の計算(◯営業日後・営業日数・休みならずらす)
費用・登録
無料・登録不要・APIキー不要(提供条件は利用状況で変わることがあります)
向いている用途
予約・配送日の表示、納期や支払日の計算、勤怠・シフト、カレンダーの祝日表示
気をつけること
予定の年(confirmed: false)は法律の改正や春分・秋分の正式発表で変わることがあります。止まらないことは保証していません。

データ: 内閣府「国民の祝日について」の一覧(版は /holidays/v1/meta.json で確認できます)

はじめかた(3ステップ)

  1. ブラウザで開いてみる: https://api.shirugear.com/holidays/v1/2026.json を開くと、2026年の祝日の一覧が返ります。URLの数字を年に変えるだけです。
  2. 営業日の計算に使う: 完成例のように holidays.js を読み込むと、土日・祝日を除いた営業日を数えられます。
  3. 利用規約を確かめる: 利用規約をご確認ください。登録や申し込みは要りません。

いろいろな言語から呼ぶ

サーバー側のプログラムやコマンドからも、URLを開くだけで使えます。1年分を1回で受け取れるので、受け取った結果を手元に保存して使い回すと効率的です。

const res = await fetch("https://api.shirugear.com/holidays/v1/2026.json");
const data = await res.json();
const names = Object.fromEntries(data.holidays.map((h) => [h.date, h.name]));
console.log(names["2026-11-03"] ?? "祝日ではありません"); // 文化の日
curl -s https://api.shirugear.com/holidays/v1/2026.json

# 日付と名前の一覧にする(jq を使う場合)
curl -s https://api.shirugear.com/holidays/v1/2026.json \
  | jq -r '.holidays[] | "\(.date) \(.name)"'
<?php
$data = json_decode(file_get_contents('https://api.shirugear.com/holidays/v1/2026.json'), true);
$names = array_column($data['holidays'], 'name', 'date');
echo $names['2026-11-03'] ?? '祝日ではありません', "\n"; // 文化の日
import json
import urllib.request

url = "https://api.shirugear.com/holidays/v1/2026.json"
with urllib.request.urlopen(url, timeout=10) as res:
    data = json.load(res)
names = {h["date"]: h["name"] for h in data["holidays"]}
print(names.get("2026-11-03", "祝日ではありません"))  # 文化の日

その場で試す

その年の祝日

日付曜日名前種類(kind)

営業日の計算

営業日の計算の完成例

次の HTML をそのまま貼ると、「今日から5営業日後」と「今月末の支払日(休みなら前の営業日)」が出ます。loadCalendar の引数で、会社ごとの休み(年末年始・お盆など)を足せます。

<!-- 営業日の計算(このまま HTML に貼って試せます) -->
<p>今日から5営業日後: <output id="due"></output></p>
<p>今月末の支払日(休みなら前の営業日): <output id="pay"></output></p>

<script type="module">
  import { loadCalendar } from "https://api.shirugear.com/holidays/v1/holidays.js";

  // 土日・祝日・振替休日・国民の休日に加えて、年末年始(12/29〜1/3)を休みにする
  const cal = await loadCalendar({ yearEnd: { from: "12-29", to: "01-03" } });

  const now = new Date();
  document.getElementById("due").textContent = cal.addBusinessDays(now, 5);

  // 月末(31日・30日・28日など)を求めて、休みなら前の営業日へずらす
  const end = new Date(now.getFullYear(), now.getMonth() + 1, 0);
  document.getElementById("pay").textContent = cal.adjust(end, "previous");
</script>

<script type="module"> は今のブラウザ(Chrome・Edge・Safari・Firefox)で動きます。Node.js(18以降)でも同じ URL から import できます。

URLの一覧

どれも、URLを開く(GET)だけで JSON(UTF-8)が返ります。先頭は https://api.shirugear.com です。自分のサイトのJavaScriptから直接呼べます(CORS対応)。

URL返すもの
/holidays/v1/{西暦4桁}.jsonその年の祝日・休日の一覧(1955〜2100年)。例: /holidays/v1/2026.json
/holidays/v1/all.json全期間の祝日・休日(日付 → 名前・種類)。自分のプログラムで判定したいときに。約130KB(通信は圧縮されて約12KB)
/holidays/v1/meta.jsonデータの版・確定している年・件数
/holidays/v1/holidays.js営業日を計算する JavaScript(ES モジュール)。使い方

その年の祝日

応答の例

GET https://api.shirugear.com/holidays/v1/2026.json

{
  "year": 2026,
  "confirmed": true,
  "holidays": [
    { "date": "2026-01-01", "weekday": "木", "name": "元日", "kind": "national", "official_name": "元日" },
    …
    { "date": "2026-05-06", "weekday": "水", "name": "振替休日", "kind": "substitute", "official_name": "休日" },
    …
    { "date": "2026-09-22", "weekday": "火", "name": "国民の休日", "kind": "citizens", "official_name": "休日" },
    …
  ],
  "confirmed_through": 2027,
  "data_version": "2026-11-01"
}

各項目

項目型内容
year数値年
confirmed真偽値true は内閣府が公表済みの確定した年、false は今の祝日法で計算した予定(確定と予定)
holidays配列その年の祝日・休日を日付の順に。下の表の項目が入ります
confirmed_through数値確定している最後の年(例: 2027)
data_version文字列データの版。内閣府の一覧が変わったのを取り込んだ日("YYYY-MM-DD")
holidays の項目型内容
date文字列日付 "YYYY-MM-DD"(日本の日付)
weekday文字列曜日("日"〜"土")
name文字列名前。振替休日・国民の休日は見分けた名前("振替休日"・"国民の休日")
kind文字列種類(下の表)
official_name文字列内閣府の一覧での書き方(振替休日・国民の休日は "休日")。予定の年は name と同じか "休日"
kind意味例
national国民の祝日元日、成人の日、春分の日、スポーツの日 など
substitute振替休日。日曜日の祝日のあとの、最初の祝日でない日2026-05-06(5/3 憲法記念日が日曜日のため)
citizens国民の休日。前の日と次の日が祝日である日2026-09-22(敬老の日と秋分の日にはさまれた日)
specialその年だけの休日(法律で個別に定めたもの)1989-02-24 昭和天皇の大喪の礼、2019-05-01 天皇の即位の日 など6日

振替休日は1973年4月12日から、国民の休日は1988年から始まった制度です。それより前の年には出てきません。

確定と予定

営業日の計算(holidays.js)

https://api.shirugear.com/holidays/v1/holidays.js は、全期間の祝日(all.json)を一度だけ読み込み、営業日の計算をブラウザの中で行う JavaScript です。日付は "YYYY-MM-DD" の文字列か Date(その端末の日付として読みます)で渡し、"YYYY-MM-DD" で返ります。端末の時差の影響は受けません。

import { loadCalendar } from "https://api.shirugear.com/holidays/v1/holidays.js";
const cal = await loadCalendar();   // 土日・祝日・振替休日・国民の休日が休み

loadCalendar(options) の options

項目既定内容
closedWeekdays[0, 6]休みの曜日(0=日 … 6=土)。土曜も営業なら [0]
holidaystrue祝日・振替休日・国民の休日を休みにする
yearEndfalse年末年始の休み。"bank" は銀行と同じ12月31日〜1月3日。{ from: "12-29", to: "01-03" } のようにも指定できます
closedDates[]ほかに休みにする日(お盆休み・創立記念日など)。例: ["2026-08-13", "2026-08-14"]
openDates[]休みの日でも営業する日(ほかのどの指定よりも優先)

使える関数

関数返すもの例
isBusinessDay(date)営業日なら truecal.isBusinessDay("2026-05-06") → false
addBusinessDays(date, n)n 営業日後(n が負なら前)。その日自身は数えませんcal.addBusinessDays("2026-04-30", 3) → "2026-05-08"
adjust(date, "next" | "previous")休みなら次(前)の営業日へ。営業日ならそのままcal.adjust("2026-05-31", "previous") → "2026-05-29"
countBusinessDays(from, to)2つの日の間(両端を含む)の営業日の数cal.countBusinessDays("2026-05-01", "2026-05-31") → 18
businessDaysInMonth(year, month)その月の営業日の一覧cal.businessDaysInMonth(2026, 1)[0] → "2026-01-05"(年末年始を休みにした場合)
lastBusinessDayOfMonth(year, month)その月の最終営業日cal.lastBusinessDayOfMonth(2026, 2) → "2026-02-27"
holiday(date)その日の祝日・休日({ date, name, kind })。無ければ nullcal.holiday("2026-05-06").name → "振替休日"
isHoliday(date)祝日・休日なら true(土日は含みません)
isConfirmed(date)その年の祝日が確定していれば truecal.isConfirmed("2030-01-01") → false

エラー

うまくいかないときは、HTTPの状態コードと、次の形の JSON を返します。code は固定の値なので、プログラムで見分けるときはこれを使ってください(message は説明文で、言い回しが変わることがあります)。

{"error":{"status":404,"code":"year_not_found","message":"この年の祝日はありません。…"}}
状態codeいつ
400invalid_year年の形が違う(2桁・和暦・文字など)
404year_not_found1955年〜2100年の外の年
404not_foundURLが違う
405method_not_allowedGET / HEAD 以外で呼んだ

データの更新・キャッシュ・呼び出し回数

変更の方針と更新履歴

更新履歴

2026年11月1日
公開。

機械で読める仕様(型定義・OpenAPI)

用語の説明

国民の祝日
「国民の祝日に関する法律」(祝日法)で決まっている祝日です。今は年に16日あります。
振替休日
祝日が日曜日に重なったとき、そのあとの最初の祝日でない日が休みになる日です。土曜日の祝日には振替休日はありません。
国民の休日
前の日と次の日が祝日である日(祝日でない日)が休みになる日です。9月の敬老の日と秋分の日の間などで起こります。
営業日
会社やお店が営業している日です。このAPIの計算では、ふつう土日・祝日・振替休日・国民の休日を除いた日を指します。年末年始などは options で足せます。
ES モジュール
JavaScript のファイルを import で読み込む仕組みです。HTML では <script type="module"> の中で使います。

よくある質問

本当に無料ですか?登録は必要ですか?

現在は無料で、登録やAPIキーも要りません。個人・法人、営利・非営利を問わず使えます。ただし利用状況に応じて提供条件を変えることがあり、そのときはできるかぎりこのページでお知らせします。

来年や再来年の祝日も分かりますか?

2100年まで分かります。内閣府が公表している年(今は2027年まで)は確定、その先は今の祝日法で計算した予定で、confirmed が false になります。春分の日・秋分の日は前の年の2月に官報で正式に決まるので、予定の年は変わることがあります。

「休日」と「振替休日」「国民の休日」の違いは?

内閣府の一覧では、振替休日も国民の休日も「休日」とだけ書かれています。このAPIは前後の日から見分けて、日曜日の祝日の代わりの休みを「振替休日」、祝日にはさまれた日を「国民の休日」として返します。もとの書き方は official_name に入っています。

土曜日の祝日は振替休日になりますか?

なりません。振替休日は日曜日の祝日だけが対象です。土曜日が祝日の年は、平日の休みは増えません。

年末年始やお盆は休みとして入っていますか?

祝日ではないので入っていません。営業日の計算では yearEnd: "bank"(銀行と同じ12月31日〜1月3日)や closedDates(お盆休みなど)で、会社ごとの休みを足せます。

銀行の休業日(営業日)と同じになりますか?

loadCalendar({ yearEnd: "bank" }) とすると、土日・祝日・振替休日・国民の休日と12月31日〜1月3日が休みになり、銀行の休業日と同じ考え方になります。

1955年より前や、2100年より先の祝日は?

このAPIでは返しません(範囲外の年は 404)。1955年より前は内閣府の一覧に無いため、2100年より先は先すぎて予定としても役に立ちにくいためです。

アクセス数に上限はありますか?

決まった上限はありませんが、目安として1つの利用元から1秒あたり10回程度までにしてください。祝日は年に1回しか変わらないので、取ったデータは使い回してください。

ご利用にあたって

ご利用の前に利用規約をご確認ください。データの正確さや、止まらないことは保証していません。正式な祝日は内閣府の「国民の祝日について」でご確認ください。ご質問・不具合のご連絡は、シルギアのお問い合わせ窓口から、件名に「API」と入れてお送りください。