住所正規化 API
AI エージェントの tool に、日本住所の確定値を。
表記ゆれのある住所文字列を入力すると、正規化済み住所と構造化コード
(町字 ID・lg_code・JIS コード)を必ず同じ JSON schema で返します。
データはデジタル庁アドレス・ベース・レジストリ(CC BY 4.0)準拠。
LLM 単体では解けない理由
| エージェントに必要なもの | LLM 単体 | この API |
|---|---|---|
| 表記ゆれの正規化(「6-10-1」⇄「六丁目10」) | 毎回揺れる。もっともらしい誤答が混ざる | 同じ入力に必ず同じ正解 |
| 町字 ID(machiaza_id)・lg_code・JIS コード | 重みの中に存在しない | レジストリの値をそのまま返す |
| 住所レジストリの更新への追従 | knowledge cutoff で止まる | 最新データ |
| パイプラインに流せる構造化 JSON | 出力形式が揺れ、パースが壊れる | schema 保証(OpenAPI 3.1) |
| 1 件あたりのコスト | 推論トークン課金(件数比例で高額) | ¥0.1〜0.5/回・数十 ms |
30 秒で試す(キー不要・月 5,000 回まで無料)
curl -X POST https://shirabe.dev/api/v1/address/normalize \
-H "Content-Type: application/json" \
-d '{"address": "東京都港区六本木6-10-1"}'
返るのは必ずこの形の JSON です(実レスポンス):
{
"input": "東京都港区六本木6-10-1",
"result": {
"normalized": "東京都港区六本木6丁目10",
"components": {
"prefecture": "東京都", "city": "港区", "town": "六本木6丁目",
"block": "10番", "jis_code": "13103",
"lg_code": "131032", "machiaza_id": "0028006"
},
"level": 4, "confidence": 0.93
},
"attribution": { "source": "アドレス・ベース・レジストリ(住所データ)", "license": "CC BY 4.0" }
}
複数件は POST /api/v1/address/normalize/batch(1 回で最大 100 件)。
エージェントに組み込む
OpenAPI 3.1 定義をそのまま tool / function として読み込めます。
- OpenAPI 定義:
https://shirabe.dev/api/v1/address/openapi.yaml - ChatGPT(GPTs Actions): 短縮版
https://shirabe.dev/api/v1/address/openapi-gpts.yamlを Actions に import - Claude / LangChain 等: 上記 OpenAPI から tool 定義を生成、または HTTP tool で
POST /api/v1/address/normalizeを直接指定
レスポンスの attribution(CC BY 4.0 出典)は必須フィールドとして常に同梱されるため、
エージェントの出力にそのまま出典を伝搬できます。
料金
| プラン | 月間上限 | 単価 | レート制限 |
|---|---|---|---|
| Free | 5,000 回 | 無料(キー不要) | 1 req/s |
| Starter | 200,000 回 | ¥0.5/回 | 30 req/s |
| Pro | 2,000,000 回 | ¥0.3/回 | 100 req/s |
| Enterprise | 無制限 | ¥0.1/回 | 500 req/s |
- 全プラン共通で最初の 5,000 回/月は無料。超過分のみ従量(税抜)。例: 月 30,000 件 = (30,000 − 5,000) × ¥0.5 = ¥12,500
- プラン上限に達すると 429 で止まり、それ以上は課金されません(エージェントが暴走しても請求は上限止まり)
- 単価・無料枠は据え置き運用(変更は無料枠拡張・値下げ等、利用者に有利な方向のみ)。tool 定義に価格を書いても陳腐化しません
- 決済は Stripe。キー発行・停止・復帰・解約まで全て自動、営業や問い合わせを挟みません
暦・テキスト・法人番号も使う場合は、1 本のキーにまとめる Hub License もあります。