本文へスキップ

法人番号システムWeb-APIの使い方:アプリケーションID申請から名称検索・差分取得まで

国税庁の法人番号システムWeb-API(Ver.4.0)について、アプリケーションIDの種類と発行届出、法人番号指定・期間指定・法人名指定の3リクエストとパラメータ、CSV/XMLレスポンス、変更履歴の扱いを公式仕様で整理(IDの届出は2026-10-29に再確認)。AIエージェントで取引先マスタを照合する時の注意も。

SHAYOUWORLD 更新 約10分

国税庁の法人番号システムWeb-APIは、アプリケーションIDを付けたGETリクエスト1本で、法人番号・法人名・更新期間のいずれかを条件に、基本3情報(商号又は名称、本店又は主たる事務所の所在地、法人番号)と付随情報をCSVまたはXMLで返すAPIです。 最新版はVer.4.0で、Ver.1.0〜3.0も並行して稼働しています。

この記事では、アプリケーションIDの発行届出、3種類のリクエストとパラメータ、レスポンスの読み方、変更履歴の扱いを公式仕様から整理し、最後にAIエージェントで取引先マスタを照合するときの手順と注意をまとめます。

先に押さえること

  1. IDは無料だが時間がかかる。 国税庁適格請求書発行事業者公表サイトの届出フォームから申請し、13桁のIDがメールで届く。目安は2週間〜1か月半で、案内ページによって幅が違う。法人番号だけなら「法人番号用アプリケーションID」でよい。
  2. リクエストは3種類、GETのみ。 /4/num(法人番号指定)、/4/diff(期間指定)、/4/name(法人名指定)。type=01/02/12 でCSV(Shift-JIS)/CSV(Unicode)/XMLを選ぶ。
  3. 上限は num 10件、diff 50日、diff と name は2,000件超で分割。 全件は取れない。
  4. 照合は「名称→候補→人が法人番号を確定→番号で再取得→差分で追従」。 名称一致で自動確定しない。

アプリケーションIDを申請する

共通編4.10版(令和8年9月)の5章は、届出を国税庁適格請求書発行事業者公表サイトの「適格請求書発行事業者公表システムWeb-API機能」画面から行うよう案内しています。同画面とFAQ(4-3)、同システムの利用手続(第一編1.6版)に書かれた手順はこうです。

  1. 「発行届出」ボタンから進む「アプリケーションID発行届出仮登録」画面(https://www.invoice-kohyo.nta.go.jp/web-api/pre-reg/)にメールアドレスを入力して送信する(仮登録)
  2. 届いたメールのURLから基本情報等を入力して送信する(本登録)
  3. アプリケーションIDがメールで通知される

IDは2種類あります。 「法人番号用アプリケーションID」は法人番号システムWeb-APIだけに使え、「インボイス用アプリケーションID」は法人番号システムWeb-APIと適格請求書発行事業者公表システムWeb-APIの両方に使えます(FAQ 4-6)。法人番号だけなら法人番号用で足ります。インボイス用は、本登録の際に「公表情報の取得方法及び利用方法」が分かる資料をデータで提出し、国税庁の審査を受けます。法人番号用を取った後でインボイスWeb-APIの権限を足す場合も、「登録情報変更届出」から同じ資料の提出と審査が要ります。

書面では受け付けておらず、手数料は不要です。IDは原則としてWeb-APIサーバと通信するシステムごとに発行され、同一のメールアドレスで複数のIDを届け出ることはできません。発行までの目安は案内によって異なり、法人番号公表サイトのWeb-APIページは2週間から1か月程度、適格請求書発行事業者公表サイトのWeb-APIページは法人番号用IDについて1か月程度、同サイトのFAQ(4-3)は新規発行に1か月から1か月半程度としています(いずれも2026年10月29日確認)。

9月14日の初版では「法人番号システムWeb-APIだけを使う場合は、届出とは別にメールで連絡する」と書いていました。10月29日に確認した共通編4.10版と両サイトのWeb-APIページにはこの手順がなく、IDの種類を選ぶ案内に変わっていたため訂正しました。[email protected] は、現在はIDを取得していない人の仕様に関する問い合わせ先として案内されています。

架空の法人名を使った検証環境もあります。IDは本番・検証環境どちらでも使え、利用したい場合はWeb-APIお問い合わせフォームからID、法人名又は氏名、メールアドレス、電話番号、利用予定期間(3か月以内)を連絡すると、概ね1週間以内に案内が届きます。

利用規約で運用に効く条項は次のとおりです(令和8年9月24日施行の改正後の条文で、2026年10月29日に確認)。

  • 第4条:利用者は通知を受けたIDの管理責任を負う。不正利用・亡失・利用停止は速やかに連絡する。3年間アクセスがないと利用停止されることがある
  • 第6条:Web-APIを利用したサービスを提供する場合、「このサービスは、国税庁法人番号システムWeb-API機能を利用して取得した情報をもとに作成しているが、サービスの内容は国税庁によって保証されたものではない」を適宜の場所に明示する
  • 第8条:利用が著しく集中した場合等には利用を制限できる
  • 第9条:短時間における大量アクセス、IDの第三者への譲渡・貸与・開示の禁止
  • 第10条:国税庁の故意又は重過失による場合を除き免責

IDはコードやプロンプトに書かず、環境変数で渡します。

Terminal window
export HOUJIN_APP_ID="メールで通知された13桁のアプリケーションID"

3種類のリクエスト

Web-APIはREST方式で、メソッドはGETです。バージョンはURLのパスに 1〜4 の数字で指定します。

  1. 2015-12
    Ver.1.0 提供開始
    法人番号指定と期間指定の2機能。差分データはこの日以降のみ
  2. 2017-04
    Ver.2.0
    法人名指定機能を追加。商号・所在地の英語表記項目を追加
  3. 2018-04
    Ver.3.0
    商号又は名称のフリガナ項目を追加
  4. 2019-03
    Ver.4.0
    検索対象除外(hihyoji)項目を追加。現行の最新版
共通編 表1「各バージョンの相違点」より。下位バージョンは新版提供後も並行稼働する

法人番号を指定して取得する(num)

https://api.houjin-bangou.nta.go.jp/4/num?id=<アプリケーションID>&number=<法人番号>[,<法人番号>…]&type=12&history=0
パラメータ必須意味
id必須13桁のアプリケーションID
number必須13桁の法人番号。カンマ区切りで最大10件
type必須01 CSV/Shift-JIS、02 CSV/Unicode、12 XML/Unicode
history任意0 変更履歴なし(既定)、1 変更履歴あり

history=1 にすると、商号変更などの履歴が古い順に複数行で返り、latest が 1 の行が最新情報です。

Terminal window
curl -s "https://api.houjin-bangou.nta.go.jp/4/num?id=${HOUJIN_APP_ID}&number=7000012050002&type=12&history=1"

(7000012050002 は公表サイトのフッターに記載されている国税庁自身の法人番号です。)

期間を指定して差分を取得する(diff)

https://api.houjin-bangou.nta.go.jp/4/diff?id=<アプリケーションID>&from=YYYY-MM-DD&to=YYYY-MM-DD&type=12[&address=..&kind=..&divide=..]
パラメータ必須意味
from / to必須更新年月日の範囲。最大50日。2015年12月1日より前はエラー(コード013)
type必須numと同じ
address任意都道府県コード2桁(JIS X 0401)、または都道府県2桁+市区町村3桁(JIS X 0402)。国外は 99。市区町村コードのみはエラー(コード051)
kind任意法人種別。01 国の機関、02 地方公共団体、03 設立登記法人、04 外国会社等・その他。最大4種類
divide任意分割番号 1〜99999。省略時 1

期間指定で取れるのはWeb-API公開日(2015年12月1日)以後の差分だけです。全件(前月末時点の最新情報)が必要なら公表サイトのダウンロード機能を使う、と共通編は明記しています。

法人名を指定して取得する(name)

Ver.2.0以降で使えます。

https://api.houjin-bangou.nta.go.jp/4/name?id=<アプリケーションID>&name=<URLエンコードした法人名>&type=12[&mode=..&target=..&address=..&kind=..&change=..&close=..&from=..&to=..&divide=..]
パラメータ必須意味
name必須UTF-8でURLエンコードした商号又は名称。複数指定不可
mode任意1 前方一致(既定)、2 部分一致
target任意1 JIS第一・第二水準(あいまい検索、既定)、2 JIS第一〜第四水準(完全一致)、3 英語表記
change任意0 変更履歴を含めない(既定)、1 旧商号も検索対象にする
close任意0 登記記録の閉鎖等を含めない、1 含める(既定)
from / to任意法人番号指定年月日の範囲。2015年10月5日より前はエラー(コード152)
address / kind / divide任意diffと同じ

前方一致は「株式会社」などの法人種別を除いた名称の先頭から照合し、部分一致は法人種別を含めて照合します。あいまい検索(target=1)はひらがなをカタカナに、英小文字を英大文字に置き換え、中点や全角スペースを削除した上で照合するので、表記ゆれに強い代わりに候補が広がります。

Terminal window
curl -s -G "https://api.houjin-bangou.nta.go.jp/4/name" \
--data-urlencode "id=${HOUJIN_APP_ID}" \
--data-urlencode "name=国税商事" \
--data-urlencode "type=12" \
--data-urlencode "mode=2"

有効なIDがない状態で num を叩くと、2026年9月14日の実行ではHTTP 404で Not Found のHTMLが返りました(空のIDでも dummy でも同じ)。仕様書にあるCSV形式のエラーコード応答はこの条件では返らなかったので、IDの有無はHTTPステータスで先に検知できます。

レスポンスの読み方

CSVでもXMLでも、先頭にヘッダー情報4項目が付き、その後に法人ごとのデータが続きます。

項目名XMLタグ意味
最終更新年月日lastUpdateDate公表用データベースを最後に更新した日付
総件数count条件に合致したデータの総件数
分割番号divideNumber分割ファイルの通し番号(分子)
分割数divideSize分割ファイルの総数(分母)。分割されなければ 1

CSVには項目名が入りません。 2行目以降のカンマ区切りの並びは、別紙のリソース定義書で「提供項目_Web-API(ver1〜4)」に○が付いた項目の順です。位置で意味が決まるので、CSVを扱うならXMLのタグ名(=リソース名)と対応させたマッピングを持っておくのが安全です。

仕様書に載っている、架空の法人番号 8040001999013 をXMLで引いたときのサンプルはこの形です(項目を抜粋)。

<corporations>
<lastUpdateDate>2017-05-10</lastUpdateDate>
<count>1</count>
<divideNumber>1</divideNumber>
<divideSize>1</divideSize>
<corporation>
<sequenceNumber>1</sequenceNumber>
<corporateNumber>8040001999013</corporateNumber>
<process>11</process>
<correct>0</correct>
<updateDate>2017-05-09</updateDate>
<changeDate>2017-05-09</changeDate>
<name>株式会社商号変更後</name>
<kind>301</kind>
<prefectureName>千葉県</prefectureName>
<cityName>千葉市中央区</cityName>
<streetNumber>蘇我5丁目9番1号</streetNumber>
<prefectureCode>12</prefectureCode>
<cityCode>101</cityCode>
<postCode>2600822</postCode>
<assignmentDate>2015-10-05</assignmentDate>
<latest>1</latest>
<furigana/>
<hihyoji>0</hihyoji>
</corporation>
</corporations>

照合で効く項目は次のとおりです。

  • process(処理区分):01 新規、11 商号又は名称の変更、12 国内所在地の変更、13 国外所在地の変更、21 登記記録の閉鎖等 など
  • latest(最新履歴):1 が最新、0 が過去の情報
  • closeDate / closeCause / successorCorporateNumber:登記記録の閉鎖等の年月日・事由・承継先法人番号
  • changeCause(変更事由の詳細)、assignmentDate(法人番号指定年月日)
  • enName 等はVer.2.0以降、furigana はVer.3.0以降、hihyoji(検索対象除外)はVer.4.0以降

並び順も決まっています。numは法人番号昇順→履歴の古い順、diffは更新年月日→法人番号、nameは名称のUTF-8コード順→法人番号で、sequenceNumber はその順に振られます。

更新タイミングは、公表用データベースが当日11時と16時の2回更新され、num・nameは登記完了日の16時又は翌稼働日の11時に反映、diffは登記完了日の翌日午前0時に反映です。休祝日と12月29日〜1月3日は更新されません。当日分をすべて差分で取りたい場合は、日付切替後に前日の日付で diff を呼びます。

diffとnameは応答が2,000件を超えると分割されます。ヘッダーの divideSize が 1 でなければ、divide を divideNumber が divideSize に一致するまでカウントアップして再リクエストします。

AIエージェントで取引先マスタを照合する

取引先マスタの「社名」を法人番号に紐づける作業は、エージェントに任せやすい半面、同名法人と表記ゆれで事故が起きやすい領域です。次の手順に固定します。

  1. マスタの社名で name を引く。 mode=2(部分一致)、target=1(あいまい検索)で候補を広めに取り、法人番号・所在地・kind・closeDate を並べる。
  2. 候補が複数なら所在地で絞る。 マスタに都道府県があれば address に都道府県コードを渡す。それでも複数残るなら、エージェントは候補を提示して止まり、人が法人番号を選ぶ。
  3. 確定した法人番号で num を history=1 で取り直す。 latest=1 の行をマスタの正とし、旧商号は別名として保持する。
  4. 以後は diff を日次で回す。 前日の日付で取得し、マスタにある法人番号の process が 11(商号変更)、12(所在地変更)、21(閉鎖等)なら差分として提示する。successorCorporateNumber があれば承継先を添える。
  5. 閉鎖法人は削除せずフラグを立てる。 closeDate が入った法人はマスタから消さず「閉鎖」として残す。
名称の文字列一致で自動確定
法人番号で確定して追従
同名法人
先頭の候補を採用してしまう
候補を提示して人が選ぶ。以後は番号で引く
商号変更
旧社名で0件になり別法人と判定
change=1 で旧名を拾い、num の history=1 で最新へ
閉鎖・合併
検索に出続けて気づかない
diff の process=21 と successorCorporateNumber で検知
表記ゆれ
「・」や全角空白で一致しない
target=1 のあいまい検索に寄せ、確定は番号で
監査
なぜその法人にしたか残らない
法人番号・lastUpdateDate・取得日時・選定理由を記録
法人名指定・法人番号指定・期間指定の仕様(概要編)から整理した運用の比較

エージェントへの指示は、CLAUDE.mdやAGENTS.mdに次の程度で置きます。

## 法人番号 Web-API を使うときのルール
- 社名で検索したら候補(法人番号・所在地・closeDate)を表にして止まる。私が法人番号を選ぶまで確定しない
- 確定後は法人番号で num を history=1 で取り直し、latest=1 の行を採用する
- change=1 で旧商号がヒットしても、その行を最新として扱わない(num で取り直す)
- 結果には corporateNumber・lastUpdateDate・取得日時を必ず付ける
- アプリケーションIDは環境変数 HOUJIN_APP_ID から読む。URL・ログ・出力に含めない
- 公開するサービスには規約第6条の出典明示文言を入れる

API側に用意されている「あいまい検索」と「変更履歴」は、人が最終確定する前提でこそ役に立ちます。エージェントに全部を任せて確定まで進めると、あいまい検索の広さがそのまま誤マッチの広さになります。

まとめ

  • アプリケーションIDは適格請求書発行事業者公表サイトの届出フォームから無料で申請。法人番号用とインボイス用の2種類、13桁、発行まで2週間〜1か月半、システムごとに1つ
  • リクエストは num(法人番号最大10件)、diff(最大50日、2015-12-01以降)、name(Ver.2.0以降)の3種類。type=01/02/12 で形式を選ぶ
  • レスポンスは4項目のヘッダー+法人データ。CSVには項目名がないのでリソース定義書で位置を確認。latest、process、closeDate、successorCorporateNumber が照合の鍵
  • 2,000件超は divide で分割取得。更新は11時・16時、diffは翌日0時
  • 取引先マスタの照合は「名称→候補→人が法人番号を確定→番号で再取得→差分で追従」に固定する

法人番号で確定した後、行政保有情報(認定・調達・補助金など)へ広げるならGビズインフォ、法定開示書類へ広げるならEDINETが法人番号を持っています。その組み合わせと、認証キーを持つAPIをMCPにするときの共通設計は公共データAPIをMCP化する設計パターンで扱います。IDのような秘密をエージェントから隔離する一般論はAIエージェントの秘密情報保護を参照してください。

関連して読む

この記事の情報・検証メモ
Tags
公開日
情報確認
参考リンク
7件
更新性
定期更新
更新管理

仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。

図解を保存・共有

記事の要点を1枚にまとめました。画像は新しいタブで開いて保存できます。

法人番号システムWeb-APIの使い方:アプリケーションID申請から名称検索・差分取得まで 法人番号Web-APIはID付きGET1本で基本3情報を返す。照合は名称ではなく法人番号で確定し、差分取得で追従する リクエスト、パラメータ / リクエスト:/4/num、パラメータ:number=<法人番号>[,<法人番号>…] / リクエスト:/4/diff、パラメータ:from=YYYY-MM-DD&to=YYYY-MM-DD / リクエスト:/4/name、パラメータ:name=<URLエンコードした法人名> AIで照合する時:名称一致で自動確定せず候補を人に返す。確定後は法人番号で取り直しlatestを見る。閉鎖・承継先・商号変更はdiffで検知する。
法人番号システムWeb-APIの使い方:アプリケーションID申請から名称検索・差分取得まで 記事の要約 2026.09.14 入門・導入ガイド
Primary sources

一次情報・参考リンク

About the author
SHAYOUWORLD

日本の公共データAPIを使うMCPサーバーを作って公開し、ローカルLLMを自分のGPUで測った記録を、一次情報・検証ログ・失敗例とあわせて整理します。