PythonでOpenSOSData APIを使って米国企業情報を取得する方法
日本のビジネスプロフェッショナルにとって、米国企業との取引や投資を行う際に相手先企業の実態を確認することは、法的義務であると同時にビジネスリスクを回避するための必須プロセスです。犯罪による収益の移転防止に関する法律(犯収法)や金融庁(FSA)のKYC(顧客確認)ガイドラインに基づき、取引先の法人情報を正確に把握することが求められています。しかし、米国各州のSecretary of State(州務長官)データベースは州ごとに異なり、手動で確認するのは非常に煩雑です。
本記事では、米国企業API Pythonの実装として、OpenSOSData APIをPythonから活用し、米国企業情報を効率的かつ自動的に取得する方法を解説します。コンプライアンス担当者、開発者、M&A担当者など、幅広い日本のプロフェッショナルに向けた実践的なガイドです。
なぜ日本のプロフェッショナルに米国企業情報APIが必要なのか
犯収法とFSAのKYC要件
2008年施行の犯収法(正式名称:犯罪による収益の移転防止に関する法律)は、金融機関や特定事業者に対し、取引相手の本人確認(KYC)を義務付けています。法人取引先については、登記情報・代表者情報・実質的支配者の確認が必須であり、米国法人が取引相手の場合でも例外ではありません。
金融庁のガイドラインでは、海外法人との取引においても「信頼できる公的情報源」からの確認が推奨されています。Secretary of Stateのデータベースはまさにこれに該当し、APIを通じて取得したデータは監査証跡としても活用できます。
日米クロスボーダー投資コンプライアンス
日本からの対米直接投資(FDI)は年々増加しており、CFIUS(対米外国投資委員会)対応を含むデューデリジェンスの重要性が高まっています。デラウェア州LLCやC-Corpなど、日本企業がよく利用する米国事業体の法的ステータスを迅速に確認できることは、契約前の必須確認事項です。
また、FATFの勧告に準拠する観点からも、取引先の法人実態(ゴーストカンパニーでないこと)を客観的なデータで確認するプロセスは、コンプライアンス体制の強化につながります。
OpenSOSData APIの概要
OpenSOSDataは、米国50州+ワシントンD.C.、プエルトリコ、米領バージン諸島の全州務長官データベースをカバーする、3,400万件以上の法人情報を提供するREST APIサービスです。
主な返却データ項目
- 法人名(Entity Name)
- 法人種別(LLC、C-Corp、S-Corp など)
- 州内固有ID(Entity ID)
- 法人ステータス(Active / Dissolved / Suspended など)
- 設立日(Formation Date)
- 登録エージェント名・住所(Registered Agent & Address)
料金体系
| プラン | 単価(USD) | 目安(JPY換算) | 用途 |
|---|---|---|---|
| ライブルックアップ(標準) | $0.10 / 件 | 約15円 / 件 | リアルタイム最新情報 |
| ライブルックアップ(大口) | $0.0314〜 / 件 | 約4.7円〜 / 件 | バッチ処理・大量照会 |
| キャッシュルックアップ(標準) | $0.01 / 件 | 約1.5円 / 件 | 速度優先・コスト削減 |
| キャッシュルックアップ(大口) | $0.00314〜 / 件 | 約0.47円〜 / 件 | 大規模スクリーニング |
料金は完全従量制(Pay-as-you-go)で、月額固定費は不要です。詳細は公式ドキュメントをご確認ください。
PythonでAPIを呼び出す実装例
以下は、Pythonのrequestsライブラリを使ったOpenSOSData APIの基本的な呼び出し例です。まずアカウント登録を行い、APIキーを取得してください。
インストール
# requestsライブラリのインストール(未導入の場合)
pip install requests
基本的なルックアップ(ライブ取得)
import requests
import json
# APIエンドポイントとAPIキーの設定
API_URL = "https://api.opensosdata.com/v1/lookup"
API_KEY = "your_api_key_here" # app.opensosdata.comで取得したAPIキー
# リクエストヘッダー
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json"
}
# リクエストボディ
# cache_preference: "live_only" → 常に最新データを取得
# cache_preference: "cache_first" → キャッシュ優先(速度・コスト重視)
# cache_preference: "cache_only" → キャッシュのみ(最安値)
payload = {
"state": "DE", # 州コード(デラウェア州の例)
"entity_name": "Example Corp", # 検索する法人名
"cache_preference": "live_only" # リアルタイムデータを要求
}
# APIリクエストの送信
response = requests.post(API_URL, headers=headers, json=payload)
# レスポンスの確認
if response.status_code == 200:
data = response.json()
print("法人情報取得成功:")
print(json.dumps(data, indent=2, ensure_ascii=False))
else:
print(f"エラー発生: {response.status_code}")
print(response.text)
複数企業の一括照会(KYBスクリーニング用)
import requests
import time
API_URL = "https://api.opensosdata.com/v1/lookup"
API_KEY = "your_api_key_here"
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json"
}
# KYBスクリーニング対象企業リスト(州コード + 法人名)
target_companies = [
{"state": "DE", "entity_name": "Acme Holdings LLC"},
{"state": "CA", "entity_name": "Pacific Ventures Inc"},
{"state": "NY", "entity_name": "Manhattan Trading Corp"},
]
results = []
for company in target_companies:
payload = {
"state": company["state"],
"entity_name": company["entity_name"],
"cache_preference": "cache_first" # コスト削減のためキャッシュ優先
}
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code == 200:
result = response.json()
results.append({
"検索企業名": company["entity_name"],
"州": company["state"],
"取得データ": result
})
print(f"✓ {company['entity_name']} - 取得完了")
else:
print(f"✗ {company['entity_name']} - エラー: {response.status_code}")
# APIレート制限を考慮して0.5秒待機
time.sleep(0.5)
# 結果をJSONファイルに保存(監査証跡として活用可能)
import json
with open("kyb_screening_results.json", "w", encoding="utf-8") as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"\n合計 {len(results)} 件のスクリーニング完了。結果をkyb_screening_results.jsonに保存しました。")
cache_preferenceパラメータの使い分け
| 値 | 動作 | 推奨シーン |
|---|---|---|
live_only |
常に最新データを州データベースから取得 | 契約締結前の最終確認、訴訟関連調査 |
cache_first |
キャッシュがあれば使用、なければライブ取得 | 定期的なスクリーニング、大量バッチ処理 |
cache_only |
キャッシュのみ参照(未キャッシュは返却なし) | コスト最優先の大規模スクリーニング |
日本法人番号(法人番号)との違い
日本の法人番号(13桁)は国税庁が一元管理しており、法人番号公表サイトで誰でも検索可能です。一方、米国には統一的な連邦法人番号は存在せず、各州のEntity IDと連邦税番号(EIN)が別々に管理されています。デラウェア州で設立した日本企業のUS子会社は、デラウェア州のEntity IDとIRSが発行するEINの両方を持つことになります。OpenSOSData APIはSecretary of Stateレベルの情報(Entity ID・設立情報・登録エージェント)を提供するため、法人の実在確認・ステータス確認に最適です。
コンプライアンス担当者へのポイント
APIで取得したデータは、取得日時のタイムスタンプとともにログとして保存することを推奨します。これにより、犯収法や金融庁ガイドラインが求める「確認記録の保存義務」(7年間)に対応した証跡を構築できます。また、ステータスが「Active」以外(Dissolved、Revoked、Suspended など)の場合は即座にアラートを発する仕組みを実装することで、コンプライアンスリスクを自動的に検知できます。
よくある質問(FAQ)
Q. OpenSOSData APIはどの米国州をカバーしていますか?
米国50州すべて+ワシントンD.C.、プエルトリコ、米領バージン諸島をカバーしており、合計3,400万件以上の法人情報にアクセスできます。デラウェア州、カリフォルニア州、ニューヨーク州など、日本企業が事業体を設立することの多い州も当然含まれています。詳しくはドキュメントをご確認ください。
Q. APIで取得したデータは犯収法上の本人確認書類として使えますか?
Secretary of StateのデータはFSAが推奨する「信頼できる公的情報源」に該当します。ただし、犯収法上の確認記録としては、取得日時・データソース・確認担当者を記録した上で保存することが必要です。APIのレスポンスをそのままログとして保存し、内部のKYBプロセスと連携させることで、監査に耐えうる記録を構築できます。法的判断については各社のコンプライアンス担当者または弁護士にご確認ください。
Q. 料金はどのように発生しますか?月額固定費はありますか?
完全従量制(Pay-as-you-go)のため、月額固定費は一切かかりません。ライブルックアップは1件あたり$0.10(大口は$0.0314〜)、キャッシュルックアップは$0.01(大口は$0.00314〜)です。使った分だけ課金されるため、少量の照会から始めることができます。アカウント登録は無料です。
Q. cache_preferenceパラメータはどれを選ぶべきですか?
契約前の最終確認や訴訟関連の調査ではlive_onlyを推奨します。定期的なKYBスクリーニングや大量バッチ処理ではcache_firstがコストと鮮度のバランスが取れており最適です。予算を最優先にする大規模スクリーニングにはcache_onlyが最も低コストです。なお、lookup_typeというパラメータは存在しないため、必ずcache_preferenceを使用してください。
Q. Pythonの他にどの言語・ツールから使えますか?
OpenSOSData APIはHTTPSのREST APIであるため、Python以外にもJavaScript(Node.js)、Java、PHP、Ruby、Go、またはcurlなどのコマンドラインツールからも利用可能です。リクエストボディはJSON形式で、標準的なHTTP POSTメソッドを使用します。ドキュメントにはcurlを使ったサンプルも掲載されています。
Q. 日本語の法人名で検索することはできますか?
米国Secretary of Stateに登録される法人名は英語(またはローマ字表記)が原則です。日本企業の米国子会社も、登記上は英語名で登録されているため、英語の正式法人名で検索することを推奨します。例えば「Toyota Motor Corporation」や「SoftBank Group Corp」のように、米国登記上の正式名称を使用してください。
Q. APIのレート制限はありますか?
プランによってレート制限が設定されています。大量バッチ処理を行う場合は、リクエスト間に適切なウェイト(上記コード例では0.5秒)を設けることを推奨します。具体的なレート制限の詳細は公式ドキュメントをご参照いただくか、アカウントダッシュボードでご確認ください。
まとめ
米国企業API Pythonの実装として、OpenSOSData APIは日本のコンプライアンス担当者・開発者・M&A実務者にとって非常に実用的なソリューションです。犯収法・FSAガイドライン・FATFの要件を踏まえたKYBプロセスに、API経由の自動化を組み込むことで、精度・速度・コストのすべてを改善できます。
まずは無料アカウントを登録して、少量のテストリクエストから始めてみてください。詳細な仕様は公式ドキュメント、サービス全体の概要はOpenSOSData公式サイトでご確認いただけます。