ClaudeCodeで反社チェックをGoogle スプレッドシートで自動化してみた【Web検索編】

スポンサーリンク
スポンサーリンク

取引先の審査業務において、反社会的勢力との関係確認(いわゆる「反社チェック」)は欠かせないプロセスです。

反社チェックには様々な手法があります。専門のデータベースサービスを使う方法、新聞記事DBで報道履歴を調べる方法、そしてWeb検索で名称とキーワードを組み合わせて検索する方法など、要件や予算によって選択肢は変わります。

今回紹介するのは、そのなかでも「Web検索のみを使った一次スクリーニング」のサンプルです。「まず自動化してみたい」「費用をかけずに試したい」という方の参考になれば幸いです。より厳格なチェックが必要な場面では、新聞記事DBや専門サービスとの組み合わせを検討してください。

スポンサーリンク

反社チェックの手法と要件整理

自動化の前に、まず自社の要件に合った手法を選ぶことが重要です。

各手法の概要

🔍 Web検索
Google等でキーワード検索し、報道・行政処分などのヒットを確認。
→ 件数が少ない・コスト重視・一次スクリーニングに向いている

📰 新聞記事DB(日経テレコン・G-Searchなど)
報道履歴を網羅的に確認。
→ 上場企業・高額取引・精度重視に向いている

🗂 専門データベース(帝国データバンク・東京商工リサーチなど)
反社DBを利用。
→ 法的根拠が必要・大量処理に向いている

🏛 官報・行政処分DB(金融庁・国税庁など)
公開情報を参照。
→ 行政処分歴の確認に特化

📌 本記事の位置づけ
本記事はWeb検索を使った一次スクリーニングのサンプルです。取引規模やリスクに応じて、新聞記事DBや専門サービスと組み合わせることを推奨します。

Web検索での反社チェックの考え方

検索クエリの設計

Web検索で反社チェックを行う場合、法人名・代表者名と反社関連キーワードを組み合わせます。今回のサンプルでは以下の2パターンを使っています。

パターンA:刑事・司法関連

"株式会社〇〇" 逮捕 OR 判決 OR 暴力団 OR 詐欺

パターンB:反社・行政関連

"株式会社〇〇" 暴力団 OR ヤクザ OR 総会屋 OR インサイダー OR 相場操縦 OR 行政処分 OR 行政指導

法人の場合は代表者名でも同様に検索するため、1法人あたり最大4クエリを実行します。

キーワードは要件に合わせて調整する

上記はあくまでサンプルです。業種や取引規模によって必要なキーワードは変わります。

キーワード追加例

✅ 金融関連の不正を調べたい場合
横領 OR 背任 OR 粉飾 OR 脱税

✅ 反社との関係をより詳しく調べたい場合
組長 OR 組員 OR 親分 OR 舎弟

✅ 行政・法的問題を調べたい場合
業務停止 OR 営業停止 OR 課徴金 OR 告訴

✅ 風評・トラブルを調べたい場合
訴訟 OR 被告 OR 被疑者 OR 書類送検

Web検索APIの選び方

Google検索の結果をプログラムで取得するには、APIを使います。2025年時点での主要な選択肢を比較します。

✅ SerpApi(今回採用)

無料枠:100クエリ/月 / クレジットカード:不要
月間処理目安(法人4クエリ/件):約25件/月

✅ Brave Search API

無料枠:2,000クエリ/月 / クレジットカード:必要
月間処理目安:約500件/月

✅ Serper.dev

無料枠:2,500クエリ/月(試用) / クレジットカード:不要
月間処理目安:約625件/月

❌ Google Custom Search API

2025年時点で新規登録不可

❌ Bing Search API

2025年廃止済み

⚠️ Playwright(スクレイピング)

無料・クレカ不要だが、ボット検出・利用規約リスクあり

件数による選び方の目安

月25件以下 → SerpApi 無料枠(クレカ不要で手軽に始められる)

月26〜500件 → Brave Search API 無料枠(クレカ登録が必要)

月500件以上 → 有料プランを検討(SerpApi Developerプラン: $75/月 など)

精度重視 → 新聞記事DB・専門サービスを併用

実装の概要

システム構成

Google スプレッドシート上にデータを用意し、Google Apps Script(GAS)からSerpApiを呼び出して検索結果を取得します。外部ツールのインストールは不要で、スプレッドシートだけで完結します。

スプレッドシート(M列: 法人名 / O列: 代表者名)
        ↓ GASが読み取り
SerpApi(Google検索結果を返す)
        ↓ ヒット件数を取得
スプレッドシート(W〜Z列に件数を書き込み)

スプレッドシートの列構成

入力列

・M列:法人名 / 個人事業主名
・O列:代表者名(法人のみ)

出力列(自動記入)

・W列:法人名 × パターンA
・X列:代表者名 × パターンA
・Y列:法人名 × パターンB
・Z列:代表者名 × パターンB

0件なら緑、1件以上なら赤でセルが色分けされます。

APIキーの管理

セキュリティ上、APIキーはコードにべた書きせず、GASのスクリプトプロパティに格納しています。スクリプトを共有してもキーが漏洩しません。

function _getApiKey() {
  const key = PropertiesService.getScriptProperties().getProperty('SERPAPI_KEY');
  if (!key) {
    throw new Error('APIキーが設定されていません。');
  }
  return key;
}

クォータ管理

  • 既チェック済みの行はスキップ(W列に値があれば再実行しない)
  • 上限に達した時点でアラートを出して処理を停止
  • メニューから残りクエリ数をいつでも確認できる

APIを選ぶまでの道のり

今回の実装で一番苦労したのは、使えるAPIを探す部分でした。

最初に試みたGoogle Custom Search APIは、設定を進めるうちに新規ユーザーへの提供が終了していることが判明。Programmable Search Engineの「ウェブ全体を検索」オプションも廃止されており、ドキュメントと実態が乖離していました。

次に検討したPlaywrightによるスクレイピングは技術的には実現可能ですが、Googleのボット検出を回避するための対策が必要で、利用規約上のリスクもあります。

最終的にSerpApiに落ち着きました。クレジットカード不要で使い始められ、GASからHTTPリクエストを投げるだけで検索結果が構造化JSONで返ってくる手軽さが決め手です。

注意点

⚠️ Web検索は一次スクリーニングに留める

Googleの検索ヒット件数は推定値であり、同じクエリでも日によって変動します。また、報道されていない情報はヒットしません。このツールはあくまで「要確認フラグを立てる」ための一次スクリーニングとして位置づけ、ヒットした案件は必ず目視で内容を確認してください。

⚠️ 同姓同名・社名の一致に注意

一般的な法人名や人名では無関係の情報がヒットすることがあります。検索クエリにダブルクォーテーションをつけて完全一致検索にしていますが、誤検知はゼロにはなりません。

📌 より厳格なチェックが必要な場合

高額取引・上場企業との契約・金融機関の与信審査など、精度が求められる場面では以下との組み合わせを検討してください。

  • 日経テレコン / G-Searchなどの新聞記事データベース
  • 帝国データバンク / 東京商工リサーチなどの信用調査サービス
  • 金融庁・警察庁などの公的機関の公開情報

まとめ

今回のサンプルは「Web検索だけで反社チェックを自動化する」という割り切った実装です。月25件程度までであればSerpApiの無料枠で賄え、クレジットカード不要で始められます。

件数が増える場合はBrave Search APIやSerper.devへの切り替え、精度が求められる場合は新聞記事DBや専門サービスとの組み合わせを検討するとよいでしょう。

まず動くものを作って運用してみる、という一歩の参考になれば幸いです。

コメント

タイトルとURLをコピーしました