Claude CodeでgBizINFOの法人情報を取り込み、訪問前の取引先メモを作る
経産省のgBizINFOから補助金・調達・届出認定を取り込み、訪問前の取引先メモをClaude Codeで作る手順。API取得と一括ダウンロードの使い分け、読み違えやすい項目つき。
初めて訪問する取引先について、公開情報だけで事前メモを作りたい場面があります。経済産業省のgBizINFO(Gビズインフォ)は、法人番号をキーに、各府省が持つ補助金・調達・届出認定・表彰などの情報をひとつにまとめて引けるサービスです。
取得と整形はClaude Codeに任せられます。法人番号のリストを渡せば、取得スクリプトを書かせて実行させ、1社1枚のMarkdownメモを出させる流れです。ここでは、取れる情報の範囲、APIと一括ダウンロードの使い分け、スクリプト、メモの形、読み違えやすい項目を順に扱います。法人番号そのものの名寄せは法人番号Web-APIの名寄せ手順が先行します。ここでは、番号が決まった後の「中身を調べる」段階です。
gBizINFOで取れる情報と、取れない情報
gBizINFOは、国税庁の法人番号公表サイトにある法人基本3情報(法人番号・法人名・本店所在地)に、各府省の情報を紐づけて提供しています。紐づく情報は次の8種類です。
- 財務情報
- 決算情報
- 特許情報
- 届出・認定情報
- 補助金情報
- 調達情報
- 表彰情報
- 職場情報
訪問前メモで効くのは、補助金・調達・届出認定・表彰の4つです。「どの府省の、どの事業に採択されたか」「国の調達で何を受注したか」が、相手の事業の動きを知る手がかりになります。
一方で、信用調査会社のような与信判断の材料にはなりません。登録されているのは政府機関が持つ情報で、取引条件や支払い実績に当たる項目はスキーマにないためです。与信を見たい場合は、D&B Risk Analyticsとの連携のような別の入口が必要です。新規の候補探しから始めるなら、Claude Researchでのサプライヤー探索が前段になります。
APIと一括ダウンロードの使い分け
入口は2つあります。どちらもトークンが要りますが、取り方が違います。
| 観点 | REST API | 一括ダウンロード |
|---|---|---|
| 向く場面 | REST API訪問が決まった数社を引く | 一括ダウンロード取引先名簿の全件を一度に突合する |
| 取得単位 | REST API法人番号ごと | 一括ダウンロード情報種別ごと(全法人分) |
| 事前手続き | REST API利用申請。完了メールのURLでAPIトークンを確認 | 一括ダウンロードダウンロード画面でアクセストークンを入力 |
| 形式 | REST APIJSON | 一括ダウンロードZIP(文字コードはUTF-8かS-JISを選択) |
ダウンロード画面には、基本情報、事業所情報、届出・認定情報、表彰情報、補助金情報、調達情報、特許情報、財務情報、職場情報、法人情報(一括)、決算情報の11種類が並びます。メタデータを出力するかどうかも選べます。
数社なら、APIが早道です。名簿が数百社を超えるなら、補助金情報と調達情報のZIPだけを落として手元で結合するほうが、リクエストを何度も送らずに済みます。
準備: トークンと、Claude Codeに渡す約束事
APIを使うには利用申請が必要で、申請後に届く「Web API利用申請完了」メールのURLからAPIトークンを確認します。バージョンは2.0です。リクエストでは、ヘッダー X-hojinInfo-api-token にトークンを載せます。
トークンはClaude Codeに読ませない設計にします。.env に置き、権限ルールで読み取りを拒否する方法は、法人番号Web-APIの記事と同じです。設定の例は公式の権限ドキュメントにある Read(./.env) の形です。この拒否は組み込みのファイルツールと、cat などBashの一部コマンドに効きます。スクリプトが自分で .env を開く動作は止まらないので、厳密にはサンドボックスを併用します。ルールの管理は/permissionsコマンドの記事にあります。
毎回の依頼で繰り返さないよう、約束事はCLAUDE.mdに書きます。公式は、1ファイル200行以内を目安に、検証できるほど具体的な書き方を勧めています。
## gBizINFO
- APIのベースは https://api.info.gbiz.go.jp/hojin/v2/hojin 、認証はヘッダー X-hojinInfo-api-token
- トークンは環境変数 GBIZ_TOKEN から読む。コード・ログ・会話に出さない
- 引くのは法人番号(13桁)が確定した取引先だけ。名称検索で当てずっぽうに引かない
- 補助金の金額(amount)は文字列で返る。数値化できない行は捨てずに原文のまま残す
- 補助金・調達の記載は「実績の公開情報」。財務の健全性や取引適格性の判断を書かない
- 取得結果は data/gbiz/ にJSONで保存。メモは memo/ にMarkdownで出力最後の2行が肝です。メモに「優良企業」「財務は堅調」のような評価を書かせると、根拠のない断定が混ざります。事実の並べ替えに徹させる指示を、先に置いておきます。
1社分を取得するスクリプト
次の例は、法人番号を受け取り、基本情報・補助金・調達・届出認定を取得してJSONで保存する最小の形です。公式のAPI仕様(Swagger)に載っているパスとヘッダー名に沿っています。トークンがない環境では動かせないため、例示として読んでください。
import json, os, sys, time, urllib.request
BASE = "https://api.info.gbiz.go.jp/hojin/v2/hojin"
TOKEN = os.environ["GBIZ_TOKEN"]
def get(path):
req = urllib.request.Request(
BASE + path, headers={"X-hojinInfo-api-token": TOKEN}
)
with urllib.request.urlopen(req, timeout=30) as res:
return json.load(res)
def fetch(number):
out = {}
for part in ["", "/subsidy", "/procurement", "/certification"]:
out[part or "/base"] = get(f"/{number}{part}")
time.sleep(1)
return out
if __name__ == "__main__":
for number in sys.argv[1:]:
data = fetch(number)
with open(f"data/gbiz/{number}.json", "w") as f:
json.dump(data, f, ensure_ascii=False, indent=2)応答は hojin-infos という配列に入ります。補助金は subsidy、調達は procurement、届出認定は certification の配列で、それぞれ次の項目を持ちます。
| 種別 | 主な項目 |
|---|---|
| 補助金 | 主な項目title(補助金等)、government_departments(府省)、target(対象)、amount(金額)、date_of_approval(認定日) |
| 調達 | 主な項目title(事業名)、government_departments、amount、date_of_order(受注日)、note(備考) |
| 届出認定 | 主な項目title(届出認定等)、category(部門)、government_departments、target、date_of_approval |
リクエスト間の sleep は、公式の記載ではなく筆者の既定値です。アクセス頻度の上限は、APIの案内ページに数字として載っていません。大量に引く前に、API・データダウンロード利用規約と、REST APIのよくある質問を確かめてください。
取得結果を訪問前メモに整える
JSONが保存できたら、整形をClaude Codeに依頼します。出力の型を指定すると、毎回同じ順で読めるメモになります。
data/gbiz/ のJSONから、各社1枚のMarkdownを memo/ に作って。
構成は次の順。
1. 基本(法人名、所在地、資本金、従業員数、設立年月日、事業概要)
2. 補助金(認定日の新しい順に最大5件。府省・補助金名・金額)
3. 調達(受注日の新しい順に最大5件。府省・事業名・金額)
4. 届出・認定(部門ごとにまとめる)
5. 空欄だった項目の一覧
評価や推測は書かない。件数が上限を超えるときは「ほか◯件」と書く。5番目の「空欄だった項目の一覧」を入れる理由は、後述の読み違えを防ぐためです。出力のイメージは次のとおりです(項目名はAPIのスキーマに沿った例示で、数値は架空です)。
# 株式会社サンプル商事(法人番号 1234567890123)
## 基本
- 所在地: 東京都千代田区…
- 資本金: 10,000,000 / 従業員数: 25
## 補助金(2件)
- 2024-06-10 / 経済産業省 / ものづくり補助金 / 金額: 8,000,000
## 空欄だった項目
- 調達情報: 0件 / 表彰情報: 0件メモを渡す前に、数字をひとつだけ原本のJSONと見比べる習慣を付けると、転記ミスに気づけます。Claude Codeに「メモの金額を、元のJSONから再度読み出して突き合わせて」と頼めば、検算まで任せられます。
名簿全体を一括ダウンロードで突合する
訪問先が多いとき、あるいは取引先名簿の全社に補助金歴を付けたいときは、一括ダウンロードを使います。画面では、取得する種類情報を選び、メタデータの要否と文字コードを選んで、アクセストークンを入力します。ZIPで落ちてきます。
ZIPの中身は、列の並びを人が覚えている前提で扱わないほうが安全です。解凍したらまず、ファイルの先頭数行と列名をClaude Codeに読ませ、それを元に結合スクリプトを書かせます。
data/download/ に補助金情報のZIPを解凍した。
先頭20行と列名を確認し、法人番号の列を特定して。
そのうえで customers.csv の法人番号と結合し、補助金の有無と直近の認定日を
列に足した customers_with_subsidy.csv を別名で出力して。元のCSVは上書きしない。文字コードはS-JISとUTF-8から選べます。Excelで開く用途ならS-JIS、Pythonで処理するならUTF-8を選ぶのが素直です。「法人情報(一括)」という種類もあるため、全種類の突合が目的なら、種類ごとに落とすかどうかを先に決めておきます。
読み違えやすい点
メモの信頼性を左右するのは、データの意味の取り違えです。
落とし穴
補助金の金額が文字列で返り、単位もデータだけでは分からない
API仕様では、補助金の amount は文字列型、調達の amount は整数型です。補助金の金額を数値として合算する前に、桁区切りや欠損の形を確認します。CLAUDE.mdで「数値化できない行は原文のまま残す」と決めておくと、無理な変換で金額が狂うのを防げます。
- 空欄は「なし」と同義ではありません。補助金や調達が0件でも、実際に採択や受注がなかったとは限らず、gBizINFOに情報が取り込まれていないだけの場合があります。各情報にはメタデータとして出典元・最終更新日・データ品質が付くため、メタデータ付きで取得して、出典元の更新時期をメモに残します。
- 掲載の誤りは出典元に直します。サイトの案内では、法人情報の非公開化やデータの変更はgBizINFOでは受け付けず、出典元の府省へ問い合わせる扱いです。メモの内容が実態とずれたときも、訂正先は出典元になります。
- 法人名の文字が縮退していることがあります。JIS X 0213の範囲外の字は、範囲内の文字に置き換えて表記されます。登記上の表記と一字違う場合があるため、契約書の宛名にはそのまま使わず、登記事項で確認します。
- 補助金は「採択実績」であって、業績の指標ではありません。受給額が大きいことと、事業が好調であることは別の話です。メモには事実だけを置き、評価は読む人に委ねます。
取得できる件数にも注意が要ります。法人検索エンドポイントは、1ページあたり最大5000件、ページ番号は1〜10の範囲です。条件検索で候補を絞り込む使い方もできますが、訪問先が決まっている場合は、法人番号で直接引くほうが確実です。
運用に乗せるときの組み立て
毎週の訪問予定から自動でメモを作るなら、手順を次の3段に分けておくと止まりにくくなります。
訪問前メモの作成フロー
- 1
法人番号を確定する
予定表の取引先名から、法人番号Web-APIの名寄せで番号を確定します。未確定の先は、メモの対象から外します。
- 2
gBizINFOから取得して保存する
番号ごとに基本情報・補助金・調達・届出認定を取得し、JSONのまま保存します。再取得の差分が分かるよう、取得日をファイル名に入れておくと便利です。
- 3
メモを出し、数字を1件検算する
指定の型でMarkdownを作らせ、金額を1件だけ原本と突き合わせます。空欄の一覧に目を通してから、持ち出します。
この流れをスキル化すれば、「今週の訪問先のメモを作って」の一言で動かせます。ただし、トークンの扱いと「評価を書かせない」指示は、スキルの中にも残します。
まとめ
gBizINFOは、法人番号をキーに補助金・調達・届出認定・表彰を引ける公的データです。数社ならAPI、名簿全体ならZIPの一括ダウンロードが向きます。Claude Codeには、取得スクリプトの作成、結合、メモの整形を任せられます。
任せきりにしないのは2点です。ひとつは、空欄を「なし」と読まないこと。もうひとつは、事実の並べ替えを超えて評価を書かせないこと。この2つをCLAUDE.mdに固定しておけば、訪問前の準備は短くなり、メモの中身も説明できる範囲に収まります。