地方公共団体コードAPI

都道府県・市区町村のコード(全国地方公共団体コード)から、団体の名前・読み・種類を引けるAPIです。合併などで廃止されたコードを指定すると、いつ・なぜ廃止され、今はどのコードになっているかまで返します。

できること
コード(5桁・検査数字付き6桁)→ 名前・読み・種類 / 廃止されたコード → 理由と今のコード / 都道府県ごとの一覧・全件 / 1970年4月1日以降の変更の履歴
費用・登録
無料・登録不要・APIキー不要(提供条件は利用状況で変わることがあります)
向いている用途
古い住所データ・名簿のコードを今のコードに直す / 年ごとの統計データを今の市区町村にそろえて突き合わせる / 入力されたコードの打ち間違いを見つける
気をつけること
止まらないことは保証していません。合併の直後は、総務省の一覧が更新されてからの反映になります。

データ: 総務省「全国地方公共団体コード」と e-Stat の標準地域コード(版は /lgcode/v1/meta.json で確認できます)

はじめかた

  1. ブラウザで開いてみる: https://api.shirugear.com/lgcode/v1/13101.json を開くと、千代田区(13101)の情報が返ります。URLの数字を調べたいコードに変えるだけです。6桁(131016)でも同じです。
  2. 廃止されたコードを開いてみる: /lgcode/v1/15215.json(2006年に長岡市に編入された栃尾市)を開くと、current_codes に今のコード(長岡市 15202)が入っています。
  3. 利用規約を確かめる: 利用規約をご確認ください。登録や申し込みは要りません。

いろいろな言語から呼ぶ

古いコードを今のコードに直す例です。見つからないコードは HTTP 404、形の違うコード・検査数字の合わない6桁は HTTP 400 になります。

const res = await fetch("https://api.shirugear.com/lgcode/v1/15215.json");
if (res.ok) {
  const d = await res.json();
  const now = d.current_codes.map((c) => c.code + " " + c.name).join("、");
  console.log(d.name + (d.current ? "(今も使われています)" : " → " + now)); // 栃尾市 → 15202 長岡市
} else {
  const e = await res.json();
  console.log(e.error.code); // lgcode_not_found など
}
curl -s https://api.shirugear.com/lgcode/v1/15215.json

# 今のコードだけ取り出す(jq を使う場合)
curl -s https://api.shirugear.com/lgcode/v1/15215.json | jq -r '.current_codes[].code'
<?php
$json = @file_get_contents('https://api.shirugear.com/lgcode/v1/15215.json');
if ($json === false) {
    // 404(見つからない)・400(形の誤り)や通信の失敗のときは false になります
    echo "見つからないか、つながりませんでした\n";
} else {
    $d = json_decode($json, true);
    $now = array_column($d['current_codes'], 'code');
    echo $d['name'], ' → ', implode(',', $now), "\n"; // 栃尾市 → 15202
}
import json
import urllib.error
import urllib.request

def current_codes(code):
    """古いコードを今のコードの配列にする(見つからなければ None)"""
    url = f"https://api.shirugear.com/lgcode/v1/{code}.json"
    try:
        with urllib.request.urlopen(url, timeout=10) as res:
            d = json.load(res)
    except urllib.error.HTTPError as e:
        if e.code in (400, 404):
            return None
        raise
    return [c["code"] for c in d["current_codes"]]

print(current_codes("15215"))  # ['15202']

多くのコードをまとめて直すときは、1件ずつ呼ばずに 変更の履歴(changes.json)を1回取って手元でたどるか、使うコードの結果を覚えておいて使い回してください。

その場で試す

コードから団体

試しに:

都道府県の団体の一覧

URLの一覧

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

URL返すもの
/lgcode/v1/{コード5桁}.json
/lgcode/v1/{コード6桁}.json
1団体(今のコードも、廃止されたコードも)。例: /lgcode/v1/13101.json・/lgcode/v1/131016.json(千代田区)
/lgcode/v1/pref.json47都道府県の一覧(コード・名前・読み・市区町村の数。約7KB)。例: /lgcode/v1/pref.json
/lgcode/v1/pref/{都道府県コード2桁}.jsonその都道府県の今の市区町村の一覧(政令指定都市とその区・特別区を含む)。例: /lgcode/v1/pref/13.json(東京都)
/lgcode/v1/all.json今の全団体(都道府県を含む 1,965件・約350KB)
/lgcode/v1/changes.json1970年4月1日以降のコードの変更の履歴(約1,080件・約390KB。圧縮して送るので転送は約65KB)
/lgcode/v1/meta.jsonデータの版(総務省の一覧の何年何月何日現在か)・出典・件数

1団体(コードから)

応答の例(今も使われているコード)

GET https://api.shirugear.com/lgcode/v1/13101.json

{
  "code": "13101",
  "code6": "131016",
  "check_digit": "6",
  "name": "千代田区",
  "name_kana": "チヨダク",
  "kind": "special_ward",
  "kind_label": "特別区",
  "prefcode": "13",
  "prefecture": "東京都",
  "prefecture_kana": "トウキョウト",
  "district": null,
  "parent": null,
  "current": true,
  "valid_from": null,
  "valid_until": null,
  "established": null,
  "abolished": null,
  "current_codes": [ { "code": "13101", "name": "千代田区", "kind": "special_ward" } ],
  "former_names": [],
  "previous_uses": [],
  "zip_city": "/zip/v1/city/13101.json",
  "note": null,
  "data_version": "2024-01-01"
}

各項目

項目の一覧を開く(23項目)
項目型内容
code文字列5桁のコード
code6文字列検査数字の付いた6桁のコード
check_digit文字列検査数字(6桁目)
name文字列名前。政令指定都市の区は「札幌市中央区」のように市の名前から(総務省の一覧と同じ書き方)。町村の名前に郡は付きません(郡は district)
name_kana文字列読み(全角カタカナ)
kind文字列種類(下の表)
kind_label文字列種類の日本語(「特別区」など)
prefcode文字列都道府県コード(2桁)
prefecture / prefecture_kana文字列都道府県名と読み
district文字列/null町村の属する郡(例: 「南佐久郡」)。市・区・東京都の島しょ部の町村などは null
parentオブジェクト/null政令指定都市の区なら、その市({"code":"01100","name":"札幌市"})
current真偽値今も使われているコードなら true
valid_from文字列/nullこのコードが使われ始めた日(YYYY-MM-DD)。1970年4月1日より前からあるコードは null
valid_until文字列/null廃止された日。今も使われていれば null
establishedオブジェクト/nullコードができたときの日・理由・元になったコード(1970年4月1日より前からあるコードは null)
abolishedオブジェクト/null廃止されたときの日・理由・移った先(下の説明)。今のコードでは null
current_codes配列今のコード。今も使われていれば自分自身。廃止されたコードは、最後までたどった今のコード
former_names配列以前の名前(古い順・今の名前は含まない)。{"name","name_kana","from","until"}
previous_uses配列同じコードを以前に使っていた別の団体(下の説明)。ほとんどのコードでは空
zip_city文字列/null郵便番号API の町域一覧の URL(郵便番号APIとのつながり)
note文字列/null補足(北方領土の村など)
data_version文字列総務省の一覧の版("2024-01-01" は令和6年1月1日現在)

種類(kind)

kind意味コードの形
prefecture都道府県下3桁が 000(例: 13000)
designated_city政令指定都市下3桁が 100〜199 の市(例: 札幌市 01100)
ward区(政令指定都市の行政区)市のコードに続く番号(例: 札幌市中央区 01101)
special_ward特別区(東京23区)13101〜13123
city市(政令指定都市を除く)下3桁が 201〜299
town町下3桁が 301〜799(郡ごとの番号)
village村同上

村が町になったとき(町制施行)や名前が変わったときはコードは変わりません。町村が市になったとき(市制施行)や、市が政令指定都市になったときはコードが変わります(総務省「全国地方公共団体コード仕様」7)。

廃止されたコード

合併などで使われなくなったコードも、HTTP 200 で返します。current が false になり、abolished に廃止された日・理由・移った先が入ります。

GET https://api.shirugear.com/lgcode/v1/15215.json

{
  "code": "15215",
  "code6": "152153",
  "name": "栃尾市",
  "name_kana": "トチオシ",
  "kind": "city",
  …
  "current": false,
  "valid_from": null,
  "valid_until": "2006-01-01",
  "established": null,
  "abolished": {
    "date": "2006-01-01",
    "reason": "absorption",
    "reason_label": "編入合併",
    "description": "栃尾市(15215)が長岡市(15202)に編入",
    "to": [ { "code": "15202", "name": "長岡市" } ]
  },
  "current_codes": [ { "code": "15202", "name": "長岡市", "kind": "city" } ],
  …
}

理由(reason)の種類

理由の一覧を開く(13種類)
reasonreason_labelコードは
absorption編入合併編入された側のコードがなくなる
new_merger新設合併関係する市町村のコードがなくなり、新しいコードができる(合併後の名前が関係市町村のどれかと同じなら、そのコードを引き継ぐ)
city_status市制施行町村のコードがなくなり、市のコードができる(市になると同時に名前を変えたものを含む)
town_status町制施行変わらない(村が町に。名前の移り変わりにだけ出る)
rename名称変更変わらない(名前の移り変わりにだけ出る)
designated_city政令指定都市への移行市のコードがなくなり、政令指定都市のコード(100〜199)ができる
ward_established区の設置区のコードができる
ward_split分区(区の一部を分けて区を新設)新しい区のコードができる
ward_division区の分割元の区のコードがなくなり、分かれた区のコードができる
ward_reorganization区の再編区のコードがなくなり、再編後の区のコードができる(浜松市 2024年)
district_change郡・支庁の区域の変更町村のコードが変わる(町村のコードは郡ごとに番号が割り当てられているため)
okinawa_reversion沖縄の本土復帰1972年5月15日に沖縄県のコードができた
otherその他北方領土の6村のコードの設定(1983年)

理由はプログラムでは reason で見分けてください。reason_label と description は説明文で、言い回しが変わることがあります。

使い直されたコード(previous_uses)

まれに、廃止されたコードが別の団体に使い直されています。たとえば 47361 は、1972年6月まで宮古郡城辺町のコードで、2002年4月からは島尻郡久米島町のコードです。このようなコードでは、今の団体(または最後の団体)を本体に、以前の団体を previous_uses に入れます(中身は abolished・current_codes などを含む同じ形です)。1970年以降で該当するのは 47361・47362 の2つです。

古いデータのコードを直すときは、そのデータの日付と valid_from/valid_until を比べて、どちらの団体かを決めてください。

6桁のコードと検査数字

全国地方公共団体コードは、5桁の後ろに打ち間違いを見つけるための検査数字を1桁付けて6桁で書くことがあります。このAPIは6桁で指定されたとき、検査数字を確かめてから5桁と同じ結果を返します。合わなければ HTTP 400(invalid_check_digit)です。

検査数字の求め方(総務省「全国地方公共団体コード仕様」11):

  1. 1〜5桁目の数字に、順に 6・5・4・3・2 を掛けて足す。
  2. その和を 11 で割った余りを求める。
  3. 11 から余りを引いた数の下1桁が検査数字(余りが 0 なら 1、1 なら 0、10 なら 1)。
13101(千代田区): 1×6 + 3×5 + 1×4 + 0×3 + 1×2 = 27
27 ÷ 11 = 2 余り 5 → 11 − 5 = 6 → 131016

// JavaScript
function checkDigit(code5) {
  const s = [...code5].reduce((a, c, i) => a + Number(c) * [6, 5, 4, 3, 2][i], 0);
  return String((11 - (s % 11)) % 10);
}

一覧(都道府県・都道府県ごと・全件)

都道府県を選んでから市区町村を選ぶ入力欄なら、まず pref.json で47都道府県を出し、選ばれた都道府県の pref/{2桁}.json を取ります。

GET https://api.shirugear.com/lgcode/v1/pref.json

{
  "count": 47,
  "prefectures": [
    { "prefcode": "01", "code": "01000", "code6": "010006", "name": "北海道", "name_kana": "ホッカイドウ", "count": 195, "url": "/lgcode/v1/pref/01.json" },
    …
  ],
  "data_version": "2024-01-01"
}
GET https://api.shirugear.com/lgcode/v1/pref/13.json

{
  "prefcode": "13",
  "code": "13000",
  "code6": "130001",
  "prefecture": "東京都",
  "prefecture_kana": "トウキョウト",
  "count": 62,
  "municipalities": [
    { "code": "13101", "code6": "131016", "name": "千代田区", "name_kana": "チヨダク", "kind": "special_ward", "district": null, "parent_code": null },
    …
  ],
  "data_version": "2024-01-01"
}

変更の履歴

/lgcode/v1/changes.json は、1970年4月1日以降にコードが変わった(または名前が変わった)ことを、古い順にまとめたものです。1件は同じ日に行われた1つの合併などです。

GET https://api.shirugear.com/lgcode/v1/changes.json

{
  "from": "1970-04-01",
  "count": 1076,
  "changes": [
    …
    {
      "date": "2005-10-01",
      "reason": "new_merger",
      "reason_label": "新設合併",
      "description": "城辺町(47371)、下地町(47372)、上野村(47373)、伊良部町(47374)、平良市(47206)が合併し、宮古島市(47214)を新設",
      "abolished": [
        { "code": "47206", "name": "平良市", "to": ["47214"] },
        …
      ],
      "established": [ { "code": "47214", "name": "宮古島市" } ],
      "continued": []
    },
    …
    {
      "date": "2019-05-01",
      "reason": "rename",
      "reason_label": "名称変更",
      "description": "篠山市(28221)が丹波篠山市(28221)に名称変更",
      "abolished": [],
      "established": [],
      "continued": [ { "code": "28221", "name": "丹波篠山市", "name_before": "篠山市" } ]
    },
    …
  ],
  "data_version": "2024-01-01"
}

郵便番号APIとのつながり

このAPIの5桁のコードは、郵便番号API の jiscode と同じです。郵便番号から引いた住所の jiscode をそのまま指定でき、逆に今のコードの zip_city から、その市区町村の町域と郵便番号の一覧(/zip/v1/city/{コード}.json)を開けます。

エラー

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

{"error":{"status":400,"code":"invalid_check_digit","message":"6桁のコードの検査数字(6桁目)が合いません。…"}}
状態codeいつ
400invalid_lgcodeコードの形が違う(5桁・6桁の半角数字でない、都道府県コードが2桁でないなど)
400invalid_check_digit6桁で指定したが、検査数字が合わない
404lgcode_not_foundそのコードの団体は無い(1970年4月1日より前に廃止されたコード・一部事務組合などのコードを含む)
404not_foundURLが違う
405method_not_allowedGET / HEAD 以外で呼んだ

データの出典・更新・キャッシュ

変更の方針と更新履歴

更新履歴

2026年11月5日
47都道府県の一覧 /lgcode/v1/pref.json を追加。
2026年11月
公開(総務省の一覧は令和6年1月1日現在、履歴は1970年4月1日〜2024年1月1日)。

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

用語の説明

全国地方公共団体コード
総務省(当時は自治省)が昭和43年に定めた、都道府県・市区町村などを表す番号です。都道府県コード2桁+市区町村3桁の5桁に、検査数字1桁を付けて6桁で書きます。「市区町村コード」「団体コード」とも呼ばれます。
標準地域コード
総務省統計局が統計に使う地域の番号です。市区町村の部分は全国地方公共団体コードの5桁と同じです。
検査数字
コードの打ち間違いを見つけるために、5桁から計算して付ける6桁目の数字です(求め方)。
編入合併・新設合併
編入合併はある市町村が別の市町村に入る合併(入った側のコードがなくなる)、新設合併は関係する市町村をすべて廃止して新しい市町村をつくる合併です。
市制施行・町制施行
町村が市に(市制施行)、村が町に(町制施行)なることです。市制施行ではコードが変わり、町制施行では変わりません。
政令指定都市・区
政令で指定された人口50万人以上の市で、市の中に区(行政区)を置きます。市と区のそれぞれにコードがあります。
特別区
東京23区のことです。市と同じように1つの地方公共団体です。

よくある質問

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

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

5桁と6桁のどちらで指定すればよいですか?

どちらでも同じ結果が返ります。6桁で指定したときは6桁目の検査数字を確かめ、合わなければ HTTP 400 を返すので、入力の打ち間違いを見つけられます。

合併でなくなった市町村のコードも引けますか?

引けます。1970年4月1日以降に廃止されたコードなら、廃止された日・理由(編入合併・新設合併・市制施行など)・移った先のコードと、何段も合併していても最後までたどった今のコードを返します。

郵便番号APIの市区町村コード(jiscode)と同じものですか?

同じです。郵便番号APIの jiscode(5桁)をそのまま指定できます。郵便番号APIは政令指定都市を区ごとに扱うので、政令指定都市そのもののコード(札幌市 01100 など)と都道府県のコードは郵便番号APIにはありません(郵便番号APIとのつながり)。

データはどれくらい新しいですか?

総務省の一覧の版(何年何月何日現在か)を meta.json の data_version で返します。合併などでコードが変わったときに作り直します。最新で正確な情報は総務省のページでご確認ください。

一部事務組合や広域連合のコードは引けますか?

引けません。このAPIの対象は都道府県と市区町村(政令指定都市の区・特別区を含む)です。

ご利用にあたって

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