📍

企業名からふりがなと住所を検索する in Python

2023/02/19に公開

国税庁が提供する「法人番号システムWeb-API」を使用して、企業名からそのふりがなと住所を取得してみました。

上記APIには以下3つのエンドポイントが提供されています。

  • 法人番号から法人情報を取得(/num
  • 指定した期間の法人情報の更新データを取得(/diff
  • 企業名から法人情報を取得(/name

詳細は以下ドキュメントを確認してください。

Web-API のリクエストの設定方法及び提供データの内容について

今回は企業名から法人情報を取得するエンドポイントを使用します。
先頭一致と部分一致検索が可能です。

サンプル

docker exec -it corporate-number-app python main.py 中日
{
    "corporations": {
        "lastUpdateDate": "2023-02-17",
        "count": "11",
        "divideNumber": "1",
        "divideSize": "1",
        "corporation": [
            {
                "sequenceNumber": "1",
                "corporateNumber": "6180005007950",
                "process": "21",
                "correct": "0",
                "updateDate": "2020-10-02",
                "changeDate": "2020-09-29",
                "name": "一般社団法人全国中日ドラゴンズ私設応援団連合",
                "nameImageId": null,
                "kind": "399",
                "prefectureName": "愛知県",
                "cityName": "名古屋市西区",
                "streetNumber": "花の木2丁目23番地12号",
                "addressImageId": null,
                "prefectureCode": "23",
                "cityCode": "104",
                "postCode": "4510062",
                "addressOutside": null,
                "addressOutsideImageId": null,
                "closeDate": "2020-09-29",
                "closeCause": "01",
                "successorCorporateNumber": null,
                "changeCause": null,
                "assignmentDate": "2015-10-05",
                "latest": "1",
                "enName": null,
                "enPrefectureName": null,
                "enCityName": null,
                "enAddressOutside": null,
                "furigana": "ゼンコクチュウニチドラゴンズシセツオウエンダンレンゴウ",
                "hihyoji": "0"
            },
            {
                "sequenceNumber": "2",
                "corporateNumber": "2120902010116",
                "process": "01",
                "correct": "0",
                "updateDate": "2015-11-20",
                "changeDate": "2015-10-05",
                "name": "有限会社クレインアンドドラゴンズキッチン",
                "nameImageId": null,
                "kind": "302",
                "prefectureName": "大阪府",
                "cityName": "高槻市",
                "streetNumber": "奈佐原1丁目1番401号棟102号",
                "addressImageId": null,
                "prefectureCode": "27",
                "cityCode": "207",
...

必要なもの

  • Docker Compose

試してみる

1. アプリケーションIDの取得

こちらからメールアドレスを登録する形で行います。

  1. 仮登録
  2. 本登録
  3. 確認待ち
  4. 国税庁から追加の書類提出依頼が届く
    • 書類は提出せずに、法人番号システムWeb-APIのみ利用希望である旨を返信する
  5. アプリケーションIDが記載されたメールを受信

アプリケーションIDは他の方の記事を見ると数年前までは郵送で届いていたようです。
デジタル化の波を感じますね。

4について補足です。
上記登録フォームは以下2つのAPIの利用申請を兼ねています。

  • 法人番号システムWeb-API
  • 適格請求書発行事業者公表システムWeb-API

前者は不要ですが、後者は追加の書類提出が必要となっています。

ただフォーム上でどちらを使用するか記載する項目はありません。国税庁からの追加の書類提出の依頼メールに返信する形で、法人番号システムWeb-APIのみ利用希望である旨を伝える必要があります。

お互いにとって手間のかかる運用になっていますが、今年1月からの変更にシステムと運用が追いついていないためだと思われます。

そのうち改善されるかと。

令和5年1月20日から「法人番号システムWeb-API」のアプリケーションIDをお持ちの方であっても、国税庁に対して「適格請求書発行事業者公表システムWeb-API機能アプリケーションID発行申請書」を提出し、国税庁の承認を受けていないとインボイスWeb-APIを利用することはできなくなりました。

参照: Web-APIの利用にあたって

私は2週間ほどでアプリケーションIDを受け取ることができましたが、場合によっては1ヶ月程度かかるようです。

アプリケーションIDの発行に2週間から1か月程度要しますのでご了承ください。

2. セットアップ

git clone https://github.com/Doarakko/api-playground
cd api-playground/corporate-number
cp .env.example .env

取得したアプリケーションIDを.envに入れます。

APP_ID=abcd

3. コンテナ起動

docker-compose up --build -d

4. 実行

docker exec -it corporate-number-app python main.py <q>

./app/output/<q>.jsonにJSON形式で保存されます。

Hints

部分一致と完全一致の切り替え

-mオプションで切り替えできるようにしています。

docker exec -it corporate-number-app python main.py 中日 -m 2

他にもエンドポイントで提供されているいくつかのリクエストパラメータを指定できるようにしています。

usage: main.py [-h] [-m {1,2}] [-t {1,2,3}] [-c {1,2}] q

各引数、レスポンスの詳細な仕様はこちらを確認してください。https://www.houjin-bangou.nta.go.jp/documents/k-web-api-kinou-gaiyo.pdf

positional arguments:
  q           検索クエリ

optional arguments:
  -h, --help  show this help message and exit
  -m {1,2}    検索方式 1: 前方一致, 2: 部分一致
  -t {1,2,3}  検索対象 1: あいまい, 2: 完全一致, 3: 英語表記登録情報
  -c {1,2}    変更履歴 1: 含める, 2: 含めない

下記以外にも所在地(都道府県コード)などで絞り込むことができます。

詳細はAPIの仕様書を確認してください。

APIの利用規約で気になったところ(2023年2月現在)

実際に利用する際には以下ご確認ください。

出典の明記

忘れずに。

利用者は、本機能を利用したサービスを提供する場合は、「このサービスは、国税庁法人番号システムWeb-API 機能を利用して取得した情報をもとに作成しているが、サービスの内容は国税庁によって保証されたものではない」を適宜の場所に明示するものとします。

商用利用

特に制限する記述はありませんでした。

APIのリクエスト数

詳細な記述はありませんでした。

第9条 (禁止事項)
短時間における大量アクセスその他本機能の運用に支障を与えること

SLA含めてこのAPIを採用するのか、また使い方は十分に検討する必要がありますね。

登録情報の更新タイミング

登記完了と同時に更新されるわけではなく定時に更新されるようです。

国税庁が法務局(省)からデータを受信後、表2のとおり更新※しています。ただし、処理状況によっては遅れる場合があります。

参照:法人情報の更新回数及び時刻について

「法務局(省)からデータを受信後」というところが気になって確認したところ、株式会社メルカリと株式会社メルロジの吸収合併のケースでは実際の変更からデータの更新まで約2週間かかっていました。

{
    "sequenceNumber": "3",
    "corporateNumber": "6010701027558",
    ...
    "updateDate": "2023-01-27",
    "changeDate": "2023-01-11",
    "name": "株式会社メルカリ",
    ...
    "changeCause": "令和5年1月1日東京都港区六本木六丁目10番1号株式会社メルロジ(2010401163590)を合併",
    "assignmentDate": "2015-10-05",
    "latest": "1",
    "enName": null,
    "enPrefectureName": null,
    "enCityName": null,
    "enAddressOutside": null,
    "furigana": "メルカリ",
    "hihyoji": "0"
}

行政の裏側が少し想像できて面白いですね。

前株と後株

今回使用したAPIでは法人種別(株式会社、合同会社、etc)は検索対象に含まれません。
そのため「株式会社」を含めて検索すると何もヒットしないので注意が必要です。

レスポンスの形式

本記事では扱いやすいようにデータを加工していますが、実際は以下から選択してレスポンスを受け取ります。

  • CSV形式/Shift-JIS(JIS第一・第二水準)
  • CSV形式/Unicode(JIS第一水準から第四水準)
  • XML形式/Unicode(JIS第一水準から第四水準)

利用する際にはご注意ください。

データのダウンロード

データの直接ダウンロードは申請なしでこちらから行えます。

おわりに

有料(プレミアム:月額66,000円)ではありますが、こちらのAPIで同様のことが可能です(2023年2月現在)。

参照:ケンオール料金表

国税庁に登録された500万件の法人データを日次更新でご提供。更新の手間は一切ありません。

データの取得元は本記事で紹介したAPIだと思われますが、上記ではそれに加えて住所での検索も可能となっています。
また検索の際に法人種別を含めるか選択可能です。

SLAについてはエンタープライズ(料金不明)のみとなっています。

最初に価格を見たときは正直「高っ」と思ったのですが、ターゲットとなるユーザー層やプロダクトのドメインを考えると絶妙な価格なのかなと思ってきました。

私は国税庁にお世話になります。
よろしくお願いします。

Discussion