PythonでOpenSOSData APIを使って米国企業情報を取得する方法
日本のビジネスプロフェッショナルにとって、米国企業との取引や投資を行う際に相手方の法人情報を正確に確認することは、コンプライアンス上の義務です。犯罪収益移転防止法(以下「犯収法」)や金融庁(FSA)が定めるKYC(顧客確認)要件に基づき、取引先の実在性・法的地位を第三者機関のデータで裏付けることが求められます。しかし、米国の50州それぞれが独自の企業登録制度を持つため、手動での情報収集は非常に煩雑です。
そこで活用したいのが OpenSOSData の REST API です。全米50州+ワシントンD.C.・プエルトリコ・米領バージン諸島の3,400万件超の企業データにアクセスでき、Pythonから数行のコードで米国企業情報を自動取得できます。本記事では、米国企業API Pythonの実装方法を規制背景とともに解説します。
なぜ今、米国企業の法人確認が重要なのか
犯罪収益移転防止法とKYC義務
2023年に改正された犯収法により、特定事業者(銀行・証券・保険・クレジット・仮想通貨交換業者など)は取引先が法人の場合、登記情報・実質的支配者・事業実態を確認し記録する義務を負います。米国企業を相手とする場合、Secretary of State(州務長官)の公式登録データが最も信頼性の高い一次ソースです。
金融庁のKYC指針
金融庁「マネー・ローンダリング及びテロ資金供与対策に関するガイドライン」は、海外法人との取引においてリスクベースアプローチを採用し、法人登録情報の取得・保存を求めています。FATFの第40勧告に対応する形で、日本のFinTechや証券会社は取引開始前に相手法人の設立州・法人種別・ステータス(存続/解散)を確認するフローを整備しています。
日米クロスボーダー投資における実務
日本企業がデラウェア州LLC(有限責任会社)を設立して米国市場に進出するケースや、逆に米国のスタートアップへ出資するケースでは、相手法人がアクティブかどうか、登録エージェントが有効かどうかを定期的に確認することがDD(デュー・ディリジェンス)の基本です。OpenSOSData APIはこのプロセスを自動化・効率化します。
OpenSOSData APIの概要
公式ドキュメントによると、APIは以下の情報を返します。
- 法人名(entity name)
- 法人種別(LLC、Corporation、LPなど)
- エンティティID
- ステータス(Active / Inactive / Dissolved など)
- 設立日(formation date)
- 登録エージェント名と住所
エンドポイントは POST https://api.opensosdata.com/v1/lookup のみ。シンプルな設計で、初めてのエンジニアでも迷わず統合できます。
料金体系
| 検索タイプ | 標準単価 | 大口割引(最安) | 用途 |
|---|---|---|---|
| ライブ検索(live_only) | $0.10 / 件 (約15円) |
$0.0314 / 件 | 最新情報が必要なKYC・DD |
| キャッシュ検索(cache_only) | $0.01 / 件 (約1.5円) |
$0.00314 / 件 | 大量バッチ処理・スクリーニング |
| キャッシュ優先(cache_first) | キャッシュ料金で取得、なければライブ | — | コスト最適化 |
従量課金制のため月額固定費は不要。アカウント登録後すぐに利用可能です。
Python実装:ステップバイステップ
前提条件
- Python 3.8以上
requestsライブラリ(pip install requests)- OpenSOSData APIキー(サインアップで取得)
基本的な企業情報取得
import requests
import json
import os
# APIキーは環境変数から取得(ハードコードしない)
API_KEY = os.environ.get("OPENSOSDATA_API_KEY", "your_api_key_here")
ENDPOINT = "https://api.opensosdata.com/v1/lookup"
def lookup_us_entity(company_name: str, state: str, cache_preference: str = "cache_first") -> dict:
"""
米国企業情報をOpenSOSData APIで取得する関数
:param company_name: 検索する会社名(英語)
:param state: 州コード(例: "DE" = デラウェア州, "CA" = カリフォルニア州)
:param cache_preference: "live_only" | "cache_first" | "cache_only"
:return: APIレスポンス(dict)
"""
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json"
}
payload = {
"company_name": company_name,
"state": state,
"cache_preference": cache_preference # ライブ or キャッシュの優先順位
}
response = requests.post(ENDPOINT, headers=headers, json=payload, timeout=30)
# HTTPエラーが発生した場合は例外を投げる
response.raise_for_status()
return response.json()
if __name__ == "__main__":
# デラウェア州に登録されたOpenAI, LLCを検索(例示用)
result = lookup_us_entity(
company_name="OpenAI, LLC",
state="DE",
cache_preference="live_only" # KYC用途のため最新データを取得
)
# 結果を整形して出力
print(json.dumps(result, indent=2, ensure_ascii=False))
KYCバッチ処理:複数企業を一括確認
import requests
import csv
import time
import os
API_KEY = os.environ.get("OPENSOSDATA_API_KEY")
ENDPOINT = "https://api.opensosdata.com/v1/lookup"
def batch_kyc_check(input_csv: str, output_csv: str):
"""
CSVに記載された米国企業リストを一括でKYC確認する
input_csv のフォーマット: company_name, state
"""
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json"
}
results = []
with open(input_csv, newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
payload = {
"company_name": row["company_name"],
"state": row["state"],
"cache_preference": "cache_first" # コスト削減のためキャッシュ優先
}
try:
resp = requests.post(ENDPOINT, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
# ステータスがActiveかどうかを判定してフラグを追加
status = data.get("status", "UNKNOWN")
kyc_pass = "YES" if status.upper() == "ACTIVE" else "NO"
results.append({
"company_name": row["company_name"],
"state": row["state"],
"entity_type": data.get("entity_type", ""),
"status": status,
"formation_date": data.get("formation_date", ""),
"registered_agent": data.get("registered_agent", {}).get("name", ""),
"kyc_pass": kyc_pass
})
except requests.RequestException as e:
# エラー時もCSVに記録して処理を継続
results.append({
"company_name": row["company_name"],
"state": row["state"],
"entity_type": "ERROR",
"status": str(e),
"formation_date": "",
"registered_agent": "",
"kyc_pass": "ERROR"
})
# APIへの過負荷を防ぐため0.5秒待機
time.sleep(0.5)
# 結果をCSVに出力
if results:
fieldnames = results[0].keys()
with open(output_csv, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(results)
print(f"処理完了: {len(results)} 件 → {output_csv}")
if __name__ == "__main__":
batch_kyc_check("us_companies.csv", "kyc_results.csv")
エラーハンドリングのベストプラクティス
本番環境ではリトライ処理と指数バックオフを実装することを推奨します。また、APIキーはAWS Secrets ManagerやGCP Secret Managerなどのシークレット管理サービスで管理し、ソースコードへの直接記載を避けてください。
実装時の注意点
cache_preference パラメータの選択
KYC・DDの用途では live_only を指定し、州務長官データベースから最新情報を取得することを強く推奨します。一方、大量スクリーニングやリスクモニタリングの初期フェーズでは cache_first を使うとコストを大幅に削減できます。なお、lookup_type というパラメータは存在しませんので使用しないでください。
法人番号(houjin bangou)とEINの違い
日本の法人番号(13桁)はマイナンバー法に基づく国税庁付番ですが、米国のEIN(Employer Identification Number)はIRS(内国歳入庁)が付番するもので、OpenSOSData APIが返すエンティティIDとは別物です。OpenSOSData APIは州レベルの登録IDを返します。EINの確認には別途IRS照会が必要です。
FAQ
Q. OpenSOSData APIはどの州に対応していますか?
全米50州に加え、ワシントンD.C.、プエルトリコ、米領バージン諸島に対応しており、3,400万件超のエンティティデータを提供しています。詳細は公式ドキュメントをご確認ください。
Q. 日本の犯収法対応のKYCに使えますか?
はい。OpenSOSData APIは米国州務長官の公式登録データを情報源とするため、法人の実在確認・ステータス確認の根拠資料として活用できます。ただし、実質的支配者(UBO)確認など犯収法が求めるすべての要件を単独でカバーするものではなく、補完的なデータソースとして位置づけてください。
Q. cache_preference の live_only と cache_first はどう使い分けますか?
KYC・コンプライアンス用途で最新情報が必要な場合は live_only($0.10/件)を使用してください。大量スクリーニングや定期バッチで多少の情報鮮度を許容できる場合は cache_first または cache_only($0.01/件)でコストを削減できます。
Q. デラウェア州LLCを設立した日本企業の情報も取得できますか?
はい。デラウェア州に登録された法人であれば、日本企業が設立したLLCやCorporationも検索可能です。法人名と州コード(DE)を指定してAPIを呼び出してください。
Q. 料金はどのように課金されますか?
従量課金制(Pay as you go)です。月額固定費はなく、利用したAPIコール数に応じて課金されます。標準価格はライブ検索$0.10/件、キャッシュ検索$0.01/件で、ボリュームが増えると割引が適用され最安でそれぞれ$0.0314/件・$0.00314/件になります。
Q. APIキーの取得方法を教えてください。
https://app.opensosdata.com でアカウントを作成するとAPIキーが発行されます。クレジットカード登録後すぐに利用を開始できます。
Q. Pythonのrequestsライブラリ以外でも使えますか?
はい。OpenSOSData APIは標準的なREST APIのため、curl、JavaScript(fetch/axios)、Go、Rubyなど任意のHTTPクライアントから利用可能です。POSTリクエストにJSONボディとBearerトークンを付与するだけです。
まとめ
米国企業との取引・投資を行う日本のビジネスプロフェッショナルにとって、相手方の法人情報を正確かつ効率的に確認することは、犯収法・金融庁ガイドライン・FATFの勧告に応えるための必須事項です。OpenSOSData のAPIを活用すれば、Pythonで数十行のコードを書くだけで、全米3,400万件超の企業データに自動アクセスできます。ライブ検索で最新データを取得しながら、バッチ処理ではキャッシュを活用してコストを最適化する設計が実務では効果的です。
まずは 無料アカウントを作成し、ドキュメントを参照しながら自社のKYCフローへの統合を検討してみてください。