サイトのAPI図鑑B版
掲載情報が正確でない可能性があります。
政府・公共データAPI

郵便番号検索APIの完全ガイド【日本郵便・zipcloud・住所自動入力】

郵便番号から住所を自動取得するAPIの種類と活用方法を解説。日本郵便の郵便番号データ・zipcloud API・HeartRailsの住所検索APIを使ったフォームの住所自動入力実装方法を紹介します。

#郵便番号#住所検索#フォーム最適化#日本郵便

郵便番号検索APIの重要性

Webサービスのフォームで住所入力を求める場面では、郵便番号からの住所自動補完は必須のUX改善施策です。ユーザーの入力手間を大幅に削減し、住所の入力ミスによる配送エラーも防止できます。日本では複数の無料・有料APIが利用可能です。

主要な郵便番号API

zipcloud(無料・商用利用可)

  • URL:https://zipcloud.ibsnet.co.jp/api/search
  • 特徴:完全無料・登録不要・JSONレスポンス
  • データ元:日本郵便の郵便番号データ

HeartRails Geo API(無料)

  • URL:https://zip.cgis.biz/
  • 特徴:JSONPとXMLに対応

消費税率APIとの組み合わせ

郵便番号APIで取得した住所情報を利用して、軽減税率の適用判定など地域に依存する処理を自動化できます。

zipcloud APIの使い方

// 郵便番号から住所を取得
GET https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000001

// レスポンス
{
  "message": null,
  "results": [
    {
      "address1": "東京都",
      "address2": "千代田区",
      "address3": "千代田",
      "kana1": "トウキョウト",
      "kana2": "チヨダク",
      "kana3": "チヨダ",
      "prefcode": "13",
      "zipcode": "1000001"
    }
  ],
  "status": 200
}

住所自動入力フォームの実装(React)

import { useState } from 'react';

const AddressForm = () => {
  const [zipcode, setZipcode] = useState('');
  const [address, setAddress] = useState({ pref: '', city: '', town: '' });
  const [loading, setLoading] = useState(false);

  const handleZipcodeChange = async (e) => {
    const value = e.target.value.replace(/-/g, '');
    setZipcode(value);
    
    if (value.length === 7) {
      setLoading(true);
      try {
        const res = await fetch(
          `https://zipcloud.ibsnet.co.jp/api/search?zipcode=${value}`
        );
        const data = await res.json();
        if (data.results) {
          const result = data.results[0];
          setAddress({
            pref: result.address1,
            city: result.address2,
            town: result.address3
          });
        } else {
          alert('郵便番号が見つかりませんでした');
        }
      } catch (e) {
        console.error('住所取得エラー:', e);
      } finally {
        setLoading(false);
      }
    }
  };

  return (
    <form>
      <input
        type="text"
        placeholder="郵便番号(ハイフンなし)"
        value={zipcode}
        onChange={handleZipcodeChange}
        maxLength={7}
      />
      {loading && <span>検索中...</span>}
      <input type="text" value={address.pref} placeholder="都道府県" />
      <input type="text" value={address.city} placeholder="市区町村" />
      <input type="text" value={address.town} placeholder="町名" />
      <input type="text" placeholder="番地・建物名" />
    </form>
  );
};

日本郵便の公式郵便番号データを使う方法

日本郵便のWebサイトから無料でダウンロードできる郵便番号CSV(ken_all.csv)を独自サーバーに取り込んで自前の郵便番号検索APIを構築することもできます。大量アクセスが見込まれるサービスでは自前DBの方が安定性・コスト面で有利です。

まとめ

郵便番号検索APIはフォームのUX改善に最も効果的な施策の一つです。zipcloudは無料・登録不要で導入が簡単なため、まずはこのAPIから試してみてください。大規模サービスでは自前DBの構築を検討し、信頼性と応答速度を確保してください。

よくある質問

Q.zipcloud APIは無料で商用利用できますか?

zipcloud(zip-cloud.appspot.com)は無料で商用利用可能な郵便番号検索APIです。ただし利用規約を確認してください。大量のリクエストが予想される場合は別のサービスや自前のデータベース構築も検討してください。

Q.郵便番号データは最新のものが取得できますか?

日本郵便が提供する郵便番号データは定期的に更新されます。zipcloudは日本郵便のデータを元に更新されています。最新のデータが必要な場合は日本郵便の公式サイトからCSVを直接ダウンロードすることも選択肢の一つです。

Q.住所から郵便番号を逆引きするAPIはありますか?

住所→郵便番号の逆引きはzipcloudでは対応していません。Google Maps Geocoding APIを使って住所から座標を取得し、逆ジオコーディングで郵便番号を得ることができますが、APIの料金が発生します。

関連記事