TradeProtected大宗商品贸易合规平台 Commodity Trade Compliance

制裁筛查 API

Sanctions Screening API — one endpoint, four official lists

把 27,270 条美国 OFAC、联合国、欧盟、中国商务部的制裁与出口管制名单,接进你自己的 ERP、风控或 KYC 系统。 传一个名称,返回是否命中、命中哪几条、以及可点开核实的官方出处链接。

Screen any counterparty against 27,270 entries from OFAC, the UN, the EU and China MOFCOM from inside your own systems.

27,270条名单记录 · entries
4个官方来源 · official sources
每日自动更新 · refreshed daily
JSON / CSV / NDJSON输出格式 · formats

谁需要它

Trading & freight companies · banks and trade finance · law firms and compliance consultants · SaaS vendors adding a compliance module.

为什么不自己爬 · Why not build it yourself

四个来源四种格式:OFAC 是 CSV、联合国是 XML、欧盟是自家数据库、中国商务部干脆没有接口只有公告网页。 名单还天天在变——本站上一轮刷新 OFAC 就少了 97 条(实体被移出也必须同步,否则会误报)。 这些维护成本是持续的,不是一次性的。

Four sources, four formats, and no API at all on the Chinese side — plus daily churn. It is ongoing maintenance, not a one-off script.

三步接入

1. 开通会员并创建密钥

API 是会员专属功能。登录后进「会员」页开通,再到「API 密钥」里点新建, 密钥形如 tp_xxxxxxxx明文只在创建时显示一次,请当场存进你的密钥管理器。

2. 发一个请求

curl -H "Authorization: Bearer tp_你的密钥" \
  "https://tradeprotected.com/api/v1/screen?name=GAZPROM"

3. 读返回

{
  "query": "GAZPROM",
  "matched": true,
  "count": 2,
  "rows": [
    {
      "source": "OFAC",
      "name": "GAZPROM NEFT",
      "type": "entity",
      "country": "Russia",
      "programs": "UKRAINE-EO13662",
      "listed_on": "2014-09-12",
      "url": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=17962"
    }
  ]
}

matched 是布尔值,可以直接拿去做流程判断;rows[].url 指向官方原始记录, 存进你的尽调档案即可作为核查留痕。

接口清单

GET/api/v1/screen

单个名称筛查。参数 name(必填,最长 200 字符)。 传 7 位数字视为船舶 IMO 号,自动走船舶精确匹配。

GET /api/v1/screen?name=SOVCOMFLOT
GET /api/v1/screen?name=9209508        # 按 IMO 查船
GET /api/v1/screen?name=GAZPROM&format=csv
POST/api/v1/screen

批量筛查,单次最多 100 个名称。适合下单前一次性核对买方、卖方、船东、收货人。

curl -X POST -H "Authorization: Bearer tp_你的密钥" \
  -H "Content-Type: application/json" \
  -d '{"names":["GAZPROM","ACSL","SOVCOMFLOT"]}' \
  https://tradeprotected.com/api/v1/screen
GET/api/v1/sanctions

名单浏览与全量拉取,给要把名单同步进自己库的场景。 参数:q 关键词、source 来源、type 对象类型、 limit(默认 100,上限 500)、offset 偏移。

GET /api/v1/sanctions?source=CN&limit=500&offset=0&format=csv
GET/api/v1/sources

各来源的条目数与最近更新时间。同步任务可以先查这个再决定要不要重新拉全量。

{
  "sources": [
    {
      "code": "OFAC",
      "name": "US Treasury OFAC — Specially Designated Nationals (SDN)",
      "count": 19157,
      "updated_at": "2026-07-28T14:42:59.194Z"
    }
  ],
  "total": 27270
}

参数速查 · Parameters

name要筛查的名称,或 7 位 IMO 号。GET /screen 必填
names批量筛查的名称数组,POST body,最多 100 个
sourceOFAC / UN / EU / EUX / CN,留空为全部
typeentity 公司 / individual 个人 / vessel 船舶 / aircraft 飞机
formatjson(默认)/ csv / ndjson
limit单页条数,默认 100,上限 500
offset偏移量,配合 limit 翻页

输出格式

JSON(默认)—— 结构化返回,带 matchedcount 等汇总字段,适合程序判断。

CSV —— ?format=csv。带 UTF-8 BOM,Excel 双击打开中文不乱码, 列固定为 source, name, type, country, programs, listed_on, url。适合直接进合规报告附件。

NDJSON —— ?format=ndjson。每行一个独立 JSON 对象, 适合流式管道逐行解析,拉全量时不必把整个响应读进内存。

# 拉中国名单存成 Excel 能直接开的 CSV
curl -H "Authorization: Bearer tp_你的密钥" \
  "https://tradeprotected.com/api/v1/sanctions?source=CN&limit=500&format=csv" \
  -o cn-list.csv

代码示例

Python

import requests

KEY = "tp_你的密钥"
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("命中", data["count"], "条,需人工复核")
    for row in data["rows"]:
        print(" -", row["source"], row["name"], row["url"])
else:
    print("未命中任何制裁名单")

Node.js

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 ? "命中 " + out.count + " 条" : "未命中");

批量(Python)

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 = "命中" if item["matched"] else "通过"
    print(flag, item["query"], item["count"])

配额与错误码

每把密钥每日 1000 次调用,UTC 00:00 重置。每次响应都带这两个头:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987

一个账号最多同时保有 5 把有效密钥,建议按环境分开(生产 / 测试 / 某个同事), 出问题时可以只吊销一把而不影响其他调用方。

错误码 · Errors

错误统一返回 {"error":{"code":"...","message":"..."}},请按 code 判断而不是文案。

401missing_key 没传密钥 · invalid_key 密钥无效或已吊销
403membership_required 会员已过期——会员一过期密钥立即失效,续费后无需换新
429quota_exceeded 当日额度用尽
400missing_name / name_too_long / too_many_names 参数问题

使用须知 · Important

名单匹配为归一化子串与短语匹配,命中结果是尽职调查的提示,不是法律结论。 同名同姓、音译差异都可能造成误报或漏报,最终判断请以 url 指向的官方原始记录为准。

Matches are due-diligence signals, not legal conclusions. Always verify against the official record linked in each result.

开通会员即可使用

API 包含在会员权益内,没有额外接口费。先免费查几条看看数据质量,再决定要不要接。

The API is included in membership at no extra cost. Try the free search first.

免费试查 · Try it free

调用量超过每日 1000 次、需要专属额度或私有化部署? 看企业方案 →