# Russian Counterparty Check by INN: Fedresurs + FNS Risk Score (`isolovyev/ru-counterparty-check`) Actor

Check a Russian company by INN across FNS "Prozrachny biznes", GIR BO financials and Fedresurs in one record, with a transparent risk score and change monitoring.

- **URL**: https://apify.com/isolovyev/ru-counterparty-check.md
- **Developed by:** [Ivan Solovyev](https://apify.com/isolovyev) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Russian Counterparty Check by INN: Fedresurs + FNS + RNP + Rosfinmonitoring Risk Score

Look up a Russian company by **INN** (or name, fedresurs-only) across **four official sources** and
get one merged B2B due-diligence record with a transparent risk score:

- **[fedresurs.ru](https://www.fedresurs.ru)** (ЕФРСБ, Unified Federal Register of Bankruptcy
  Information): bankruptcy intention notices and arbitration legal cases, ЕФРСБ publications
  (incl. liquidation notices), encumbrances (pledges/leasing/guarantees), net worth history,
  licenses, СРО membership, reorganizations, and (if the company is itself a bankrupt debtor) open
  auctions, pledged-asset sales, receivables sales.
- **ФНС «Прозрачный бизнес» (pb.nalog.ru) + ГИР БО (bo.nalog.gov.ru)**: tax arrears with sums,
  mass-address flag, special tax regimes, headcount (ССЧ), taxes paid, recorded tax offenses,
  founders (with a mass-founder flag), and financial statements by year (revenue/profit/assets/
  liabilities).
- **zakupki.gov.ru РНП** (реестр недобросовестных поставщиков): whether the company is listed as
  an unreliable supplier under 44-ФЗ, 223-ФЗ or ПП РФ 615, with the registry number, reason and
  status of every entry.
- **Rosfinmonitoring list ([fedsfm.ru](https://www.fedsfm.ru), 115-ФЗ)**: whether the company, its
  director or a founder appears in the Rosfinmonitoring register, with the matched entry and a link
  to the source.

All four sources are merged into **one record per company**, plus a self-documenting `riskScore`
(0-100), `riskLevel` (low/medium/high) and `riskFactors[]` listing every signal that fired, its
source and its weight, no black box.

### Why four sources merged

fedresurs.ru knows whether a company is in bankruptcy proceedings, but says nothing about its tax
debts, ownership or procurement history. ФНС knows tax arrears, financials and founders, but not
bankruptcy stage or ЕФРСБ publications. zakupki.gov.ru's РНП knows whether the company has broken
a government contract badly enough to be blacklisted, something neither of the other two sources
tracks. The Rosfinmonitoring register adds a regulatory-compliance flag none of the other three carry.
A real due-diligence check needs all four before signing a contract or extending credit;
running separate actors and reconciling them by hand is the alternative this actor replaces.

### Modes

- **search** - one-off due-diligence profile per company in `inns` / `searchStrings`.
- **monitor** - run on a schedule; compares against the previous run's state (Key-Value Store) and
  emits only companies whose risk score/level, bankruptcy stage, legal-case count, tax arrears,
  mass-address flag, headcount, ЕГРЮЛ/ФНС status, liquidation flag, mass-founder flag, РНП
  listing or Rosfinmonitoring listing changed. Optionally POSTs a summary to `notifyWebhookUrl` (wire it to n8n/Zapier/Make
  for Telegram/Slack alerts).

### Input

| Field | Description |
|---|---|
| `mode` | `search` or `monitor` |
| `inns` | INN/OGRN list. The only key the nalog/rnp sources can use; also fedresurs.ru's native exact-match key |
| `searchStrings` | Optional company names (fuzzy, fedresurs-only; once resolved to an INN, nalog/rnp are looked up too) |
| `sources` | Which sources to check and merge: `fedresurs`, `nalog`, `rnp`, `rosfinmonitoring`, or any combination (default: all four) |
| `maxMatchesPerName` | How many fedresurs.ru search results to fetch per name query (default 1) |
| `fedresursSections` | Which fedresurs.ru risk sections to pull (fewer = faster/cheaper) |
| `nalogSections` | Which ФНС blocks to pull: `identity`/`taxRisk`/`founders`/`financials` |
| `notifyWebhookUrl` | Monitor mode: webhook for the run summary |
| `proxyConfiguration` | Residential/RU proxy, required on Apify for all sources (see Transport notes) |

### Risk score

`riskScore` is a plain additive sum of `riskFactors[].weight`, capped at 100. Every factor carries
`code`, `source` (`fedresurs`/`nalog`/`rnp`/`rosfinmonitoring`), `weight` and a human-readable `description` - the score is
fully reconstructable from `riskFactors[]`, nothing is hidden.

| Signal | Source | Weight |
|---|---|---|
| Active bankruptcy case (арбитражное дело) | fedresurs | 40 |
| Bankruptcy intention notice only, no case yet | fedresurs | 20 |
| 2+ bankruptcy legal cases | fedresurs | 10 |
| ЕГРЮЛ/ФНС status inactive or liquidated | fedresurs / nalog | 25 |
| Liquidation publication (ЕФРСБ) | fedresurs | 15 |
| Unreliable address (недостоверность адреса) | fedresurs | 15 |
| Unreliable director / disqualification marker | fedresurs | 15 |
| Encumbrances present (pledge/leasing/guarantee) | fedresurs | 5 |
| Tax arrears > 0 (10 if under 1M RUB, 20 if over) | nalog | 10-20 |
| Mass registration address | nalog | 10 |
| Recorded tax offenses | nalog | 10 |
| Zero headcount (ССЧ) | nalog | 5 |
| Negative profit in the latest reported year | nalog | 10 |
| Revenue dropped 30%+ year over year | nalog | 10 |
| Mass founder (ФНС's own массовый учредитель determination) | nalog | 15 |
| Listed in РНП (реестр недобросовестных поставщиков) | rnp | 30 |
| Listed in the Rosfinmonitoring register (115-ФЗ) | rosfinmonitoring | 60 |

`riskLevel`: low (score < 30), medium (30-59), high (60+).

### Identity merge

`name`/`inn`/`ogrn`/`address`/`status`/`okvedCode`/`okvedName` are merged once at the top level
(not duplicated per source): fedresurs wins when both sources report a value (richer, ЕГРЮЛ-sourced),
nalog fills in when fedresurs didn't run or found no match. A mismatch on `inn`/`ogrn`/`okvedCode`/`name`
between the two sources is flagged in `identityConflicts` - a real disagreement worth checking
(e.g. the wrong company matched on one side). `address`/`status` are excluded from conflict
detection: the two sources phrase the same fact differently by design, not a real disagreement.

### Graceful degradation

If one source fails outright for the whole run (network block, WAF, proxy outage), the record still
ships with the other sources' data. The failed source's sub-record is `null`, its reason lands in
`sourceErrors`, and it is excluded from `sources` - which also means it is never billed (see
Pricing). A run never fails or returns an empty dataset just because one source had an outage,
as long as at least one other source is up.

### Requirements

All four sources are served only to Russian IP addresses. On Apify, set `proxyConfiguration` to
**Residential** with **country RU** (the default in the input schema); one setting covers every
source. The person who runs the Actor pays for the residential traffic. If a source is temporarily
unavailable, the Actor still returns the other sources and records what was skipped.

### Quick start

**Search mode** - full due-diligence profile from all sources:

```json
{
  "mode": "search",
  "inns": ["0272023903"],
  "sources": ["fedresurs", "nalog", "rnp", "rosfinmonitoring"]
}
````

`0272023903` (ООО ИМПУЛЬС) has an active bankruptcy case on fedresurs.ru and tax arrears on
pb.nalog.ru - a good smoke test for the sources and the merged risk score.

**Monitor mode** - alert on new risk signals on a schedule:

```json
{
  "mode": "monitor",
  "inns": ["7707083893"],
  "sources": ["fedresurs", "nalog", "rnp", "rosfinmonitoring"],
  "notifyWebhookUrl": "https://example.com/hooks/dd-alerts"
}
```

Set a schedule under **Schedules** in the Apify Console to run `monitor` mode periodically. State
carries over between runs via the Key-Value Store.

### Pricing

Pay-per-result: one dataset-item event is charged per company record pushed to the Dataset,
regardless of how many sources contributed to it. A company for which every requested source
failed or found no match produces no record at all, so it's never charged. Trim `sources` to only
the source(s) you need, and `fedresursSections`/`nalogSections` to only the blocks you need, to cut
runtime (this does not change the per-record price).

### Output

One dataset record per matched company - see `.actor/dataset_schema.json` for the full field list
and the built-in "Risk overview" table view.

### RU / На русском

**Проверка контрагента по ИНН: ФНС «Прозрачный бизнес», ГИР БО, Федресурс и РНП в одной записи с прозрачным риск-скором и мониторингом изменений.**

- **Три источника в одной записи** - fedresurs.ru отдаёт банкротство (намерения и арбитражные дела),
  публикации ЕФРСБ, залоги/лизинг/поручительства, чистые активы, лицензии, СРО, реорганизации,
  торги; ФНС отдаёт налоговую недоимку (с суммой), признак массового адреса, спецрежимы,
  среднесписочную численность, уплаченные налоги, налоговые правонарушения, учредителей (с
  признаком массового учредителя) и финансы по годам (выручка/прибыль/активы/обязательства);
  zakupki.gov.ru отдаёт присутствие в РНП (реестр недобросовестных поставщиков, 44-ФЗ/223-ФЗ/ПП РФ
  615\) с номером записи, причиной и статусом.
- **Риск-скор прозрачно** - `riskScore` (0-100) и `riskLevel` (low/medium/high) складываются из
  `riskFactors[]` - списка сработавших сигналов с источником и весом каждого, никакого чёрного
  ящика. Таблица весов - в английском разделе выше (`## Risk score`).
- **Слияние идентичности** - `name`/`inn`/`ogrn`/`address`/`status`/`okvedCode`/`okvedName` собраны
  в одно поле каждое (не дублируются по источникам); при расхождении по ИНН/ОГРН/ОКВЭД/названию -
  это попадает в `identityConflicts` как повод для проверки.
- **Graceful degradation** - если один источник целиком упал (сеть/WAF/прокси), запись всё равно
  отдаётся с данными остальных источников, причина - в `sourceErrors`, упавший источник не
  тарифицируется и прогон не падает и не остаётся с пустым датасетом, пока жив хотя бы один
  источник.
- **Monitor** - сравнивает с предыдущим прогоном (Key-Value Store) и шлёт алерт только по
  компаниям, где изменился риск-скор/уровень, стадия банкротства, число дел, налоговая недоимка,
  массовый адрес, численность, статус, признак массового учредителя или присутствие в РНП, плюс
  вебхук-сводка.
- **Доступ** - все источники отдают данные только на российские IP, поэтому на Apify нужен
  Residential-прокси со страной RU (значение по умолчанию в схеме). Одна настройка покрывает все
  источники; трафик оплачивает тот, кто запускает актор.

**Как пользоваться:** основной ключ поиска - ИНН (принимают все источники); поиск по названию
(`searchStrings`) доступен для Федресурса, число совпадений регулирует `maxMatchesPerName`. Тариф
предсказуемый - **одно событие за компанию**, сколько бы источников ни сработало; компания без
данных не тарифицируется.

# Actor input Schema

## `mode` (type: `string`):

search = one-off risk profile per company. monitor = compare vs the previous run (needs a schedule) and emit only companies whose bankruptcy stage, legal-case count or publications changed, with webhook.

## `inns` (type: `array`):

Company INN (10 digits) or OGRN to look up. Exact-match native key on fedresurs.ru - the recommended way to identify a company unambiguously. Also the ONLY key the nalog source can use (pb.nalog.ru/bo.nalog.gov.ru have no name search) - a name-only query (searchStrings) is fedresurs-only.

## `searchStrings` (type: `array`):

Optional. Company name to search when you don't have the INN. fedresurs.ru's own search may return several matches for a name - the actor takes up to 'Max matches per name' of them, each flagged with matchedQuery so you can tell which search string found it. Fedresurs-only: once fedresurs resolves a name to an INN, the nalog source is looked up for that INN too.

## `sources` (type: `array`):

Which official sources to check per company and merge into one record. fedresurs = fedresurs.ru (ЕФРСБ): bankruptcy, publications, encumbrances, net worth. nalog = pb.nalog.ru + bo.nalog.gov.ru (ФНС «Прозрачный бизнес» + ГИР БО): tax arrears, mass address, headcount, financials by year, founders. rnp = zakupki.gov.ru: реестр недобросовестных поставщиков (44-ФЗ/223-ФЗ/ПП РФ 615). rosfinmonitoring = fedsfm.ru: перечень организаций и физических лиц Росфинмониторинга (115-ФЗ), проверяется компания по ИНН/ОГРН и директор/учредители по ФИО. All four by default for a full risk-score.

## `maxMatchesPerName` (type: `integer`):

For each entry in 'Company names', how many of fedresurs.ru's search results to fetch a full risk profile for (name search is fuzzy and can return multiple companies).

## `fedresursSections` (type: `array`):

Which fedresurs.ru risk sections to pull per company (only used when 'fedresurs' is in Due diligence sources). Fewer sections = faster/cheaper run. Identity (name/INN/OGRN/status/address/legal form/director/unreliable-info flags) is always included.

## `nalogSections` (type: `array`):

Which ФНС blocks to pull per company (only used when 'nalog' is in Due diligence sources). 'identity'/'taxRisk'/'founders' share one pb.nalog.ru call (founders adds no extra request); 'financials' is a separate bo.nalog.gov.ru call - drop it for a faster/cheaper run if you only need risk markers.

## `notifyWebhookUrl` (type: `string`):

Monitor mode: POST the run summary (counts, changed companies) to this URL - wire it to n8n/Zapier/Make for Telegram/Slack risk alerts.

## `proxyConfiguration` (type: `object`):

REQUIRED on Apify: all sources geoblock datacenter/foreign IPs at the network level. fedresurs.ru's connection times out before Qrator's PoW challenge is even reached; pb.nalog.ru/bo.nalog.gov.ru, zakupki.gov.ru and fedsfm.ru get a ConnectTimeout. Use Apify Residential proxy with country RU for all of them - from an RU-residential IP, Camoufox clears the Qrator PoW automatically and the nalog/rnp/rosfinmonitoring sources connect cleanly.

## Actor input object example

```json
{
  "mode": "search",
  "inns": [
    "7707083893"
  ],
  "sources": [
    "fedresurs",
    "nalog",
    "rnp",
    "rosfinmonitoring"
  ],
  "maxMatchesPerName": 1,
  "fedresursSections": [
    "bankruptcy",
    "publications",
    "encumbrances",
    "networth",
    "licenses",
    "sro_membership",
    "reorganizations",
    "biddings",
    "pledged_subjects",
    "receivables"
  ],
  "nalogSections": [
    "identity",
    "taxRisk",
    "founders",
    "financials"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "inns": [
        "7707083893"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("isolovyev/ru-counterparty-check").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "inns": ["7707083893"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "RU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("isolovyev/ru-counterparty-check").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "inns": [
    "7707083893"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}' |
apify call isolovyev/ru-counterparty-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=isolovyev/ru-counterparty-check",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Russian Counterparty Check by INN: Fedresurs + FNS Risk Score",
        "description": "Check a Russian company by INN across FNS \"Prozrachny biznes\", GIR BO financials and Fedresurs in one record, with a transparent risk score and change monitoring.",
        "version": "0.1",
        "x-build-id": "4lZTFehaOQPfRBQSF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/isolovyev~ru-counterparty-check/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-isolovyev-ru-counterparty-check",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/isolovyev~ru-counterparty-check/runs": {
            "post": {
                "operationId": "runs-sync-isolovyev-ru-counterparty-check",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/isolovyev~ru-counterparty-check/run-sync": {
            "post": {
                "operationId": "run-sync-isolovyev-ru-counterparty-check",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "monitor"
                        ],
                        "type": "string",
                        "description": "search = one-off risk profile per company. monitor = compare vs the previous run (needs a schedule) and emit only companies whose bankruptcy stage, legal-case count or publications changed, with webhook.",
                        "default": "search"
                    },
                    "inns": {
                        "title": "INNs / OGRNs",
                        "type": "array",
                        "description": "Company INN (10 digits) or OGRN to look up. Exact-match native key on fedresurs.ru - the recommended way to identify a company unambiguously. Also the ONLY key the nalog source can use (pb.nalog.ru/bo.nalog.gov.ru have no name search) - a name-only query (searchStrings) is fedresurs-only.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchStrings": {
                        "title": "Company names (optional, fuzzy)",
                        "type": "array",
                        "description": "Optional. Company name to search when you don't have the INN. fedresurs.ru's own search may return several matches for a name - the actor takes up to 'Max matches per name' of them, each flagged with matchedQuery so you can tell which search string found it. Fedresurs-only: once fedresurs resolves a name to an INN, the nalog source is looked up for that INN too.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sources": {
                        "title": "Due diligence sources",
                        "type": "array",
                        "description": "Which official sources to check per company and merge into one record. fedresurs = fedresurs.ru (ЕФРСБ): bankruptcy, publications, encumbrances, net worth. nalog = pb.nalog.ru + bo.nalog.gov.ru (ФНС «Прозрачный бизнес» + ГИР БО): tax arrears, mass address, headcount, financials by year, founders. rnp = zakupki.gov.ru: реестр недобросовестных поставщиков (44-ФЗ/223-ФЗ/ПП РФ 615). rosfinmonitoring = fedsfm.ru: перечень организаций и физических лиц Росфинмониторинга (115-ФЗ), проверяется компания по ИНН/ОГРН и директор/учредители по ФИО. All four by default for a full risk-score.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "fedresurs",
                                "nalog",
                                "rnp",
                                "rosfinmonitoring"
                            ],
                            "enumTitles": [
                                "Fedresurs (ЕФРСБ bankruptcy/publications)",
                                "Nalog (ФНС tax risk + financials + founders)",
                                "RNP (реестр недобросовестных поставщиков)",
                                "Rosfinmonitoring (перечень организаций и физлиц, 115-ФЗ)"
                            ]
                        },
                        "default": [
                            "fedresurs",
                            "nalog",
                            "rnp",
                            "rosfinmonitoring"
                        ]
                    },
                    "maxMatchesPerName": {
                        "title": "Max matches per name",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "For each entry in 'Company names', how many of fedresurs.ru's search results to fetch a full risk profile for (name search is fuzzy and can return multiple companies).",
                        "default": 1
                    },
                    "fedresursSections": {
                        "title": "Fedresurs: risk sections to fetch",
                        "type": "array",
                        "description": "Which fedresurs.ru risk sections to pull per company (only used when 'fedresurs' is in Due diligence sources). Fewer sections = faster/cheaper run. Identity (name/INN/OGRN/status/address/legal form/director/unreliable-info flags) is always included.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "bankruptcy",
                                "publications",
                                "encumbrances",
                                "networth",
                                "licenses",
                                "sro_membership",
                                "reorganizations",
                                "biddings",
                                "pledged_subjects",
                                "receivables"
                            ],
                            "enumTitles": [
                                "Bankruptcy (intentions + legal cases)",
                                "Publications (ЕФРСБ messages)",
                                "Encumbrances (pledges/leasing/guarantees)",
                                "Net worth history",
                                "Licenses",
                                "SRO membership",
                                "Reorganizations",
                                "Biddings (as bankrupt debtor)",
                                "Pledged-asset sales (as debtor)",
                                "Receivables sales (as debtor)"
                            ]
                        },
                        "default": [
                            "bankruptcy",
                            "publications",
                            "encumbrances",
                            "networth",
                            "licenses",
                            "sro_membership",
                            "reorganizations",
                            "biddings",
                            "pledged_subjects",
                            "receivables"
                        ]
                    },
                    "nalogSections": {
                        "title": "Nalog: sections to fetch",
                        "type": "array",
                        "description": "Which ФНС blocks to pull per company (only used when 'nalog' is in Due diligence sources). 'identity'/'taxRisk'/'founders' share one pb.nalog.ru call (founders adds no extra request); 'financials' is a separate bo.nalog.gov.ru call - drop it for a faster/cheaper run if you only need risk markers.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "identity",
                                "taxRisk",
                                "founders",
                                "financials"
                            ],
                            "enumTitles": [
                                "Identity (name/INN/OGRN/status/address)",
                                "Tax risk (arrears, mass address, special regimes, headcount, taxes paid)",
                                "Founders (учредители + mass-founder flag)",
                                "Financials by year (revenue, profit, assets, liabilities)"
                            ]
                        },
                        "default": [
                            "identity",
                            "taxRisk",
                            "founders",
                            "financials"
                        ]
                    },
                    "notifyWebhookUrl": {
                        "title": "Monitor: notify webhook URL",
                        "type": "string",
                        "description": "Monitor mode: POST the run summary (counts, changed companies) to this URL - wire it to n8n/Zapier/Make for Telegram/Slack risk alerts."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "REQUIRED on Apify: all sources geoblock datacenter/foreign IPs at the network level. fedresurs.ru's connection times out before Qrator's PoW challenge is even reached; pb.nalog.ru/bo.nalog.gov.ru, zakupki.gov.ru and fedsfm.ru get a ConnectTimeout. Use Apify Residential proxy with country RU for all of them - from an RU-residential IP, Camoufox clears the Qrator PoW automatically and the nalog/rnp/rosfinmonitoring sources connect cleanly.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "RU"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
