重要なお知らせ吸収分割公告 — ケンオール事業の権利義務承継についてお知らせ一覧 →

住所→郵便番号API リファレンス

要約: 与えられた検索クエリから該当する郵便区画を取得し、住所文字列を正規化するAPI。フリーテキスト検索 (住所そのまま) と構文検索 (項目別・ファセット) の2モード、バッチAPI、データ種別フィルタ (エリア/ビル/個別事業所) に対応。

情報

このページは技術リファレンスです。ユースケース・料金・導入事例はこちら

ヒント

APIキーをお持ちでない方は クイックスタート から。共通仕様 (認証・HTTPステータス) は API共通仕様 へ。

エンドポイント一覧この見出しへのリンク

メソッドパス用途
GET/v1/postalcode/?q=...&t=...住所→郵便番号の検索・住所正規化 (メイン)
POST/v1/batch/postalcode/searchバッチでまとめて検索 (バッチAPIオプション・シークレットキー必須)

共通仕様この見出しへのリンク

項目内容
認証Authorization: Token YOUR_API_KEY
プランスタンダードプラン以上 (詳細は 料金プラン)
Content-Typeapplication/json

検索クエリの2モードこの見出しへのリンク

本APIには2種類の検索クエリがあり、用途で使い分けます。

フリーテキスト検索 t構文検索 q
使い方住所文字列をそのまま渡すクエリ構文で項目別・ファセット指定
t=東京都千代田区麹町三丁目12-14q=神奈川県 AND 日本郵便
住所正規化機能✅ あり (レスポンスの query に正規化結果)
項目指定 (city:〜 等)不可✅ 可
ファセット指定 (_facet:/…)不可✅ 可
事業所名検索不可 (住所文字列のみ)✅ 可 (大口事業所個別番号データを対象)
大口事業所個別番号・ビル郵便番号デフォルト検索対象に含む_type / _structure で絞り込み可

両者は併用可能です。tq を同時に指定すると暗黙的に AND で結合されます (例: フリーテキストで検索しつつ _structure:1 でエリア郵便番号のみに絞る)。

与えられた検索クエリを元に、該当する郵便区画のリソースを取得します。さらに、検索クエリに含まれる住所文字列を正規化します。

リソースURLこの見出しへのリンク

https://api.kenall.jp/v1/postalcode/?q=...&t=...&offset=...&limit=...&facet=...&version=...

クエリパラメータこの見出しへのリンク

名前必須説明
qstringqt のいずれかが必須構文検索クエリ。項目別検索・ファセット指定など複雑な検索を行う"神奈川県 AND 日本郵便"
tstringqt のいずれかが必須フリーテキスト検索クエリ。住所文字列で検索。住所正規化機能も同時実行"東京都千代田区麹町3丁目12-14麹町駅前ヒルトップ8階"
offsetnumber省略可ページネーション用オフセット値0(デフォルト)
limitnumber省略可最大取得件数。1〜100 の範囲100(デフォルト)
facetstring省略可取得したいファセットの階層を指定 (/ 始まり)"/宮城県"
versionstring省略可取得したい郵便番号データのバージョン (YYYY-MM-DD)"2021-02-26"

フリーテキスト検索の仕様この見出しへのリンク

フリーテキスト検索は、入力した住所文字列を自動で分割して検索を実行します。同時に、入力住所が正規化された結果がレスポンスに含まれます。

curl サンプルこの見出しへのリンク

curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.kenall.jp/v1/postalcode/?t=東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F&limit=1"

レスポンス例この見出しへのリンク

{
  "version": "2022-01-31",
  "data": [
    {
      "jisx0402": "13101",
      "old_code": "102",
      "postal_code": "1020083",
      "prefecture_kana": "トウキョウト",
      "city_kana": "チヨダク",
      "town_kana": "コウジマチ",
      "town_kana_raw": "コウジマチ",
      "prefecture": "東京都",
      "city": "千代田区",
      "town": "麹町",
      "koaza": "",
      "kyoto_street": "",
      "building": "",
      "floor": "",
      "town_partial": false,
      "town_addressed_koaza": false,
      "town_chome": true,
      "town_multi": false,
      "town_raw": "麹町",
      "town_jukyohyoji": false,
      "update_status": 0,
      "update_reason": 0,
      "corporation": null
    }
  ],
  "query": {
    "q": null,
    "t": "東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F",
    "prefecture": "東京都",
    "county": null,
    "city": "千代田区",
    "city_ward": null,
    "town": "麹町",
    "kyoto_street": null,
    "block_lot_num": "3-12-14",
    "building": "麹町駅前ヒルトップ",
    "floor_room": "8F"
  },
  "count": 1280,
  "offset": 0,
  "limit": 1,
  "facets": null
}

住所正規化機能 (query.* フィールド)この見出しへのリンク

t パラメータで送信した住所文字列を、項目別に分解した結果が query オブジェクトに格納されます。住所マスタクレンジング目的で本APIを使う場合は、この query だけ取り出して使えます。

t が入力クエリで、prefecture 以降のフィールドが正規化された住所要素です。q は構文検索用のクエリのため、住所正規化機能では使用しません (フリーテキスト検索時は null)。上記の例では、三丁目12-14 という番地文字列が "3-12-14" という形に正規化されています。

フィールド説明
tstring / null入力した t 文字列そのもの"東京都千代田区麹町三丁目12-14..."
qstring / null入力した q 文字列そのもの (フリーテキスト時は null)null
prefecturestring / null正規化された都道府県名"東京都"
countystring / null正規化された郡名"西多摩郡"
citystring / null正規化された市区町村名"瑞穂町"
city_wardstring / null正規化された政令指定都市の行政区名"美浜区"
townstring / null正規化された町域名 (大字または街区名)"麹町"
kyoto_streetstring / null正規化された京都市特有の通り名"先斗町通四条上る"
block_lot_numstring / null正規化された番地。住居表示の行われている地域では丁目・番地・号を、そうでない地域では番地の部分を、半角算用数字およびハイフン繋ぎにしたもの"3-12-14"
buildingstring / null正規化された建物名"麹町駅前ヒルトップ"
floor_roomstring / null正規化された階名・部屋番号"8F" / "8階801号"
ヒント

住所正規化「だけ」使う場合のヒント: limit=1 を指定して取得件数を絞り、query オブジェクトのみアプリ側で利用します。data は無視してOK。

構文検索の仕様この見出しへのリンク

基本文法この見出しへのリンク

  • 検索ワードは2文字以上で、部分一致します
  • 検索ワード間は半角スペース・タブ・改行で区切る
  • キーワードなし → OR として扱い BM25 スコアで順位付け (短いテキストが対象のため全ワード一致が実質 AND と同等の結果になる)
  • AND: 「両方を含む」 / OR: 「いずれかを含む」
  • -キーワード: 「キーワードを含まない」(NOT検索・マイナス演算子)
意味
神奈川県 AND 日本郵便両方を含むレコード
神奈川県 OR 日本郵便いずれか (または両方) を含むレコード
神奈川県 日本郵便OR + BM25 (短テキスト対象のため両方に合致するレコードが実質 AND 相当で上位)
神奈川県 -ビル「神奈川県」を含み、かつ「ビル」を含まないレコード (NOT検索)

項目別検索 (識別子:値)この見出しへのリンク

特定の項目だけを対象に検索したい場合、項目名:キーワード の形式を使います。

識別子意味
prefecture都道府県
city市区町村
town町域
koaza小字
kyoto_street京都市特有の通り名
building建物名
floor階数
block_lot大口事業所個別番号の場合、町域以下の住所
corporation大口事業所個別番号の場合、事業所名
corporation_kana大口事業所個別番号の場合、事業所名の読み仮名 (全角カタカナ)

例: 京都市上京区で通り名に「上る」を含む住所この見出しへのリンク

q=city:京都市上京区 AND kyoto_street:上る

構文検索クエリのレスポンス例この見出しへのリンク

構文検索で大口事業所個別番号データが合致した場合、data[].corporation に事業所情報が格納されます (フリーテキスト検索のレスポンスと異なり query の正規化フィールドは null)。

{
  "version": "2022-01-31",
  "data": [
    {
      "jisx0402": "14131",
      "old_code": "210",
      "postal_code": "2108797",
      "prefecture": "神奈川県",
      "city": "川崎市川崎区",
      "town": "榎町",
      "corporation": {
        "name": "日本郵便 株式会社 南関東支社",
        "name_kana": "ニツポンユウビン カブシキガイシヤ ミナミカントウシシヤ",
        "block_lot": "1-2",
        "block_lot_num": "1-2",
        "post_office": "川崎港",
        "code_type": 0
      }
    }
  ],
  "query": {
    "q": "神奈川県 AND 日本郵便",
    "t": null,
    "prefecture": null,
    "county": null,
    "city": null,
    "city_ward": null,
    "town": null,
    "kyoto_street": null,
    "block_lot_num": null,
    "building": null,
    "floor_room": null
  },
  "count": 3,
  "offset": 0,
  "limit": 1,
  "facets": null
}

ファセット指定 (_facet:/…)この見出しへのリンク

特定の都道府県・市区町村の階層以下だけを対象に検索したい場合、_facet:/... を使います。

意味
_facet:/宮城県宮城県内のみ検索
_facet:/宮城県/仙台市宮城野区宮城県仙台市宮城野区内のみ検索

検索対象データの種類この見出しへのリンク

本APIの検索対象データは3種類です。

データ種別説明
エリア郵便番号特定の地域全体を表す郵便番号千代田区千代田 = 1000001
ビル郵便番号高層ビルなど、特定の建物や階層ごとに割り当てられた郵便番号GINZA SIX 1F = 1046001
大口事業所個別番号大口の事業所などに個別に割り当てられた郵便番号 (corporation 情報あり)東京都庁 = 1638001

デフォルトでは上記すべてが検索対象です。絞り込みたい場合は構文検索の _type / _structure オプションを使います。

検索対象の絞り込みオプション (_type / _structure)この見出しへのリンク

検索対象を特定のデータ種類に絞り込みたい場合は、構文検索クエリ (q パラメータ) で以下のオプションを指定してください。

オプション意味
_type:1郵便番号データ (エリア+ビル) のみ東京都 AND _type:1
_type:2大口事業所個別番号データのみprefecture:神奈川県 AND city:横浜市中区 AND _type:2
_structure:1郵便番号データのうちエリア郵便番号のみ東京都 AND _structure:1
_structure:2郵便番号データのうちビル郵便番号のみprefecture:神奈川県 AND city:横浜市中区 AND _structure:2

よくある検索パターンこの見出しへのリンク

郵便番号逆引き検索を活用するために、実際に役立つクエリ例を紹介します。

① フリーテキストでエリア郵便番号のみ検索この見出しへのリンク

ビル郵便番号を検索対象から外し、エリア郵便番号のみを対象としてフリーテキスト検索を行う場合、tq の両方を組み合わせます。

  • t: 検索対象の住所文字列を入力します。例: 東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F
  • q: _structure:1 でエリア郵便番号のみを指定します。
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.kenall.jp/v1/postalcode/?t=東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F&q=_structure:1"

② 事業所名で大口事業所個別番号を検索この見出しへのリンク

フリーテキスト検索は住所文字列のみを検索するため、事業所名での検索には利用できません。事業所名で検索したい場合は構文検索のみを使用します。例えば 東京都庁 の大口事業所個別番号を検索したい場合、q に検索対象文字列 東京都庁 を入力し、さらに _type:2 で大口事業所個別番号データのみを指定し、この2つを AND で結合します。

curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.kenall.jp/v1/postalcode/?q=東京都庁+AND+_type:2"

③ 特定の自治体内の郵便番号のみ検索この見出しへのリンク

_facet を使うことで、特定の自治体内に絞って郵便番号を検索できます。例えば 東京都千代田区 以下を対象にして 本町 を含む住所を検索する場合、以下のようにクエリを組み立てます。

  • t: 検索対象の住所文字列である 本町 を入力します。
  • q: _facet:/東京都/千代田区 を入力します。エリア郵便番号のみを指定する場合は _structure:1 も追加し、これらを AND で結合します。
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.kenall.jp/v1/postalcode/?t=本町&q=_facet:/東京都/千代田区+AND+_structure:1"

レスポンス (GET /v1/postalcode/)この見出しへのリンク

トップレベルフィールドこの見出しへのリンク

フィールド説明
versionstringデータのバージョン番号 (YYYY-MM-DD)"2022-01-31"
dataarray郵便区画レコードの配列。フィールド仕様は 郵便番号→住所APIリファレンス と同じ
queryobjectクエリ文字列のパース結果 (住所正規化結果)。前述「住所正規化機能」を参照
countnumberクエリに合致したすべてのレコード総数 (dataの件数ではない)1280
offsetnumberリクエストで指定された offset0
limitnumberリクエストで指定された limit1
facetsarray / nullfacet パラメータが与えられた場合のみ、ファセット階層ごとのレコード数ペアの配列[["/東京都", 1], ["/神奈川県", 3]]

data 配列内のレコードこの見出しへのリンク

フィールド仕様は 郵便番号→住所API リファレンス の「data 配列内・郵便区画レコードのフィールド仕様」と同じです (jisx0402 / postal_code / prefecture / city / town / corporation 他。詳細は郵便番号→住所APIリファレンス参照)。

ファセット機能この見出しへのリンク

検索インデックスは「都道府県名」「市区町村名」で階層化されており、検索結果にファセット (合致レコードの件数を階層ごとに数え上げた結果) を含められます。

例えば /東京都 というファセットの配下にある /東京都/中央区/東京都/港区/神奈川県 というファセットの配下にある /神奈川県/横浜市/神奈川県/川崎市 のような副階層を考えたとき、/東京都 パスのファセットに合致するレコード数は配下の合計、/神奈川県 パスのファセットに合致するレコード数は配下の合計、となります。

ファセットパスこの見出しへのリンク

  • 必ず / で始まる
  • 各階層は / で区切る (例: /東京都/中央区)
  • ルート階層は /

使い方この見出しへのリンク

facet パラメータで取得したい階層を指定すると、レスポンスの facets に件数ペア配列が返ります。

# 東京都配下の市区町村ごとの件数を取得
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.kenall.jp/v1/postalcode/?t=本町&facet=/東京都"

POST /v1/batch/postalcode/search (バッチAPI)この見出しへのリンク

警告

利用条件: ① バッチAPIオプションご購読のお客様のみ ② シークレットキーでのみ利用可 (公開キー不可) ③ 処理時間が 1分以上のリクエストは自動打ち切り

リソースURLこの見出しへのリンク

https://api.kenall.jp/v1/batch/postalcode/search?version=...

クエリパラメータこの見出しへのリンク

名前必須説明
versionstring省略可検索対象とする郵便番号データのバージョン (YYYY-MM-DD)

リクエストボディこの見出しへのリンク

名前必須説明
default_qstring省略可各問い合わせレコードで q オプションが指定されなかった時のデフォルト値
default_limitnumber省略可各問い合わせレコードの limit オプションのデフォルト値 (省略時 1)
queriesarray必須問い合わせレコードの配列 (下表)

queries 配列内の問い合わせレコードこの見出しへのリンク

名前必須説明
tstring必須GET の t 相当 (住所文字列)
qstring省略可GET の q 相当 (構文検索クエリ)
limitnumber省略可GET の limit 相当 (検索結果の最大数)

curl サンプルこの見出しへのリンク

curl -X POST -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "default_q": "",
    "default_limit": 1,
    "queries": [
      {"t": "東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F"}
    ]
  }' \
  "https://api.kenall.jp/v1/batch/postalcode/search"

レスポンス例この見出しへのリンク

{
  "version": "2023-01-31",
  "params": {
    "default_limit": 1,
    "default_q": ""
  },
  "records": [
    {
      "data": [
        {
          "jisx0402": "13101",
          "old_code": "102",
          "postal_code": "1020083",
          "prefecture_kana": "トウキョウト",
          "city_kana": "チヨダク",
          "town_kana": "コウジマチ",
          "town_kana_raw": "コウジマチ",
          "prefecture": "東京都",
          "city": "千代田区",
          "town": "麹町",
          "koaza": "",
          "kyoto_street": "",
          "building": "",
          "floor": "",
          "town_partial": false,
          "town_addressed_koaza": false,
          "town_chome": true,
          "town_multi": false,
          "town_raw": "麹町",
          "town_jukyohyoji": false,
          "update_status": 0,
          "update_reason": 0,
          "corporation": null
        }
      ],
      "query": {
        "q": null,
        "t": "東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F",
        "prefecture": "東京都",
        "county": null,
        "city": "千代田区",
        "city_ward": null,
        "town": "麹町",
        "kyoto_street": null,
        "block_lot_num": "3-12-14",
        "building": "麹町駅前ヒルトップ",
        "floor_room": "8F"
      },
      "count": 100,
      "offset": 0,
      "limit": 1,
      "facets": null
    }
  ]
}

レスポンスフィールド (バッチ)この見出しへのリンク

フィールド説明
versionstringデータのバージョン番号"2023-01-31"
paramsobjectリクエストボディの default_q / default_limit をそのまま含む
recordsarray結果レコードの配列。順序は queries の順序に対応。各要素は GET レスポンスと同じ構造 (data, query, count, offset, limit, facets)

HTTP ステータス・エラーこの見出しへのリンク

HTTPステータス意味典型的な原因
200OK正常にデータを取得
400Bad Requestq 構文の文法エラー/limit 範囲外
401UnauthorizedAPIキー未設定/無効/Bearer スキームで送信/バッチAPIに公開キーで送信
403Forbiddenプランに含まれないリソースへのアクセス (バッチAPI未契約等)
404Not Found指定バージョンが存在しない
429Too Many Requestsリクエスト量の制限超過
500Server Errorサーバー側障害 (status.kenall.jp で確認)

共通HTTPステータス仕様は API共通仕様 — HTTPステータスコード へ。

SDK で呼び出すこの見出しへのリンク

JavaScript SDKこの見出しへのリンク

import { KENALL } from '@ken-all/kenall';
 
const api = new KENALL('YOUR_API_KEY');
 
// 住所正規化 (住所文字列をフリーテキスト検索)
const result = await api.searchAddress({
  t: '東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F',
  limit: 1,
});
console.log(result.query.block_lot_num); // => "3-12-14"
console.log(result.data[0].postal_code);  // => "1020083"
 
// 構文検索 (事業所名)
const corp = await api.searchAddress({
  q: '東京都庁 AND _type:2',
});

Python (requestsで代替)この見出しへのリンク

import os, requests
 
API_KEY = os.environ["KENALL_API_KEY"]
HEADERS = {"Authorization": f"Token {API_KEY}"}
BASE = "https://api.kenall.jp/v1/postalcode/"
 
# フリーテキスト検索 (住所正規化)
res = requests.get(BASE, headers=HEADERS, params={
    "t": "東京都千代田区麹町三丁目12-14麹町駅前ヒルトップ8F",
    "limit": 1,
}, timeout=10)
res.raise_for_status()
data = res.json()
print(data["query"]["block_lot_num"])      # => "3-12-14"
print(data["data"][0]["postal_code"])      # => "1020083"
 
# 構文検索 (特定自治体内)
res = requests.get(BASE, headers=HEADERS, params={
    "t": "本町",
    "q": "_facet:/東京都/千代田区 AND _structure:1",
}, timeout=10)

SDK 一覧

OpenAPI スキーマこの見出しへのリンク

OpenAPI スキーマ (YAML): 2023-09-01 / 2024-01-01 / 2025-01-01

注意事項・制限事項この見出しへのリンク

フリーテキスト検索の制限この見出しへのリンク

  • 構文検索のクエリ構文 (AND/OR/項目別/ファセット) は使えません
  • 住所文字列のみ検索可能で、事業所名では検索できません (事業所名検索は構文検索を使用)
  • 大口事業所個別番号・ビル郵便番号もデフォルトで対象になります (除外したい場合は _type/_structure)

構文検索の制限この見出しへのリンク

  • 検索ワードは2文字以上、部分一致
  • 検索ワード間は半角スペース・タブ・改行で区切る
  • キーワードなしは OR として扱われ BM25 スコアで順位付け (短いテキストが対象のため全ワード一致が実質 AND と同等の結果になる)
  • マイナス演算子 (-) で対象ワードを除外可能 (例: -ビル)

バッチAPIの制限この見出しへのリンク

  • バッチAPIオプションご購読のお客様のみ利用可
  • シークレットキー必須 (公開キーでは利用不可)
  • 処理時間が 1分以上のリクエストは自動打ち切り

デフォルト値この見出しへのリンク

  • offset: 省略時 0
  • limit: 省略時 100(範囲: 1〜100)
  • version: 省略時は最新
  • バッチAPI default_limit: 省略時 1

このAPIに関する技術FAQこの見出しへのリンク

フリーテキスト検索と構文検索のどちらを使うべき?

住所文字列をそのまま投げて正規化したい場合は フリーテキスト検索 (t)、項目別検索・事業所名検索・ファセット指定が必要な場合は構文検索 (q)。両者は併用可能 (tq 同時指定で AND 結合)。

住所正規化機能だけを使いたい場合は?

t パラメータで住所文字列を投げ、レスポンスの query オブジェクトから正規化結果 (prefecture / city / town / block_lot_num / building / floor_room) を取り出します。limit=1 を指定し、data 配列は無視してOK。料金は通常検索と同じです。

事業所名で大口事業所個別番号を検索できますか?

フリーテキスト検索 (t) では事業所名は検索できません。構文検索 (q) で q=事業所名 AND _type:2 のように指定してください。例: q=東京都庁 AND _type:2

エリア郵便番号だけに絞りたい (ビル郵便番号・大口事業所個別番号を除外)

構文検索で _structure:1(エリア郵便番号のみ) を指定。フリーテキストと併用したい場合は t=住所文字列 & q=_structure:1

政令指定都市の行政区はどう正規化されますか?

query.city_ward に行政区名が、query.city に「市」までが格納されます。data 内には city_ward(行政区) ・city_without_county_and_ward(行政区除外の市区町村名) の両フィールドが含まれます。

京都の通り名はどう扱われますか?

クエリ側では query.kyoto_street に正規化された通り名が、レコード側では data[].kyoto_street に格納されます。構文検索の項目指定子としても kyoto_street:〜 が使えます。

ファセット結果はいつ返りますか?

リクエスト時に facet パラメータを指定した場合のみ、レスポンスの facetsnull 以外の値になります。指定しなければ facets: null

合致件数 (count) と返却件数 (data.length) の違いは?

count はクエリに合致したすべてのレコードの総数data.length は実際に返却された件数 (limit 以下)。ページングする場合は count を使って総ページ数を計算してください。

バッチAPIはなぜシークレットキー必須なのですか?

バッチAPIは複数クエリを一度に処理する重い操作のため、クライアント側 (ブラウザ等) から公開キーで呼ばれることを防ぐ仕様です。サーバー側で Origin 制限のないシークレットキーを使ってください。

関連リファレンスこの見出しへのリンク

最終更新: 2026-07-16