エンドポイント一つで、四つの公式リスト
米国 OFAC、国連、EU、中国商務部の制裁および輸出管理データ 28,172 件を、自社の ERP、リスク管理、KYC システムに組み込めます。名称を送ると、該当の有無、どの記録に当たったか、そして確認用の公式文書へのリンクが返ります。
四つのソース、四つの形式——OFAC は CSV、国連は XML、EU は独自のデータベース、中国商務部に至っては API がなく公告ページだけです。
そしてリストは毎日変わります。直近の更新では OFAC が 97 件減りました(削除も同期しないと偽陽性が出ます)。
この保守コストは一度きりではなく、ずっと続きます。
この API には API プラン(US$19.9/月、メンバーシップの全機能を含みます)が必要です。
ログイン後、メンバーシップのタブから登録し、API キーの項目でキーを作成してください。キーは tp_xxxxxxxx の形式です。
平文のキーは作成時に一度しか表示されません——その場ですぐシークレット管理に保存してください。
curl -H "Authorization: Bearer tp_YOUR_KEY" "https://tradeprotected.com/api/v1/screen?name=GAZPROM"
{
"matched": true,
"count": 2,
"rows": [
{
"source": "OFAC",
"name": "GAZPROM NEFT",
"type": "entity",
"programs": "RUSSIA-EO14024",
"listed_on": "2022-02-24",
"url": "https://sanctionssearch.ofac.treas.gov/..."
}
]
}
matched は真偽値なのでそのまま分岐に使えます。rows[].url は公式記録を指すので、確認の証跡として保管してください。
単件の照会。パラメータ name(必須、最大 200 文字)。7 桁の数字は船舶の IMO 番号とみなし、完全一致で照合します。
一括照会。1 回の呼び出しで最大 100 件。取引の前に買主・売主・船主・荷受人をまとめて確認するのに便利です。
リストの検索と全件ダウンロード。自前でコピーを保持する場合に使います。パラメータ:q、source、type、limit(既定 100、最大 500)、offset。
ソース別の収録件数と最終更新日。同期ジョブが事前に問い合わせれば、不要な全件ダウンロードを避けられます。
name | 照会する名称、または 7 桁の IMO 番号。GET /screen では必須 |
|---|---|
names | 一括照会用の名称の配列。POST のボディに入れ、最大 100 件 |
source | OFAC / UN / EU / EUX / CN。空欄はすべてを意味します |
type | entity / individual / vessel / aircraft |
format | json(既定)/ xlsx(Excel)/ csv / ndjson |
limit | 1 ページあたりの行数。既定 100、最大 500 |
offset | オフセット。limit と組み合わせてページ送りします |
同じデータを、コード量の少ない順に三通りの方法で利用できます:
以下のスニペットをコーポレートサイトの任意のページに貼ると、当社のデータを使った制裁リスト検索窓が表示されます。装飾を抑えた見た目なので、既存のレイアウトになじみます。顧客に自己確認の手段を提供したいフォワーダー、法律事務所、業界団体に向いています。
<iframe src="https://tradeprotected.com/embed?key=tp_YOUR_KEY&lang=ja"
style="width:100%;height:420px;border:1px solid #e4eaf1;border-radius:12px"
loading="lazy"></iframe>
埋め込みコードに含まれるキーは公開されます——ページのソースを見れば誰でも読めます。ですからメンバーシップ → API キーで、そのキーに許可ドメイン(例:yourcompany.com)を設定してください。コピーされても他のサイトでは動きません。Google Maps などのフロントエンド用キーと同じ考え方です。
埋め込み用のキーとサーバーから呼ぶキーは分けることをおすすめします。前者は自社ドメインに限定し、後者は制限なしのまま自社サーバーにだけ置きます。1 アカウントで同時に 5 本まで持てるので、環境ごとに分けるには十分です。
format パラメータを足すだけです。検索系のエンドポイントはすべて対応しています。
?format=xlsx。二言語併記の見出し、調整済みの列幅、太字の濃色ヘッダー行を備えた本物の .xlsx です。ダブルクリックすればそのまま報告書の別紙に使え、書式を整え直す必要がありません。?format=csv。UTF-8 BOM 付きなので、ラテン文字以外のテキストも Excel で正しく開けます。スクリプトからも扱いやすい形式です。?format=ndjson。1 行に 1 つの独立した JSON オブジェクト。ストリーミング処理に向いており、全件ダウンロードをメモリに載せきる必要がありません。matched と count のサマリーフィールドが付きます。# 中国商務部のリストを Excel に書き出す
curl -H "Authorization: Bearer tp_YOUR_KEY" "https://tradeprotected.com/api/v1/sanctions?source=CN&limit=500&format=xlsx" -o cn-list.xlsx
# 単件照会の結果を表計算ファイルとして記録に残す
curl -H "Authorization: Bearer tp_YOUR_KEY" "https://tradeprotected.com/api/v1/screen?name=GAZPROM&format=xlsx" -o gazprom.xlsx
# IMO 番号で船舶を検索する
curl -H "Authorization: Bearer tp_YOUR_KEY" "https://tradeprotected.com/api/v1/screen?name=9209508"
import requests
KEY = "tp_YOUR_KEY"
r = requests.get(
"https://tradeprotected.com/api/v1/screen",
params={"name": "GAZPROM"},
headers={"Authorization": "Bearer " + KEY},
timeout=20,
)
r.raise_for_status()
data = r.json()
if data["matched"]:
print("MATCH", data["count"], "件該当——要人手確認")
for row in data["rows"]:
print(row["source"], row["name"], row["url"])
const KEY = process.env.TP_API_KEY;
async function screen(name) {
const url = new URL("https://tradeprotected.com/api/v1/screen");
url.searchParams.set("name", name);
const r = await fetch(url, { headers: { authorization: "Bearer " + KEY } });
if (!r.ok) throw new Error("screen failed: " + r.status);
return r.json();
}
const out = await screen("SOVCOMFLOT");
console.log(out.matched ? "MATCH " + out.count : "clear");
names = ["GAZPROM", "ACSL", "SOVCOMFLOT"]
r = requests.post(
"https://tradeprotected.com/api/v1/screen",
json={"names": names},
headers={"Authorization": "Bearer " + KEY},
timeout=60,
)
for item in r.json()["results"]:
flag = "MATCH" if item["matched"] else "clear"
print(flag, item["query"], item["count"])
キー 1 本あたり 1 日 1000 回、UTC 00:00 にリセットされます。すべてのレスポンスに次の 2 つのヘッダーが付きます:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
1 アカウントで有効なキーを 5 本まで持てます。環境ごと(本番 / 検証 / 特定の担当者)に分けておけば、他の利用先に影響を与えずに 1 本だけ失効させられます。
エラーは常に {"error":{"code":"...","message":"..."}} を返します。分岐はメッセージ本文ではなく code で行ってください。
| 401 | missing_key キーが送られていない · invalid_key キーが無効または失効している |
|---|---|
| 403 | membership_required 未登録または期限切れ。プランが切れるとキーは動作を停止し、更新すれば再発行なしでそのまま復帰します |
| 429 | quota_exceeded 1 日の利用量を使い切った |
| 400 | missing_name / name_too_long / too_many_names パラメータの問題 |
照合は部分文字列と正規化した語句に基づくため、該当はデューデリジェンス上の手がかりであって、法的な結論ではありません。同名異人や翻字の違いは偽陽性も偽陰性も生みます。最終的な判断は url が指す公式記録に基づいて行ってください。
API プランにはメンバーシップの全機能に加え、データ API、埋め込みウィジェット、Excel 書き出しが含まれます。
同等の照会 API は、年間契約で数千ドルからというのが一般的です。当社は月額で、いつでも解約できます。まずは無料で何件か照会し、データを評価してから組み込んでください。