暦API

1900年から2100年までの毎日について、旧暦・六曜・干支・二十四節気・雑節・月齢・和暦を返すAPIです。カレンダーに六曜を添える、大安の日を拾う、その年の二十四節気を一覧にする、といったことが手軽にできます。

できること
日ごとの 旧暦(閏月つき)・六曜・日の干支・二十四節気・雑節・月齢・月の満ち欠け・和暦 / 年ごとの 二十四節気と雑節の日時・新月と満月などの日時・年の干支
期間
1900年1月1日〜2100年12月31日(1年分を1つのファイルで返します)
費用・登録
無料・登録不要・APIキー不要(提供条件は利用状況で変わることがあります)
計算のもと
NASA JPL の天体暦 DE440s。国立天文台の暦要項(2004〜2027年)と、二十四節気・雑節・朔弦望の日付がすべて一致
気をつけること
祝日は入っていません(祝日・営業日APIを併せて使ってください)。六曜・干支などは迷信・慣習としての参考情報です。

データの版は /koyomi/v1/meta.json で確認できます。

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

  1. ブラウザで開いてみる: https://api.shirugear.com/koyomi/v1/2026.json を開くと、2026年の365日分の暦が返ります。URLの数字を調べたい年に変えるだけです。
  2. その日の1件を取り出す: days の中から date が目当ての日付(例: "2026-11-01")のものを探します。使い方の例にそのまま使えるコードがあります。
  3. 利用規約を確かめる: 利用規約をご確認ください。登録や申し込みは要りません。

いろいろな言語から呼ぶ

サーバー側のプログラムやコマンドからも、URLを開くだけで使えます。1年分(約100KB、通信は圧縮されて約14KB)を1回で受け取れるので、手元に保存して使い回すと効率的です。

const res = await fetch("https://api.shirugear.com/koyomi/v1/2026.json");
const data = await res.json();
const day = data.days.find((d) => d.date === "2026-11-03");
console.log(day.rokuyo, "旧暦" + day.lunar.text); // 友引 旧暦9月24日
curl -s https://api.shirugear.com/koyomi/v1/2026.json \
  | jq '.days[] | select(.date == "2026-11-03") | {rokuyo, lunar: .lunar.text}'
<?php
$data = json_decode(file_get_contents('https://api.shirugear.com/koyomi/v1/2026.json'), true);
foreach ($data['days'] as $day) {
    if ($day['date'] === '2026-11-03') {
        echo $day['rokuyo'], ' 旧暦', $day['lunar']['text'], "\n"; // 友引 旧暦9月24日
    }
}
import json
import urllib.request

url = "https://api.shirugear.com/koyomi/v1/2026.json"
with urllib.request.urlopen(url, timeout=10) as res:
    data = json.load(res)
day = next(d for d in data["days"] if d["date"] == "2026-11-03")
print(day["rokuyo"], "旧暦" + day["lunar"]["text"])  # 友引 旧暦9月24日

その場で試す

日付から暦を調べる

試しに:

和暦・曜日
旧暦
六曜
日の干支
二十四節気
雑節
月齢(正午)
年の干支

応答の JSON(その日の1件)を見る

年の二十四節気・雑節の一覧

時刻は日本時間(秒まで)。雑節の時刻は、太陽の黄経で決まる入梅・半夏生・土用入りだけにあります。

二十四節気

名前読み黄経日付時刻

雑節

名前日付時刻

URLの一覧

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

URL返すもの
/koyomi/v1/{西暦4桁}.jsonその年の毎日の暦と、二十四節気・雑節・月の満ち欠けの一覧。1900〜2100年。例: /koyomi/v1/2026.json
/koyomi/v1/meta.jsonデータの版・作った日時・期間・計算のもと・日数

コマンドラインからは、たとえば次のようにその日の1件を取り出せます(jq を使う例)。

curl -s https://api.shirugear.com/koyomi/v1/2026.json | jq '.days[] | select(.date == "2026-11-01")'

応答の例と各項目

応答の例

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

{
  "year": 2026,
  "wareki": "令和8年",
  "kanshi": "丙午",
  "kanshi_kana": "ひのえうま",
  "days": [
    …
    {
      "date": "2026-02-17",
      "weekday": "火",
      "wareki": "令和8年",
      "lunar": { "year": 2026, "month": 1, "day": 1, "leap": false, "text": "1月1日" },
      "rokuyo": "先勝",
      "kanshi": "壬戌",
      "kanshi_kana": "みずのえいぬ",
      "sekki": null,
      "zassetsu": [],
      "moon_age": 29.3,
      "moon_phase": "新月"
    },
    …
  ],
  "solar_terms": [
    { "name": "小寒", "kana": "しょうかん", "longitude": 285, "date": "2026-01-05", "at": "2026-01-05T17:23:09+09:00" },
    …
  ],
  "zassetsu": [
    { "name": "土用入り", "season": "冬", "label": "冬の土用入り", "date": "2026-01-17", "at": "2026-01-17T12:03:09+09:00" },
    { "name": "土用の丑の日", "season": "冬", "label": "冬の土用の丑の日", "date": "2026-01-27" },
    { "name": "節分", "label": "節分", "date": "2026-02-03" },
    …
  ],
  "moon_phases": [
    { "name": "満月", "date": "2026-01-03", "at": "2026-01-03T19:02:55+09:00" },
    …
  ],
  "data_version": "2026-11-01"
}

2026年2月17日は旧暦の1月1日(旧正月)です。新月の瞬間は21時01分で、月齢は正午の値なので、この日は 29.3 になっています(月齢と月の満ち欠け)。

年の項目

年の項目の一覧を開く(9項目)
項目型内容
year数値西暦の年
wareki文字列和暦の年(例: 「令和8年」)。年の途中で元号が変わる年は、両方を「・」でつなぎます(例: 1989年は「昭和64年・平成元年」、2019年は「平成31年・令和元年」)
kanshi文字列年の干支(例: 「丙午」)。1月1日で切り替えます(干支と和暦)
kanshi_kana文字列年の干支の読み(ひらがな。例: 「ひのえうま」)
days配列1月1日から12月31日までの毎日(365件、うるう年は366件)。日付の順(下の表)
solar_terms配列その年の二十四節気(24件・日付の順)。name(名前)・kana(読み)・longitude(太陽の黄経・度)・date(日付)・at(時刻・秒まで)
zassetsu配列その年の雑節(日付の順)。name(名前)・season(季節「春」「夏」「秋」「冬」。季節の無い雑節では項目ごと無し)・label(表示用の名前)・date(日付)・at(時刻。太陽の黄経で決まる入梅・半夏生・土用入りだけ。ほかは項目ごと無し)
moon_phases配列その年の新月・上弦・満月・下弦(日付の順)。name(「新月」「上弦」「満月」「下弦」)・date(日付)・at(時刻・秒まで)
data_version文字列データの版(データの更新)

日付はすべて "YYYY-MM-DD"、時刻はすべて日本時間の "YYYY-MM-DDTHH:MM:SS+09:00"(ISO 8601)です。

days の各項目(1日分)

1日分の項目の一覧を開く(15項目)
項目型内容
date文字列日付("2026-02-17")
weekday文字列曜日(「日」「月」「火」「水」「木」「金」「土」)
wareki文字列その日の和暦の年(例: 「令和8年」「平成元年」)。元号はその日に使われていたもの
lunar.year数値旧暦の年。旧暦の1月1日がある西暦の年で数えます。旧正月より前の日は前の年(例: 2026年1月1日は 2025)
lunar.month数値旧暦の月(1〜12)。閏月も同じ番号です(閏11月なら 11)
lunar.day数値旧暦の日(1〜30)
lunar.leap真偽値閏月なら true
lunar.text文字列表示用(「1月1日」「閏11月1日」)
rokuyo文字列六曜(「先勝」「友引」「先負」「仏滅」「大安」「赤口」)
kanshi文字列日の干支(例: 「壬戌」)
kanshi_kana文字列日の干支の読み(ひらがな。例: 「みずのえいぬ」)
sekki文字列/nullその日に入る二十四節気(例: 「立春」)。無ければ null
zassetsu文字列の配列その日の雑節の表示用の名前(年の zassetsu の label。例: ["夏の土用の丑の日"])。無ければ []。まれに2つ重なります
moon_age数値月齢。その日の正午(日本時間)の、直前の新月からの経過日数(小数1桁。0.0〜29.9)
moon_phase文字列/nullその日に新月・上弦・満月・下弦の瞬間があれば、その名前。無ければ null

days は1月1日から順に並んでいるので、その年の何日目かが分かれば番号でも引けます(1月1日が days[0])。

旧暦と六曜の決め方(2033年問題)

旧暦は、明治5年(1872年)まで使われていた太陰太陽暦(天保暦)の決め方に沿って、天文計算から求めています。旧暦はいまの日本では公式に定められた暦ではありません。作り手によって細かな決め方が違うため、市販のカレンダーなどと食い違うことがあります。

旧暦の決め方

  1. 月の始まり: 新月(朔)の瞬間がある日(日本時間)を、旧暦の月の1日とします。次の新月の日の前日までがその月です(29日か30日)。
  2. 月の番号: 冬至を含む月を11月とします。そこから順に12月・1月…と数えます。
  3. 閏月: 冬至を含む月から次の冬至を含む月までが13か月あるときは、その間で中気(太陽の黄経が30°の倍数になる二十四節気)を含まない最初の月を閏月とし、前の月と同じ番号にします(例: 6月の次の閏月は「閏6月」)。
  4. 旧暦の年: 旧暦の1月1日(旧正月)がある西暦の年で数えます。旧正月より前の日は、前の年の11月・12月です。

2033年問題

2033年の秋から2034年の春にかけては、天保暦の決め方をそのまま当てはめると、月の名前が一通りに決まりません。これを「旧暦2033年問題」と呼びます。

六曜の決め方

六曜は、旧暦の月と日から決まります。(旧暦の月 + 旧暦の日)を6で割った余りで次のように決めます。閏月は同じ番号の月として数えます(閏11月は11月と同じ)。

余り六曜読み(よく使われるもの)
0大安たいあん
1赤口しゃっこう
2先勝せんしょう
3友引ともびき
4先負せんぶ
5仏滅ぶつめつ

このため、旧暦の各月の1日は決まった六曜から始まります(1月・7月は先勝、2月・8月は友引、3月・9月は先負、4月・10月は仏滅、5月・11月は大安、6月・12月は赤口)。旧暦の月が変わる日は、六曜の並びが途中で飛びます。

六曜・干支などの暦注は、迷信・慣習としての参考情報です。科学的な根拠を示すものではありません。

二十四節気と雑節

二十四節気

太陽の通り道(黄道)を15°ずつ24に分け、太陽がそれぞれの角度(黄経)に来た瞬間を二十四節気とします。sekki にはその瞬間がある日(日本時間)に名前が入り、年の solar_terms には秒までの時刻が入ります。黄経が30°の倍数のもの(春分・穀雨・小満…)を「中気」と呼び、旧暦の月の番号を決めるのに使います。

二十四節気の一覧を開く(24行)
名前読み太陽の黄経日付のめやす(2000〜2100年)
小寒しょうかん285°1月4〜6日
大寒だいかん300°(中気)1月19〜21日
立春りっしゅん315°2月3〜4日
雨水うすい330°(中気)2月18〜19日
啓蟄けいちつ345°3月4〜6日
春分しゅんぶん0°(中気)3月19〜21日
清明せいめい15°4月4〜5日
穀雨こくう30°(中気)4月19〜20日
立夏りっか45°5月4〜6日
小満しょうまん60°(中気)5月20〜21日
芒種ぼうしゅ75°6月4〜6日
夏至げし90°(中気)6月20〜22日
小暑しょうしょ105°7月6〜7日
大暑たいしょ120°(中気)7月22〜23日
立秋りっしゅう135°8月6〜8日
処暑しょしょ150°(中気)8月22〜23日
白露はくろ165°9月6〜8日
秋分しゅうぶん180°(中気)9月22〜23日
寒露かんろ195°10月7〜9日
霜降そうこう210°(中気)10月22〜24日
立冬りっとう225°11月6〜8日
小雪しょうせつ240°(中気)11月21〜23日
大雪たいせつ255°12月6〜7日
冬至とうじ270°(中気)12月21〜22日

雑節

雑節は、二十四節気のほかに季節の目安として使われてきた日です。このAPIでは次のものを入れています(社日は入れていません)。

雑節の一覧を開く(10行)
namelabel の例決め方日付のめやす(2000〜2100年)
節分節分立春の前日2月2〜3日
彼岸入り彼岸入り(春)/彼岸入り(秋)春分・秋分の3日前3月16〜18日/9月19〜20日
彼岸明け彼岸明け(春)/彼岸明け(秋)春分・秋分の3日後3月22〜24日/9月25〜26日
八十八夜八十八夜立春から数えて88日目(立春の87日後)5月1〜2日
入梅入梅太陽の黄経が80°になる日6月10〜11日
半夏生半夏生太陽の黄経が100°になる日7月1〜2日
二百十日二百十日立春から数えて210日目(立春の209日後)8月31日〜9月1日
二百二十日二百二十日立春から数えて220日目(立春の219日後)9月10〜11日
土用入り冬の土用入り/春の土用入り/夏の土用入り/秋の土用入り太陽の黄経が 297°(冬)・27°(春)・117°(夏)・207°(秋)になる日1月16〜18日/4月16〜17日/7月18〜20日/10月19〜21日
土用の丑の日夏の土用の丑の日 など土用入りの日から、次の立春・立夏・立秋・立冬の前日まで(土用の期間)のうち、日の干支が丑の日季節ごとに1〜2回

月齢と月の満ち欠け

干支と和暦

日の干支(kanshi)

十干(甲・乙・丙…)と十二支(子・丑・寅…)を組み合わせた60通りが、1日ずつ順に巡ります。1900年1月1日が甲戌(きのえいぬ)で、そこから途切れずに数えています。土用の丑の日の「丑」はこの十二支です。

年の干支(年の kanshi)

西暦の年で決め、1月1日で切り替えます(例: 2026年は丙午)。立春で年の干支を切り替える流儀(占いなどで使われます)もありますが、このAPIでは1月1日です。立春で切り替えたいときは、立春の日(solar_terms の「立春」)より前を前の年の干支として扱ってください。

和暦(wareki)

明治以降の元号で、元号の1年目は「元年」と書きます。元号は、切り替わった日から新しいものにしています。

元号この日から前日の和暦
大正1912年7月30日明治45年
昭和1926年12月25日大正15年
平成1989年1月8日昭和64年
令和2019年5月1日平成31年

正確さ(暦要項との照合)

天文の計算には、NASA ジェット推進研究所(JPL)が公開している天体暦 DE440s を、Python の skyfield で使っています。太陽の地心の視黄経と、月と太陽の黄経の差を計算し、二十四節気・雑節の角度や新月・満月などになる瞬間を秒まで求めてから、日本時間で日付を決めています。

この結果を、国立天文台が毎年公表している暦要項の2004年から2027年までの24年分と照らし合わせました。

照らし合わせたもの件数日付
二十四節気576件すべて一致
雑節(角度で決まる入梅・半夏生・土用入り)144件すべて一致
雑節(日数で決まる節分・彼岸入り・八十八夜・二百十日)24年分のすべてすべて一致(二百二十日・彼岸明け・土用の丑の日は暦要項に載っていないため、同じ決め方で計算しています)
朔弦望(新月・上弦・満月・下弦)1,187件すべて一致

使い方の例

どの例も、ブラウザの JavaScript(フレームワーク不要)で動きます。年のファイルは一度取ったら覚えておき、同じ年では呼び直しません。

その日の六曜を出す

const API = "https://api.shirugear.com/koyomi/v1/";
const years = new Map(); // 年のファイルは一度だけ取り、使い回す

function loadYear(year) {
  if (!years.has(year)) {
    const p = fetch(API + year + ".json").then((res) => {
      if (!res.ok) throw new Error("HTTP " + res.status);
      return res.json();
    });
    p.catch(() => years.delete(year)); // 失敗したら次は取り直す
    years.set(year, p);
  }
  return years.get(year);
}

// "2026-11-01" のような日付の暦(1日分)。範囲外の年は例外
async function koyomiOf(date) {
  const data = await loadYear(Number(date.slice(0, 4)));
  return data.days.find((d) => d.date === date);
}

const day = await koyomiOf("2026-11-01");
console.log(day.rokuyo);      // "赤口"
console.log(day.lunar.text);  // "9月22日"(旧暦)
console.log(day.moon_age);    // 21.5

大安の日を拾う(土日祝だけ)

祝日は祝日・営業日APIの同じ年のファイルから取り、日付で突き合わせます。上の loadYear を使います。

const [koyomi, holidays] = await Promise.all([
  loadYear(2026),
  fetch("https://api.shirugear.com/holidays/v1/2026.json").then((res) => res.json()),
]);
const holidayDates = new Set(holidays.holidays.map((h) => h.date));

const goodDays = koyomi.days.filter((d) =>
  d.rokuyo === "大安" && (d.weekday === "土" || d.weekday === "日" || holidayDates.has(d.date))
);
console.log(goodDays.map((d) => d.date));
// ["2026-01-01", "2026-01-24", "2026-02-11", "2026-02-21", …]

カレンダーに六曜を添える

日付のマスに data-date を付けておき、六曜を入れる場所を用意します。値は textContent で入れます(HTML として解釈させない)。

<!-- カレンダーの1マス(例) -->
<td data-date="2026-11-01">1 <small class="rokuyo"></small></td>

<script>
async function addRokuyo(root) {
  for (const cell of root.querySelectorAll("[data-date]")) {
    const label = cell.querySelector(".rokuyo");
    if (!label) continue;
    try {
      const day = await koyomiOf(cell.dataset.date); // 上の例の koyomiOf(年ごとに1回だけ通信)
      label.textContent = day ? day.rokuyo : "";
    } catch (e) {
      label.textContent = ""; // 取れなければ六曜なしで表示する
    }
  }
}
addRokuyo(document);
</script>

六曜が取れなくてもカレンダー自体は使えるように、六曜は「あれば添える」作りにしておくと安心です。

エラー

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

{"error":{"status":404,"code":"year_not_found","message":"この年の暦はありません。1900年から2100年までで指定してください。"}}
状態codeいつ
400invalid_year年の形が違う(2桁・和暦・.json が無いなど)。例: /koyomi/v1/26.json
404year_not_found4桁だが1900〜2100年の外。例: /koyomi/v1/1899.json
404not_foundURLが違う(/koyomi/v1/ の外)
405method_not_allowedGET / HEAD 以外で呼んだ

通信できない・サーバーが止まっているときは、JSON が返らないことがあります。fetch の失敗(例外)も受け止めて、暦なしでも画面が使えるようにしてください。

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

変更の方針と更新履歴

更新履歴

2026年11月1日
公開。

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

用語の説明

用語の説明を開く(16語)
API
プログラムから呼び出して使う窓口のことです。このAPIは、URLを開くと結果がデータ(JSON)で返ります。
JSON
プログラムで扱いやすいデータの書き方です。JavaScript ではそのままオブジェクトとして使えます。
CORS対応
ほかのサイト(あなたのサイト)のページのJavaScriptから、このAPIを直接呼び出せるという意味です。サーバー側のプログラムは要りません。
旧暦
明治5年(1872年)まで使われていた太陰太陽暦のことです。月の満ち欠けで1か月を決め、季節とのずれを閏月で調整します。最後に使われた天保暦の決め方を、ふつう「旧暦」と呼びます。
閏月
旧暦で、季節とのずれを直すために、ほぼ3年に1度入れる月です。前の月と同じ番号で「閏◯月」と呼びます。
朔・弦・望(朔弦望)
朔は新月、弦は上弦と下弦(半月)、望は満月のことです。
六曜
先勝・友引・先負・仏滅・大安・赤口の6つを、旧暦の日付から決めて日ごとに割り当てたものです。カレンダーに載る暦注として広く使われています。
干支(十干十二支)
十干(甲・乙・丙・丁・戊・己・庚・辛・壬・癸)と十二支(子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥)を組み合わせた60通りの呼び名です。日と年に割り当てます。
二十四節気
太陽の通り道を15°ずつ24に分けて、季節の区切りにしたものです(立春・春分・夏至など)。
中気
二十四節気のうち、太陽の黄経が30°の倍数のもの(春分・穀雨・小満・夏至・大暑・処暑・秋分・霜降・小雪・冬至・大寒・雨水)です。旧暦の月の番号を決めるのに使います。
雑節
二十四節気のほかの、季節の目安となる日です(節分・彼岸・八十八夜・入梅・半夏生・土用・二百十日など)。
黄経(太陽の視黄経)
地球から見た太陽の位置を、黄道に沿って春分点から測った角度です。0°が春分、90°が夏至、180°が秋分、270°が冬至です。
月齢
直前の新月から何日たったかを表す数です。0 が新月、15 前後が満月です。
暦要項
国立天文台が毎年2月に官報で公表する、翌年の暦(国民の祝日・二十四節気・雑節・朔弦望など)です。
ΔT(デルタT)
地球の自転をもとにした時刻と、一様に進む時刻との差です。自転のゆらぎで変わるため、将来の分は予測になります。
暦注
暦に書き添えられる日の吉凶などの注記です。六曜や干支もその一つです。

よくある質問

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

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

祝日は入っていますか?

入っていません。祝日・休日は祝日・営業日APIで取れます。同じ年の2つのファイルを日付で突き合わせれば、「大安の土日祝」のような日も拾えます。

六曜や干支に根拠はありますか?

六曜・干支などの暦注は、迷信・慣習としての参考情報です。科学的な根拠を示すものではありません。冠婚葬祭の日取りなどに使うときは、相手の考え方も大切にしてください。

市販のカレンダーと旧暦や六曜が違うのはなぜですか?

旧暦はいまの日本では公式に定められた暦ではなく、作り手によって決め方が少しずつ違います。このAPIは天保暦の決め方に沿って天文計算から求めています。新月の時刻が0時に近い月や、2033年から2034年にかけての閏月の置き方(2033年問題)では、ほかの暦と1日または1か月ずれることがあります。

2033年の旧暦はどうなっていますか?

このAPIでは、2033年12月22日からを閏11月としています。日本カレンダー暦文化振興協会の見解と同じです。閏7月や(2034年の)閏1月とする暦もあり、2033年秋から2034年春にかけての旧暦の日付と六曜は、暦によって違うことがあります。

一粒万倍日や天赦日は入っていますか?

入っていません。返すのは、旧暦・六曜・日と年の干支・二十四節気・雑節・月齢と月の満ち欠け・和暦です。社日も入れていません。

時刻はどこの時間ですか?

すべて日本時間(+09:00)です。二十四節気や新月が何日に当たるかも、日本時間で決めています。

1日分だけを取るURLはありますか?

ありません。暦は1年分を1つのファイル(約100KB、圧縮して約10KB)で返します。年のファイルを一度取ったら手元に置いて、その年の日付はそこから引いてください。

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

決まった上限はありませんが、目安として1つの利用元から1秒あたり10回程度までにしてください。年のファイルを使い回せば、1年分のカレンダーでも呼び出しは1回で済みます。

ご利用にあたって

ご利用の前に利用規約をご確認ください。データの正確さや、止まらないことは保証していません。六曜・干支などの暦注は迷信・慣習としての参考情報で、科学的な根拠を示すものではありません。公式の暦(二十四節気・朔弦望など)を確かめたいときは、国立天文台 暦計算室の暦要項をご覧ください。ご質問・不具合のご連絡は、シルギアのお問い合わせ窓口から、件名に「API」と入れてお送りください。