Один эндпоинт, четыре официальных списка
Подключите 28,172 записей санкционных списков и экспортного контроля OFAC (США), ООН, ЕС и Минкоммерции КНР к собственным системам ERP, риск-менеджмента или KYC. Передайте наименование — получите факт совпадения, перечень совпавших записей и ссылку на официальную запись для проверки.
Четыре источника — четыре формата: OFAC отдаёт CSV, ООН — XML, у ЕС собственная база, а у Минкоммерции КНР 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 судна и сопоставляется точно.
Пакетная проверка, до 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 | Записей на страницу, по умолчанию 100, максимум 500 |
offset | Смещение, используется вместе с limit для постраничного вывода |
Одни и те же данные, три способа получения — от «без кода» к «с кодом»:
Вставьте фрагмент ниже на любую страницу корпоративного сайта — появится строка поиска по санкционным спискам на наших данных, оформленная сдержанно и легко вписывающаяся в вёрстку. Подходит экспедиторам, юрфирмам и отраслевым ассоциациям, дающим клиентам самостоятельную проверку.
<iframe src="https://tradeprotected.com/embed?key=tp_YOUR_KEY&lang=ru"
style="width:100%;height:420px;border:1px solid #e4eaf1;border-radius:12px"
loading="lazy"></iframe>
Ключ внутри кода встраивания виден всем — его прочитает любой, кто откроет исходный код страницы. Поэтому задайте для этого ключа разрешённые домены в разделе «Подписка → ключи API» (например yourcompany.com): даже скопированный ключ не сработает на чужом сайте. Так же поступают с фронтенд-ключами вроде Google Maps.
Рекомендуем разделить ключ для встраивания и ключ для серверных вызовов: первый привязать к домену, второй не ограничивать, но держать только на своём сервере. Аккаунт может иметь пять ключей одновременно — этого хватает на разделение по средам.
Достаточно добавить параметр format — его поддерживают все эндпоинты запроса.
?format=xlsx. Настоящий файл .xlsx: двуязычные заголовки, подобранная ширина колонок, тёмная жирная строка заголовка. Двойной щелчок — и он готов для приложения к отчёту, без переформатирования.?format=csv. С меткой UTF-8 BOM, чтобы Excel корректно открывал нелатинские тексты; удобен для скриптов.?format=ndjson. По одному самостоятельному 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"])
1000 вызовов на ключ в сутки, сброс в 00:00 UTC. В каждом ответе есть два заголовка:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
На аккаунте может быть до пяти активных ключей. Разделение по средам (продакшн / тест / конкретный коллега) позволяет отозвать один ключ, не задев остальных потребителей.
Ошибки всегда возвращаются в виде {"error":{"code":"...","message":"..."}}. Ветвитесь по code, а не по тексту сообщения.
| 401 | missing_key ключ не передан · invalid_key ключ недействителен или отозван |
|---|---|
| 403 | membership_required тариф не оформлен или истёк — ключи перестают работать сразу при окончании тарифа и снова работают после продления, перевыпуск не нужен |
| 429 | quota_exceeded суточная квота исчерпана |
| 400 | missing_name / name_too_long / too_many_names проблемы с параметрами |
Сопоставление выполняется по нормализованным подстрокам и фразам, поэтому совпадение — это сигнал для комплаенс-проверки, а не юридический вывод. Однофамильцы и различия транслитерации дают как ложные срабатывания, так и пропуски; окончательное решение принимайте по официальной записи по ссылке url.
Тариф API включает все возможности подписки, а также API данных, встраиваемый виджет и экспорт в Excel.
Сопоставимые API проверки обычно продаются по годовым контрактам от нескольких тысяч долларов. У нас помесячно и с отменой в любой момент. Сделайте несколько бесплатных запросов и оцените данные, прежде чем подключаться.