API ドキュメント

ゴミ収集カレンダーの日程データを、外部アプリケーションやウェブサイトから取得するための HTTP API です。レスポンスはすべて JSON で返ります。

AI エージェントに渡す

この API の使い方をまとめたテキストをコピーします。 Claude や ChatGPT などのコーディングエージェントにそのまま貼り付けると、 仕様を読ませずに実装を頼めます。

APIキーは YOUR_API_KEY のままです。貼り付けたあとで実際のキーに置き換えてください。
目次

基本情報・認証

ベースURLhttps://calendar.gomi53.com/api/v1
メソッドGET のみ(POST 等は 405
形式application/json; charset=UTF-8
認証APIキーが必要(後述)
CORSAccess-Control-Allow-Origin: *(ブラウザから直接呼び出し可)
タイムゾーンAsia/Tokyo

認証

すべてのエンドポイントで API キーが必要です。以下のどちらかの方法で渡してください。

方法指定のしかた
リクエストヘッダ
(推奨)
X-API-Key: {発行されたキー}
クエリパラメータ?api_key={発行されたキー}
curl -H "X-API-Key: YOUR_API_KEY" \
     "https://calendar.gomi53.com/api/v1/prefectures"
キーの発行: API キーはこちらで個別に発行します。利用目的を添えてご連絡ください。 キーが無い・無効な場合は 401 Unauthorized を返します。 クエリパラメータ方式はアクセスログにキーが残るため、 ヘッダを使えない環境での代替手段としてお考えください。

現在の収録状況

11都道府県
29市区町村
407地区
174分別品目
2115収集ルール

※ 全国を網羅したものではありません。収録済みのエリアは収録エリア一覧をご確認ください。

値の定義(曜日・週の数え方)

スケジュールを自前で解釈する場合、以下の3つの値の意味を正しく理解する必要があります。

day_of_week — 曜日

0 が日曜です(PHP の date('w') と同じ)。ISO 8601(月曜=1)とは異なります。

0123456
曜日

schedule_type — 収集の周期

意味week_number
weekly毎週null
nth_week第N週のみ1〜5
biweekly_odd隔週(第1・3・5週)null
biweekly_even隔週(第2・4週)null

week_calculation_type — 「第N週」の数え方

自治体によって「第2水曜」の定義が異なります。市区町村ごとに設定されており、 /data のレスポンスに含まれます。

意味
occurrence その月でその曜日が何回目に現れるかで数える。
例: 月初が金曜の月の第1水曜 = その月の最初の水曜日。
calendar_row 壁掛けカレンダーの行番号で数える。
例: 1日が金曜なら、その週が第1週。翌週の水曜が第2週の水曜になる。
重要: この2つは結果が1週ずれることがあります。 日付を自前で計算せず、後述の /data エンドポイント (サーバー側で展開済みの日付リストを返す)を使うことを強く推奨します。

エンドポイント

1. カレンダーデータの取得(推奨)

指定エリアの、指定月の収集日を日付展開済みで返します。 週の数え方や祝日振替はサーバー側で処理済みのため、クライアントで日付計算をする必要がありません。 通常はこのエンドポイントだけで足ります。

GET/api/v1/data
パラメータ必須説明
id 必須 * エリアID。{prefecture_id}-{city_id}-{district_id} の形式。
例: 11-13-186
prefecture_name
city_name
district_name
必須 * id の代わりに名称で指定する場合に使用(完全一致)。
例: prefecture_name=東京都&city_name=品川区&district_name=大井6丁目
year 任意 西暦(2000〜2100)。省略時は本年。
month 任意 1〜12。省略すると年度単位(4月〜翌年3月の12か月分)を一括で返します。 レスポンスの構造が変わる点に注意してください。

* id または(prefecture_name + city_name)のどちらかが必須です。

地区(district)の指定を強く推奨します。 地区を省略すると、その市区町村に属する全地区の収集が同じ日に並んで返ります。 各件には district_name が付くため区別はできますが、 特定の住所向けに表示する場合は必ず地区まで指定してください。

リクエスト例

curl -H "X-API-Key: YOUR_API_KEY" \\
     "https://calendar.gomi53.com/api/v1/data?id=11-13-186&year=2026&month=9"

レスポンス例(month 指定あり)

{
  "area": {
    "prefecture": { "id": 11, "name": "東京都" },
    "city":       { "id": 13, "name": "品川区" },
    "district":   { "id": 186, "name": "大井6丁目" }
  },
  "calendar": {
    "year": 2026,
    "month": 9,
    "week_calculation_type": "occurrence",
    "days": [
      {
        "date": "2026-09-01",
        "day": 1,
        "day_of_week": 2,
        "week_number": 1,
        "trash_types": [
          {
            "id": 1,
            "name": "可燃ごみ",
            "color": "#e53935",
            "icon": "",
            "district_id": 186,
            "district_name": "大井6丁目",
            "is_special": false,
            "note": null
          }
        ]
      }
    ]
  },
  "trash_types": [ ... ],
  "notes": "収集日の朝8時までに出してください",
  "last_updated": "2026-09-22 12:55:25"
}
フィールド説明
calendar.days[]その月の全日分。収集がない日は trash_types が空配列。
days[].trash_types[].district_id
days[].trash_types[].district_name
その収集がどの地区のものかを示す。市区町村全体に適用されるルールの場合は null
地区を指定せずに取得した場合、同じ日に複数地区の収集が並ぶため、この値で区別する。
days[].is_specialtrue の場合、祝日振替などの特例収集日。
days[].note特例日の補足。通常は null
notesエリア備考。地区→市区町村→都道府県の順に、最初に見つかったもの。

レスポンス例(month 省略時 = 年度一括)

{
  "area": { ... },
  "calendar": {
    "fiscal_year": 2026,
    "months": [
      { "year": 2026, "month": 4,  "week_calculation_type": "occurrence", "days": [ ... ] },
      { "year": 2026, "month": 5,  ... },
      { "year": 2027, "month": 3,  ... }
    ]
  },
  ...
}
注意: 年度一括のレスポンスは calendar.month / calendar.days を持たず、 calendar.fiscal_yearcalendar.months[] になります。 単月指定とはキー構造が異なるため、パース処理を分岐させてください。

2. 都道府県一覧

GET/api/v1/prefectures

階層をたどる起点です。パラメータは任意で、name を付けると名称の部分一致で絞り込めます。

curl -H "X-API-Key: YOUR_API_KEY" "https://calendar.gomi53.com/api/v1/prefectures"

[
  {
    "id": 11,
    "name": "東京都",
    "display_order": 0,
    "created_at": "...",
    "updated_at": "..."
  }
]

3. 市区町村一覧

GET/api/v1/cities?prefecture_id={id}
パラメータ必須説明
prefecture_id必須都道府県ID(一覧参照)
name任意市区町村名の部分一致で絞り込み
curl -H "X-API-Key: YOUR_API_KEY" \\
     "https://calendar.gomi53.com/api/v1/cities?prefecture_id=11"

[
  {
    "id": 13,
    "prefecture_id": 11,
    "name": "品川区",
    "display_order": 0,
    "week_calculation_type": "occurrence",
    "created_at": "...",
    "updated_at": "..."
  }
]

4. 地区一覧

GET/api/v1/districts?city_id={id}
パラメータ必須説明
city_id必須市区町村ID
name任意地区名の部分一致で絞り込み
curl -H "X-API-Key: YOUR_API_KEY" \\
     "https://calendar.gomi53.com/api/v1/districts?city_id=13"

[
  { "id": 186, "city_id": 13, "name": "大井6丁目", "display_order": 0, ... }
]

5. 分別品目一覧

GET/api/v1/trash_types

パラメータなしで全品目。prefecture_id / city_id / district_id を付けるとそのエリアで実際に使われている品目に絞り込みます。

curl -H "X-API-Key: YOUR_API_KEY" \\
     "https://calendar.gomi53.com/api/v1/trash_types"

[
  { "id": 1, "name": "可燃ごみ", "description": "", "color": "#e53935", "icon": "", ... }
]

color はカレンダー表示用のカラーコード、icon は Font Awesome のクラス名(未設定の場合は空文字)です。

6. 収集ルールの生データ(廃止)

GET/api/v1/schedules
このエンドポイントは廃止しました。410 Gone を返します。 日付展開前の「第N週・曜日」形式では、14日ちょうどの隔週周期、年末年始の休止と それに続く1週ずれ、第1週の数え方の地域差を表現できず、誤った収集日を返していました。
収集日は /api/v1/data を使ってください。こちらは規則を展開済みの日付を返すため、 上記のいずれも正しく反映されます。

エラーレスポンス

エラー時は HTTP ステータスコードと、error キーを含む JSON を返します。

{ "error": "Area not found" }
コード意味
400必須パラメータの欠落、または値が不正
401APIキーが未指定、または無効
404指定されたエリアが見つからない/存在しないエンドポイント
405GET 以外のメソッド
500サーバー内部エラー
該当データがない場合について: 収録されていないエリアに対しては、推測や近隣データでの代替は一切行わず 404 を返します。 200 で空のカレンダーが返った場合は「そのエリアは収録済みだが、その月に収集日がない」を意味します。 両者を区別して扱ってください。

収録エリア一覧

prefecture_id / city_id はここでも確認できます (APIから取得する場合は /api/v1/prefectures/api/v1/cities を使ってください)。

都道府県prefecture_id 市区町村city_id 地区数週の数え方
京都府 2 宇治市 3 10 calendar_row
長野県 3 長野市 5 0 occurrence
広島県 4 広島市中区 6 14 occurrence
福岡県 5 福岡市博多区 7 36 occurrence
宮城県 6 仙台市青葉区 8 12 occurrence
愛知県 7 名古屋市中区 9 10 occurrence
岡山県 8 倉敷市水島地区 10 16 occurrence
静岡県 9 富士市 11 14 occurrence
岐阜県 10 岐阜市 12 13 occurrence
東京都 11 品川区 13 77 occurrence
東京都 11 港区 15 41 occurrence
滋賀県 1 多賀町 24 2 occurrence
滋賀県 1 大津市 4 21 occurrence
滋賀県 1 守山市 14 11 occurrence
滋賀県 1 彦根市 27 10 occurrence
滋賀県 1 愛荘町 25 2 occurrence
滋賀県 1 日野町 21 4 occurrence
滋賀県 1 東近江市 28 14 occurrence
滋賀県 1 栗東市 16 3 occurrence
滋賀県 1 湖南市 26 4 occurrence
滋賀県 1 甲良町 23 2 occurrence
滋賀県 1 甲賀市 20 16 occurrence
滋賀県 1 竜王町 22 2 occurrence
滋賀県 1 米原市 30 17 occurrence
滋賀県 1 草津市 2 21 occurrence
滋賀県 1 豊郷町 19 2 occurrence
滋賀県 1 近江八幡市 29 22 occurrence
滋賀県 1 野洲市 17 4 occurrence
滋賀県 1 高島市 18 7 occurrence

地区IDは /api/v1/districts?city_id={id} で取得してください。

利用上の注意

最終更新: 2026-09-22 / 本ページは ゴミカレンダー が提供しています。