地方公共団体コードAPI
都道府県・市区町村のコード(全国地方公共団体コード)から、団体の名前・読み・種類を引けるAPIです。合併などで廃止されたコードを指定すると、いつ・なぜ廃止され、今はどのコードになっているかまで返します。
- できること
- コード(5桁・検査数字付き6桁)→ 名前・読み・種類 / 廃止されたコード → 理由と今のコード / 都道府県ごとの一覧・全件 / 1970年4月1日以降の変更の履歴
- 費用・登録
- 無料・登録不要・APIキー不要(提供条件は利用状況で変わることがあります)
- 向いている用途
- 古い住所データ・名簿のコードを今のコードに直す / 年ごとの統計データを今の市区町村にそろえて突き合わせる / 入力されたコードの打ち間違いを見つける
- 気をつけること
- 止まらないことは保証していません。合併の直後は、総務省の一覧が更新されてからの反映になります。
データ: 総務省「全国地方公共団体コード」と e-Stat の標準地域コード(版は /lgcode/v1/meta.json で確認できます)
はじめかた
- ブラウザで開いてみる: https://api.shirugear.com/lgcode/v1/13101.json を開くと、千代田区(13101)の情報が返ります。URLの数字を調べたいコードに変えるだけです。6桁(
131016)でも同じです。 - 廃止されたコードを開いてみる: /lgcode/v1/15215.json(2006年に長岡市に編入された栃尾市)を開くと、
current_codesに今のコード(長岡市 15202)が入っています。 - 利用規約を確かめる: 利用規約をご確認ください。登録や申し込みは要りません。
いろいろな言語から呼ぶ
古いコードを今のコードに直す例です。見つからないコードは 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.json | 47都道府県の一覧(コード・名前・読み・市区町村の数。約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.json | 1970年4月1日以降のコードの変更の履歴(約1,080件・約390KB。圧縮して送るので転送は約65KB) |
/lgcode/v1/meta.json | データの版(総務省の一覧の何年何月何日現在か)・出典・件数 |
- コードは半角数字で指定します。5桁(都道府県コード2桁+市区町村3桁)でも、検査数字の付いた6桁でもかまいません。都道府県は
13000(6桁なら130001)のように下3桁が 000 です。 - 都道府県コードは
01(北海道)〜47(沖縄県)です。 - 対象は都道府県・市区町村(政令指定都市の区・特別区を含む)です。一部事務組合・広域連合のコード(下3桁が 801〜999)と、集計用の郡・支庁のコードは対象外です。
- 呼び出しは
GET(またはHEAD)だけです。
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" } ],
…
}
abolished.dateは廃止された日です。この日から移った先のコードが使われます(例: 2006年1月1日の住所なら長岡市)。abolished.toは、そのとき移った先(名前はその日のもの)です。区の再編などで2つ以上に分かれたときは複数入ります(例: 浜松市北区 22135 → 中央区と浜名区)。current_codesは、移った先がさらに合併しているときも最後までたどった今のコードです。市が政令指定都市になった場合は、区ではなく市のコードになります(例: 熊本市 43201 → 43100)。descriptionは e-Stat の説明文そのままです(「中道町(19326)と上九一色村(19341)大字梯及び古関が甲府市(19201)に編入」など)。同じ日に2つの変更にまたがるときは「/」でつないでいます。
理由(reason)の種類
理由の一覧を開く(13種類)
| reason | reason_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〜5桁目の数字に、順に 6・5・4・3・2 を掛けて足す。
- その和を 11 で割った余りを求める。
- 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"
}
pref.jsonのcountは、その都道府県のpref/{2桁}.jsonのcount(政令指定都市の市と区の両方を数えた数)と同じです。urlはその一覧の場所です。municipalitiesは今の団体だけで、コードの順です。政令指定都市はその市と区の両方が入ります(区はparent_codeに市のコード)。/lgcode/v1/all.jsonは都道府県を含む今の全団体をitemsに入れたものです(各件にprefcode・prefectureも付きます)。
変更の履歴
/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"
}
abolishedはなくなったコード(toは移った先)、establishedはできたコード、continuedはコードは変わらずに関わった団体(編入した側の市・名前が変わった町など。名前が変わったときだけname_before)です。- 境界の変更(コードの変わらないもの)と、中核市などへの移行は入れていません。
- 統計データを今の市区町村にそろえるときは、古いデータの年の翌日以降の変更を順にたどってください(1件ずつのURLの
current_codesは、その結果を前もって計算したものです)。
郵便番号APIとのつながり
このAPIの5桁のコードは、郵便番号API の jiscode と同じです。郵便番号から引いた住所の jiscode をそのまま指定でき、逆に今のコードの zip_city から、その市区町村の町域と郵便番号の一覧(/zip/v1/city/{コード}.json)を開けます。
- 郵便番号APIの市区町村(1,892件)は、このAPIの今の市・特別区・政令指定都市の区・町・村と一致します(2026年11月に確認)。
- 郵便番号APIは政令指定都市を区ごとに扱うので、政令指定都市そのもの(札幌市 01100 など)と都道府県は
zip_cityがnullです。 - 北方領土の6村(01695〜01700)は総務省の一覧にありますが、郵便番号データにはありません。
- 郵便番号APIの
cityは町村に郡の名前が付きます(「南佐久郡小海町」)。このAPIではdistrict(郡)とname(町村)に分けています。
エラー
うまくいかないときは、HTTPの状態コードと、次の形の JSON を返します。code は固定の値なので、プログラムで見分けるときはこれを使ってください(message は説明文で、言い回しが変わることがあります)。
{"error":{"status":400,"code":"invalid_check_digit","message":"6桁のコードの検査数字(6桁目)が合いません。…"}}
| 状態 | code | いつ |
|---|---|---|
| 400 | invalid_lgcode | コードの形が違う(5桁・6桁の半角数字でない、都道府県コードが2桁でないなど) |
| 400 | invalid_check_digit | 6桁で指定したが、検査数字が合わない |
| 404 | lgcode_not_found | そのコードの団体は無い(1970年4月1日より前に廃止されたコード・一部事務組合などのコードを含む) |
| 404 | not_found | URLが違う |
| 405 | method_not_allowed | GET / HEAD 以外で呼んだ |
データの出典・更新・キャッシュ
- 今の団体: 総務省「全国地方公共団体コード」の「都道府県コード及び市区町村コード」(Excel)。名前・読み・6桁コードはこれによります。読みは総務省の半角カナを全角にしたものですが、小さい「ョ・ュ・ャ」が大きい字になっていた14件(「ギヨウダシ」=行田市など)は、e-Stat と郵便番号データの読みに合わせて直しています。
- 履歴: 総務省統計局「統計に用いる標準地域コード」の統計LOD(e-Stat)。市区町村の5桁は全国地方公共団体コードと同じです。記録は1970年4月1日からなので、それより前の変更は分かりません(
valid_fromがnull)。北海道の町村の郡もここから取っています。 - 照合: 作るたびに、総務省の一覧の件数(1,718市町村=792市・743町・183村、特別区23、政令指定都市20とその区171)、総務省の改正一覧表(2005年4月1日以降)の欠番・新設と e-Stat の履歴(日付まで)、検査数字、郵便番号APIの市区町村コードを突き合わせ、合わなければ作り直しを止めます。
- データの版(
data_version): 総務省の一覧が何年何月何日現在かです("2024-01-01"は令和6年1月1日現在)。/lgcode/v1/meta.jsonに作った日時(built_at・UTC)と件数があります。 - 更新: コードは市町村の合併などのときにしか変わりません。総務省の一覧が更新されたら作り直します(毎日の自動更新ではありません)。
- キャッシュ: 応答は1日(エラーは1時間)キャッシュしてかまいません。
ETag/Last-Modifiedに対応しているので、変わっていなければ 304 が返ります。 - 呼び出し回数の目安: 決まった上限はありませんが、1つの利用元から1秒あたり10回程度までにしてください。大量のコードを直すときは
all.json・changes.jsonを1回取って使ってください。
変更の方針と更新履歴
- v1 の中では、項目を足すことはあっても、今ある項目の名前や意味は変えません。知らない項目が増えていても無視するように作ってください。
reasonとkindの値が増えることもあります。 - 互換性のない変更は、URLの版を分けて(
/lgcode/v2/など)行います。v1 を終わらせるときは、できるかぎり6か月以上前にこのページでお知らせします。 - 提供条件(無料・登録不要・アクセス回数の上限など)は、利用状況に応じて変えることがあります(利用規約第4条)。
更新履歴
- 2026年11月5日
- 47都道府県の一覧
/lgcode/v1/pref.jsonを追加。 - 2026年11月
- 公開(総務省の一覧は令和6年1月1日現在、履歴は1970年4月1日〜2024年1月1日)。
機械で読める仕様(型定義・OpenAPI)
- TypeScript の型定義:
/lgcode/types.d.ts - OpenAPI 3.1:
/lgcode/openapi.json(コード生成やテストに使えます)
用語の説明
- 全国地方公共団体コード
- 総務省(当時は自治省)が昭和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」と入れてお送りください。