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
- OpenAPI: https://api.jusho.dev/openapi.json
- MCP endpoint:
https://api.jusho.dev/mcp - MCP tool:
normalize_address
認証
現在、API は認証不要で公開しています。利用にはレート制限とAPI利用条件が適用されます。提供方法は将来変更する場合があります。
現在、無料で提供しています(レート制限の範囲内)。商用利用も可能です。大量のリクエストが必要な場合や個別の要件がある場合はお問い合わせください。
エンドポイント
/normalize/batch複数の住所を一括で正規化します(最大100件)。
リクエストボディ
{
"addresses": [
"東京都渋谷区渋谷2ー21ー1",
"大阪府大阪市北区梅田1-1-1"
]
}パラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| addresses | string[] | 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"]}'/normalizeクエリパラメータで住所を指定して正規化します。
クエリパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| address | string | Yes | 正規化する住所文字列(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_address | string | 正規化された完全な住所 |
| post_code | string | 郵便番号(ハイフンなし) |
| pref | string | 都道府県 |
| city | string | 市区町村 |
| town | string | 町域(丁目含む) |
| banchi | string | 番地 |
| go | string | 号 |
| building_name | string | 建物名 |
| koaza | string | 小字 |
| pref_kana | string | 都道府県(カナ) |
| city_kana | string | 市区町村(カナ) |
| town_kana | string | 町域(カナ) |
| lat | string | 緯度 |
| lng | string | 経度 |
| pref_code | string | 都道府県コード(JIS X 0401) |
| city_code | string | 市区町村コード(JIS X 0402) |
| town_code | string | 町域コード |
| match_type | string | マッチタイプ(address, jigyosyo, building 等) |
| is_jigyosyo | boolean | 事業所住所かどうか |
| is_tatemono | boolean | 大規模建物かどうか |
| version | string | API バージョン |
事業所の場合
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-1Python (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