DEVELOPER DOCS

API ドキュメント

概要

Jusho API は日本の住所を正規化するための REST API です。 表記ゆれ(全角/半角、漢数字、「の」区切り等)を自動的に修正し、 構造化された住所データを返します。

ベース URL: https://api.jusho.dev

AI Agent / MCP / OpenAPI

LLMやOCRから抽出した住所候補は、そのまま保存せず、Jushoで正規化・構造化してから後続システムへ渡すことを推奨します。

Agent向け

Agentには住所を推測だけで補完させず、保存前に正規化APIまたはMCPツールを呼ばせます。

抽出した住所をJushoで正規化してください。
正規化できない場合は元文字列を残してください。
人間確認に回してください。

OpenAPI / MCP

認証

現在、API は認証不要で公開しています。利用にはレート制限とAPI利用条件が適用されます。提供方法は将来変更する場合があります。

現在、無料で提供しています(レート制限の範囲内)。商用利用も可能です。大量のリクエストが必要な場合や個別の要件がある場合はお問い合わせください。

エンドポイント

POST/normalize/batch

複数の住所を一括で正規化します(最大100件)。

リクエストボディ

{
  "addresses": [
    "東京都渋谷区渋谷2ー21ー1",
    "大阪府大阪市北区梅田1-1-1"
  ]
}

パラメータ

名前必須説明
addressesstring[]Yes正規化する住所文字列の配列(最大100件)

curl 例

curl -X POST https://api.jusho.dev/normalize/batch \
  -H "Content-Type: application/json" \
  -d '{"addresses": ["東京都渋谷区渋谷2ー21ー1", "大阪府大阪市北区梅田1-1-1"]}'
GET/normalize

クエリパラメータで住所を指定して正規化します。

クエリパラメータ

名前必須説明
addressstringYes正規化する住所文字列(URLエンコード必須)

curl 例

curl -G "https://api.jusho.dev/normalize" \
  --data-urlencode "address=東京都渋谷区渋谷2ー21ー1"

GET では住所文字列がリクエストURLの一部としてアクセスログに記録されます。機微な住所を扱う場合は、住所をリクエストボディで送信するPOSTのご利用を推奨します。詳細はデータの取扱いを参照してください。

レスポンス

GET /normalize 成功時 (200 OK)

{
  "full_address": "東京都渋谷区渋谷二丁目21-1",
  "post_code": "1500002",
  "pref": "東京都",
  "city": "渋谷区",
  "town": "渋谷二丁目",
  "banchi": "21",
  "go": "1",
  "building_name": "",
  "koaza": "",
  "pref_kana": "トウキョウト",
  "city_kana": "シブヤク",
  "town_kana": "シブヤ(ツギノビルヲノゾク)",
  "lat": "35.659609",
  "lng": "139.705829",
  "pref_code": "13",
  "city_code": "13113",
  "town_code": "131130014002",
  "citycode": "13113",
  "match_type": "address",
  "is_jigyosyo": false,
  "is_tatemono": false,
  "version": "0.3.6",
  "kokudo_version": "2026.01.25",
  "kenall_version": "2026.01.25"
}

POST /normalize/batch 成功時 (200 OK)

{
  "total": 2,
  "success_count": 2,
  "error_count": 0,
  "results": [
    {
      "input": "東京都渋谷区渋谷2ー21ー1",
      "success": true,
      "result": { "full_address": "東京都渋谷区渋谷二丁目21-1", ... },
      "error": null
    },
    ...
  ]
}

レスポンスフィールド

フィールド説明
full_addressstring正規化された完全な住所
post_codestring郵便番号(ハイフンなし)
prefstring都道府県
citystring市区町村
townstring町域(丁目含む)
banchistring番地
gostring
building_namestring建物名
koazastring小字
pref_kanastring都道府県(カナ)
city_kanastring市区町村(カナ)
town_kanastring町域(カナ)
latstring緯度
lngstring経度
pref_codestring都道府県コード(JIS X 0401)
city_codestring市区町村コード(JIS X 0402)
town_codestring町域コード
match_typestringマッチタイプ(address, jigyosyo, building 等)
is_jigyosyoboolean事業所住所かどうか
is_tatemonoboolean大規模建物かどうか
versionstringAPI バージョン

事業所の場合

is_jigyosyo: true の場合、追加で jigyosyo_info が含まれます。

{
  "is_jigyosyo": true,
  "jigyosyo_info": {
    "jigyosyo_name": "経済産業省",
    "jigyosyo_name_kana": "ケイザイサンギヨウシヨウ",
    "handling_office": "銀座",
    "address_detail": "1丁目3-1"
  }
}

大規模建物の場合

is_tatemono: true の場合、追加で building_info が含まれます。

{
  "is_tatemono": true,
  "building_info": {
    "building": "六本木六本木ヒルズ森タワー",
    "building_short": "六本木ヒルズ森タワー",
    "floor": "45",
    "floor_kanji": "四十五階",
    "room": "4501"
  }
}

エラーハンドリング

エラー発生時は適切な HTTP ステータスコードと JSON レスポンスを返します。

400 Bad Request

{
  "detail": "address is required"
}

422 Unprocessable Entity

{
  "detail": "住所を解析できませんでした"
}

レート制限

IPごとの制限
100 リクエスト/分
サービス全体
50,000 リクエスト/時

制限値は安定運用のため変更する場合があります。HTTP 429を受け取った場合は時間を置いて再試行してください。 大量利用が必要な場合はお問い合わせください。現在の状態はAPI Statusで確認できます。

使用例

JavaScript (fetch)

const response = await fetch('https://api.jusho.dev/normalize/batch', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ addresses: ['東京都渋谷区渋谷2ー21ー1'] })
});
const data = await response.json();
console.log(data.results[0].result.full_address); // 東京都渋谷区渋谷二丁目21-1

Python (requests)

import requests

response = requests.post(
    'https://api.jusho.dev/normalize/batch',
    json={'addresses': ['東京都渋谷区渋谷2ー21ー1']}
)
data = response.json()
print(data['results'][0]['result']['full_address'])  # 東京都渋谷区渋谷二丁目21-1