API для проверки контрагентов по санкционным спискам и реестрам

Опубликовано: 13.09.2025


Документация API для проверки санкционных списков

Введение

Наш сервис предоставляет мощный инструмент для скрининга контрагентов по обширной базе публичных санкционных списков и реестров в режиме реального времени. Интегрируйте проверку в ваши бизнес-процессы, CRM или учетные системы для автоматизации compliance-процедур, минимизации рисков и обеспечения безопасности сделок.

Источники данных

Поиск осуществляется по открытым источникам, СМИ, публичным реестрам и официальным спискам, включая:

  • Санкционные списки Президента и Правительства РФ (№ 592, №252, №1300, №851)
  • Списки ООН, США (OFAC), Великобритании, Канады, Европейского союза (ЕС)
  • Реестры Интерпола (Red Notice, открытые данные) и ФБР США
  • Список иностранных агентов Минюста РФ
  • Реестр Росфинмониторинга
  • И другие (более 13 реестров).

Что можно проверить

Поиск возможен по следующим параметрам: * ФИО (как на латинице, так и на кириллице) * Название организации (юридическое лицо) * ИНН организации * ОГРН организации * SWIFT/BIC код банка

Аутентификация в API

Для доступа к API используйте GET запрос на следующий эндпоинт: /api/sanc

Для прохождения аутентификации необходимо указать ваш уникальный API-ключ. Это можно сделать одним из двух способов:

  1. Через заголовок HTTP (рекомендуется для большей безопасности):

    X-API-Key: ваш_api_ключ_из_личного_кабинета
    
  2. Через параметр URL:

    /api/sanc?api_key=ваш_api_ключ_из_личного_кабинета&name=Иванов Иван Иванович
    

Практические примеры

Пример 1: Python 3

Использование библиотеки requests.

import requests

url = "https://ваш.домен.ru/api/sanc"
api_key = "ваш_секретный_api_ключ"
headers = {"X-API-Key": api_key}
params = {"name": "Иванов"}  # Можно заменить на ИНН компании, ОГРН компании или SWIFT.

try:
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()  # Выбросит исключение при ошибке HTTP (4xx/5xx)
    data = response.json()

    # Обработка ответа
    if data['Info'] and data['Info'][0]['Fullname'] != "Not result in base":
        print("Найдены совпадения:")
        for record in data['Info']:
            print(f" - {record['Fullname']} ({record['Reestr']})")
    else:
        print("Совпадений не найдено.")

except requests.exceptions.RequestException as e:
    print(f"Ошибка при выполнении запроса: {e}")

Пример 2: JavaScript (Node.js)

Использование библиотеки axios. Установите: npm install axios.

const axios = require('axios');

const url = 'https://ваш.домен.ru/api/sanc';
const apiKey = 'ваш_секретный_api_ключ';
const params = { name: 'Иванов' };

axios.get(url, {
    headers: { 'X-API-Key': apiKey },
    params: params
})
.then(response => {
    const data = response.data;
    if (data.Info && data.Info[0].Fullname !== "Not result in base") {
        console.log("Найдены совпадения:");
        data.Info.forEach(record => {
            console.log(` - ${record.Fullname} (${record.Reestr})`);
        });
    } else {
        console.log("Совпадений не найдено.");
    }
})
.catch(error => {
    console.error('Ошибка при выполнении запроса:', error.message);
});

Пример 3: Go

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
)

func main() {
    baseURL := "https://ваш.домен.ru/api/sanc"
    apiKey := "ваш_секретный_api_ключ"

    // Формируем параметры запроса
    params := url.Values{}
    params.Add("name", "Иванов Иван Иванович")

    // Создаем запрос
    req, err := http.NewRequest("GET", baseURL, nil)
    if err != nil {
        log.Fatal(err)
    }

    // Добавляем заголовок и параметры
    req.Header.Add("X-API-Key", apiKey)
    req.URL.RawQuery = params.Encode()

    // Выполняем запрос
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()

    // Читаем ответ
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    // Парсим JSON
    var result map[string]interface{}
    json.Unmarshal(body, &result)

    info := result["Info"].([]interface{})
    if len(info) > 0 {
        firstRecord := info[0].(map[string]interface{})
        if firstRecord["Fullname"] != "Not result in base" {
            fmt.Println("Найдены совпадения:")
            for _, record := range info {
                r := record.(map[string]interface{})
                fmt.Printf(" - %s (%s)\n", r["Fullname"], r["Reestr"])
            }
        } else {
            fmt.Println("Совпадений не найдено.")
        }
    }
}

Пример 4: C# (.NET)

Рекомендуется использовать пакет Newtonsoft.Json.

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        string baseUrl = "https://ваш.домен.ru/api/sanc";
        string apiKey = "ваш_секретный_api_ключ";

        // Добавляем API-ключ в заголовки
        client.DefaultRequestHeaders.Add("X-API-Key", apiKey);

        // Формируем параметры запроса
        string query = $"{baseUrl}?name=Янукович"; // Можно заменить на &inn=... и т.д.

        try
        {
            HttpResponseMessage response = await client.GetAsync(query);
            response.EnsureSuccessStatusCode(); // Выбрасывает исключение при ошибке
            string responseBody = await response.Content.ReadAsStringAsync();

            // Динамический парсинг (для примера). Лучше использовать Newtonsoft.Json или System.Text.Json и создать классы.
            dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(responseBody);

            if (data.Info[0].Fullname != "Not result in base")
            {
                Console.WriteLine("Найдены совпадения:");
                foreach (var record in data.Info)
                {
                    Console.WriteLine($" - {record.Fullname} ({record.Reestr})");
                }
            }
            else
            {
                Console.WriteLine("Совпадений не найдено.");
            }
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Ошибка при выполнении запроса: {e.Message}");
        }
    }
}

Обработка ответов и возможные ошибки

Успешный ответ с данными

Если совпадения найдены, API вернет JSON-объект с массивом Info, содержащим все найденные записи.

{
  "FULL_NAME": "Янукович",
  "Info": [
    {
      "Fullname": "Янукович Виктор",
      "Num": "143351",
      "INN_Date": "1950-07-09",
      "Dop": "Дополнительная информация…",
      "Reestr": "Реестр ФЛ находящихся в санкционных списках ЕС"
    }
    // … другие записи
  ]
}

Успешный ответ без данных

Если совпадений не найдено ни в одном реестре, сервис вернет ответ с соответствующей меткой.

{
  "FULL_NAME": "Бычков Айтекин Айтекинович",
  "Info": [
    {
      "Fullname": "Not result in base",
      "Num": "",
      "INN_Date": "",
      "Dop": "",
      "Reestr": "All base sanction list"
    }
  ]
}

Ошибки API

Код ошибки Описание
401 Unauthorized Неверный или отсутствующий API-ключ.
400 Bad Request Не передан обязательный параметр.
429 Too Many Requests Превышена квота запросов по вашему тарифному плану.
500 Internal Server Error Внутренняя ошибка сервера. Свяжитесь со службой поддержки.