ГИР БО — публичная бухгалтерская (финансовая) отчётность организаций (bo.nalog.gov.ru)
| Признак | Значение |
|---|---|
| Уровень и охват | Федеральный; обязательные экземпляры бухгалтерской (финансовой) отчётности экономических субъектов, которые ФНС включает в ГИР БО |
| Тип доступа | HTML-витрина, недокументированный JSON-backend фронтенда и PDF-комплекты; массовый файл «все организации» не заявлен |
| Основные форматы | HTML, JSON, PDF; XML/XBRL как публичная выдача не подтверждены |
| Оператор | ФНС России |
| Режим доступа | Открыт просмотр опубликованных сведений; подача отчётности и подписанный ЭДО-контур в эту карточку не входят |
Коротко: по ИНН, ОГРН или названию можно программно получить JSON-строку поиска, внутренний organizationId, периоды и нормализованные показатели форм БО, а по organizationId и detailId — PDF-комплект. Для склейки с закупками, субсидиями и ЕГРЮЛ сохраняйте исходные строковые ИНН и ОГРН, дату публикации и номер корректировки.
Качество и верификация
| Измерение | Значение для этой карточки |
|---|---|
Дата проверки (last_verified) | 2026-07-19. Проверены ответ поиска ФНС, сохранённый 13.07.2026, ответ списка БО той же организации и официальный статический bundle фронтенда от 09.03.2026. Прямое TCP-соединение из рабочего контура с bo.nalog.gov.ru:443 19.07.2026 не установилось; поэтому зафиксированные HTTP-заголовки и тела ниже получены из сохранённых ответов исходного сервера, а не выданы за новый live-запуск. |
Полнота (data_completeness) | Частичная: ресурс не охватывает освобождённые категории и сведения с ограниченным доступом; на карточку организации попадает только опубликованная отчётность. |
Машиночитаемость (machine_readability) | JSON возвращает поиск и показатели форм без документированного публичного API; PDF доступен отдельным URL. Стабильный публичный XML/XBRL download не подтверждён. |
Юридическая значимость (legal_significance) | Официальный ресурс ФНС. Публичная JSON-проекция удобна для анализа, но не заменяет юридически значимый экземпляр/проверку подписи. |
Задержка обновления (update_lag) | Событийная: отчётность представляют не позднее трёх месяцев после окончания периода; в проверенном годовом примере за 2025 год actualBfoDate=2026-03-16, publishedCorrectionDate=2026-03-17. Это пример, а не универсальный SLA публикации. |
Глубина архива (archive_depth) | В проверочных карточках наблюдались PDF за отдельные периоды 2019–2025; единый горизонт, полнота по одной организации и непрерывность архива порталом не опубликованы. |
Лицензия (license_or_terms) | Явные условия повторного использования именно для ГИР БО в проверенном контуре не найдены; перед массовым сбором проверьте актуальные условия сайта ФНС. |
Описание
ГИР БО формируется ФНС из представленных экономическими субъектами обязательных экземпляров бухгалтерской (финансовой) отчётности. Публичная страница поиска ведёт на карточку вида organizations-card/<organizationId>; данные карточки не вшиты в HTML, а подгружаются JSON-запросами.
Для практического конвейера это даёт такой путь: ИНН → поиск → organizationId → список БО и корректировок → balance/financialResult → CSV. PDF нужен для визуальной сверки и для реквизитов формы; для извлечения ключевых строк 0710001 и 0710002 PDF парсить не требуется, потому что те же строки уже присутствуют в JSON.
В объём карточки не входят личные кабинеты, ЭДО и внутренние АИС ФНС. Также не следует считать JSON-backend документированным открытым API: он является техническим интерфейсом публичного фронтенда и может измениться без версии или предупреждения.
Оператор
Федеральная налоговая служба формирует и ведёт ресурс; публичный вход — https://bo.nalog.gov.ru/.
- Карточка ИС: Сайт ФНС России — статистика и данные — общий публичный контур ФНС, в котором доступна эта витрина.
Нормативная причина публикации — ст. 18 Федерального закона № 402-ФЗ «О бухгалтерском учёте». Для рядов в старых формах важен приказ Минфина № 66н с изменениями приказа № 57н; для отчётности начиная с 2025 года сверяйте применимую редакцию ФСБУ 4/2023 (приказ Минфина № 157н), а не переносите название или набор строк старого бланка автоматически. ПБУ 4/99 — исторический ориентир для интерпретации старых периодов. Ст. 102 ГК РФ относится к раскрытию отчётности хозяйственных обществ, но не отменяет исключений и ограничений доступа в ГИР БО.
URL и точки доступа
Параметры и ответы в таблице ниже извлечены из официального bundle main.08983597.js (сохранённая версия 09.03.2026) и из ответа самого сервиса 13.07.2026. Метод GET указан только там, где он виден в bundle или подтверждён ответом. В URL нет пути /organization/<ИНН>/<ОГРН>: публичная карточка использует внутренний числовой organizationId.
| Тип доступа | URL | Метод и формат | Что подтверждено |
|---|---|---|---|
| Главная / поиск | https://bo.nalog.gov.ru/ | GET, HTML | HTML-оболочка приложения; карта маршрутов содержит /search и /organizations-card/:id. |
| Быстрый поиск | https://bo.nalog.gov.ru/advanced-search/organizations/search?query=<строка>&page=0&size=20 | GET, JSON | Подтверждённый запрос: query=5256038700&page=0&size=20; page нулевой, size — размер страницы. Ответ: application/json, content[], pageable, totalElements. Не используйте непроверенные pageSize или нумерацию с 1. |
| Подсказки поиска | https://bo.nalog.gov.ru/advanced-search/organizations/autocomplete?query=<строка> | GET, JSON | Вызов присутствует в bundle; тело ответа отдельно не фиксировалось. |
| Расширенный поиск | https://bo.nalog.gov.ru/advanced-search/organizations?<параметры> | GET, JSON | Фронтенд передаёт name, address, inn, ogrn, okopf, okved, period, bfoPeriodType, knd, gainSumFrom, gainSumTo, published, notPublished, page и другие фильтры интерфейса. Комбинация фильтров не была отдельно прогнана, поэтому это не контракт для промышленной интеграции. |
| Карточка организации | https://bo.nalog.gov.ru/organizations-card/<organizationId> | GET, HTML | Например, https://bo.nalog.gov.ru/organizations-card/2515478; данные карточки загружаются отдельными JSON-запросами. |
| Наборы отчётности организации | https://bo.nalog.gov.ru/nbo/organizations/<organizationId>/bfo/ | GET, JSON UTF-8 | Подтверждён ответ для 2515478: массив периодов, идентификатор БО и вложенные typeCorrections[].correction с объектами форм. |
| PDF-комплект форм | https://bo.nalog.gov.ru/download/bfo/pdf/<organizationId>?period=<ГГГГ>&detailId=<correction.id> | GET, PDF | Вызов формирует фронтенд. Проверенный файл: .../download/bfo/pdf/10006829?period=2024&detailId=52322596 — 200 application/pdf, 1 287 079 байт, имя 0710096_3121007253_2024_000_20250724_594c305a-a3da-49ff-ba38-ca79684050e9.PDF. |
| Аудиторское заключение | https://bo.nalog.gov.ru/download/audit/<correction.id> | GET, файл | Вызов виден в bundle. Для подтверждённой корректировки 54356540 JSON содержит PDF-метаданные (size=1 519 749, исходное имя NO_BUHAZ_...pdf), но сам URL из текущего рабочего контура не скачивался. |
| Пояснения | https://bo.nalog.gov.ru/download/clarification/<correction.id> | GET, файл | Вызов виден в bundle. В том же JSON есть fileMetadata пояснений (size=14 306 964, исходное имя NO_BUHPZ_...pdf); ответ этого download URL отдельно не проверялся. |
Не добавляйте в скрипт неподтверждённые параметры из старых примеров, в частности kpp, region, priznakusn и dateform: в проверенной версии frontend-поиска их в URL-контракте нет. КПП приходит на уровне organizationInfo комплекта БО, а регион — как текстовое поле записи быстрого поиска.
Объекты данных и показатели
Запись быстрого поиска
Единица ответа — организация; внутренний id нужен только для следующего обращения к порталу. В контрольном ответе на ИНН 5256038700 значение inn содержало HTML-подсветку: "<strong>5256038700</strong>". Перед проверкой длины и джойном удалите HTML-теги и сохраните исходный ответ для аудита.
| Поле / JSON-path | Тип | Обязательность в проверенном ответе | Описание | Ключ связки |
|---|---|---|---|---|
content[].id | целое | да | Внутренний organizationId портала; ведёт к /organizations-card/<id> и /nbo/organizations/<id>/bfo/ | нет, только ключ API |
content[].inn | строка | да | ИНН; может содержать <strong> вокруг совпавшей части | да: ИНН после очистки HTML |
content[].ogrn | строка | да | ОГРН организации | да: ОГРН |
content[].shortName | строка | да | Краткое наименование | нет |
content[].statusCode, statusDate | строка, ISO-дата | да | Статус (ACTIVE в проверенной записи) и дата статуса | нет |
content[].index, region, city, settlement, street, house, building, office | строки / null | условно | Части адреса; region — текст, не код субъекта РФ | нет |
content[].okved2 | строка | условно | Основной ОКВЭД 2, например 20.59.5; не заменяет справочник ОКВЭД из ЕГРЮЛ | нет |
content[].okopf, okato, okpo, okfs | число или null | условно | Классификационные/статистические реквизиты, часть значений может отсутствовать | нет |
content[].bfo.period | строка ГГГГ | условно | Последний период БО, видимый в поисковой выдаче | нет |
content[].bfo.actualBfoDate, actualCorrectionDate | ISO-дата | условно | Дата представленной БО и дата актуальной корректировки | нет |
content[].bfo.gainSum | число | условно | Выручка из актуальной БО; единицу и период сверяйте с деталями формы | нет |
content[].bfo.knd | строка | условно | КНД комплекта, например 0710099 | нет |
content[].bfo.bfoPeriodTypes[] | массив целых | условно | Типы периода; в примере [12] для годового периода | нет |
Период БО, корректировка и формы
/nbo/organizations/<id>/bfo/ возвращает не объект forms[] и не downloadUrl, а массив периодов. Внутри каждого периода формы находятся в typeCorrections[].correction; URL PDF строится из organizationId, period и correction.id.
| Поле / JSON-path | Тип | Обязательность в проверенном периоде | Описание | Ключ связки |
|---|---|---|---|---|
[].id | целое | да | Идентификатор комплекта БО за период (bfoId) | нет |
[].period | строка ГГГГ | да | Отчётный год | часть ключа периода |
[].organizationInfo.inn | строка (10) | да | ИНН юридического лица в комплекте БО | да: ИНН |
[].organizationInfo.kpp | строка (9) | да в примере | КПП на уровне комплекта; не используйте его вместо ИНН при межсистемном соединении | нет |
[].organizationInfo.okpo, okopf, okfs | строка / объект | условно | Реквизиты организации и расшифровки классификаторов | нет |
[].actualBfoDate, publishedCorrectionDate | ISO-дата | да | Дата БО и дата публикации актуальной корректировки | часть происхождения |
[].actualCorrectionNumber, publishedCorrectionNumber | целое | да | Номер корректировки | часть происхождения |
[].typeCorrections[].type | целое | да | Код типа периода; в проверенной годовой записи — 12 | часть ключа периода |
[].typeCorrections[].correction.id | целое | да | detailId для PDF и идентификатор вложенных форм | технический ключ |
...correction.periodType | целое | да | Тип периода внутри корректировки | нет |
...correction.balance | объект / null | условно | Бухгалтерский баланс, okud="0710001" | нет |
...correction.financialResult | объект / null | условно | Отчёт о финансовых результатах, okud="0710002" | нет |
...correction.capitalChange | объект / null | условно | Отчёт об изменениях капитала, okud="0710004" | нет |
...correction.fundsMovement | объект / null | условно | Отчёт о движении денежных средств, okud="0710005" | нет |
...correction.targetedFundsUsing | объект / null | условно | Отчёт о целевом использовании средств, okud="0710003"; в проверенной записи отсутствовал | нет |
...correction.auditReport, clarification | объект / null | условно | Аудиторское заключение / пояснения; метаданные включают размер и оригинальное имя файла | нет |
Для повторяемого набора строк храните как минимум (inn_clean, ogrn, period, periodType, correction.id, publishedCorrectionNumber, publishedCorrectionDate). organizationId и bfoId пригодны для повторного запроса, но не являются межведомственными идентификаторами.
Известные пробелы
- В публичном JSON нет надёжного кодированного региона: поле
regionв поиске текстовое, а вorganizationInfoпроверенной БО региона отдельным полем нет. Восстанавливайте адрес/субъект через ЕГРЮЛ/ЕГРИП по ИНН или ОГРН; не джойните по названию региона. - ОКВЭД в поисковой выдаче может быть
null, а вorganizationInfoпроверенного периода — отсутствовать. Для отраслевой панели первичен актуальный срез ЕГРЮЛ, а не повторное использование старого значения БО. - История статусов организации и реорганизаций не является историей отчётности. Храните каждый период и корректировку отдельно и сверяйте юридическую преемственность в ЕГРЮЛ.
- Единый реестр МСП дополняет ИНН признаком МСП, но не является источником строк БО и не гарантирует поле региона без проверки паспорта своей версии.
Структура файла
На дату проверки не подтверждён публичный XBRL/XML-файл, который можно получить по найденной организации и положить в ET.iterparse. XML-формат относится к представлению отчётности в ФНС, однако из публичного фронтенда подтверждены JSON и PDF. Поэтому ниже — реальный контракт ответа, а не выдуманная XBRL-таксономия или XML-дерево.
GET /advanced-search/organizations/search
└── content[]
├── id, inn, ogrn, shortName, statusCode, okved2, ...
└── bfo { period, knd, gainSum, bfoPeriodTypes[], ... }
GET /nbo/organizations/<organizationId>/bfo/
└── period[]
├── organizationInfo { inn, kpp, okopf, okfs, okpo, ... }
└── typeCorrections[]
└── correction
├── id, periodType, datePresent, correctionVersion
├── balance { okud: "0710001", current1100, previous1100, ... }
├── financialResult { okud: "0710002", current2110, previous2110, ... }
├── capitalChange / fundsMovement / targetedFundsUsing
└── auditReport / clarification { fileMetadata { size, originalName, ... } }
Контрольная запись, сокращённая из официального ответа 13.07.2026 (ИНН и названия сохранены, потому что это публичная карточка организации):
{
"period": "2025",
"organizationInfo": {
"inn": "5256038700",
"kpp": "526201001",
"okpo": "57184037"
},
"typeCorrections": [{
"type": 12,
"correction": {
"id": 54356540,
"periodType": 12,
"balance": {
"okud": "0710001",
"current1100": 3905648.0,
"current1200": 10784618,
"current1600": 14690266
},
"financialResult": {
"okud": "0710002",
"current2110": 6390649.0,
"current2400": 45194.0
}
}
}]
}
Не приписывайте этому JSON версию XML/XSD, кодировку исходного XML, namespace или контрольную сумму: портал их в подтверждённой публичной выдаче не раскрыл. Если появится проверенный файл «исходные файлы», сначала зафиксируйте его Content-Type, имя, SHA-256, упаковку и фактический корень XML, затем добавьте отдельный XML-конвейер.
Семантика полей и показатели
Имена current<код>, previous<код> и beforePrevious<код> — значения одной строки формы на текущую, предыдущую и (когда есть) предшествующую дату/период. Не превращайте null в ноль: null в JSON означает, что строка не представлена в данной форме или не раскрыта. В проверенном bundle фронтенд отдельно переключает отображение рядов для периодов с 2025 года, поэтому состав строк и их названия надо версионировать по отчётному периоду.
| JSON-суффикс / строка | Смысл в форме | Как использовать |
|---|---|---|
1100 | Итого внеоборотных активов | Часть активов на отчётную дату; не складывайте с 1200, если уже используете 1600. |
1200 | Итого оборотных активов | Часть активов на отчётную дату. |
1300 | Итого капитал и резервы | Собственный капитал, а не выручка или денежный поток. |
1400 | Итого долгосрочных обязательств | Обязательства с долгосрочным горизонтом в форме. |
1500 | Итого краткосрочных обязательств | Обязательства с краткосрочным горизонтом в форме. |
1600 | Баланс — актив | Контрольный итог актива; в проверенной записи равен 1700. |
1700 | Баланс — пассив | Контрольный итог пассива; сверка равенства с 1600 — техническая, не аудиторская проверка. |
2110 | Выручка | Для годового periodType=12 — за отчётный год; для промежуточного — за соответствующий накопленный период. |
2120 | Себестоимость продаж | Для валовой прибыли сопоставляется с 2110 по одному периоду и одной корректировке. |
2100, 2200 | Валовая прибыль (убыток); прибыль (убыток) от продаж | Промежуточные результаты; не путать с чистой прибылью. |
2300, 2410, 2400 | Прибыль (убыток) до налогообложения; налог на прибыль; чистая прибыль (убыток) | 2400 — итог после налогообложения и прочих влияний; не выводите его как налоговую базу. |
В стандартном бланке единица показателей задаётся в заголовочной части (часто код ОКЕИ 384 — тысячи рублей), но в подтверждённом JSON отдельного поля единицы нет. JSON-числа и gainSum используйте как значения в единице конкретной формы, а единицу подтверждайте PDF-комплектом или исходным документом; не домножайте автоматически на 1 000 без этой проверки. Валюта отдельным полем в JSON также не найдена.
Тип периода хранится числом: frontend использует 3, 6, 9, 12 для квартального, полугодового, девятимесячного и годового горизонта соответственно. В контрольной записи period="2025" и periodType=12; это годовая БО за 2025 год. Для временного ряда ключа одного period недостаточно: включайте periodType, иначе годовой и промежуточный срезы одного года смешаются.
Периодичность обновления
Обновление происходит по представлению и обработке отчётности, а не как регулярный ежемесячный релиз. По разъяснениям ФНС обязательный экземпляр подают не позднее трёх месяцев после окончания отчётного периода; исправления и аудиторский отчёт могут появиться позднее. Для загрузчика это означает повторное чтение карточек после окончания срока подачи и ведение истории correction.id/дат публикации, а не перезапись единственной строки «за год».
Ограничения и особенности
- Витрина предназначена для поиска и просмотра отдельных организаций. Подтверждённого URL одного полного файла ГИР БО или документированного массового API нет.
- Из рабочего контура 19.07.2026 TCP-подключение к
bo.nalog.gov.ru:443не завершилось за 20–30 секунд; это наблюдение среды проверки, а не доказательство rate-limit сайта. CAPTCHA,429и специальные HTTP rate-limit-заголовки в доступных ответах не подтверждены. Планировщик должен иметь малую параллельность, backoff и журналировать HTTP-статус вместо обхода ограничений. - ФНС прямо указывает среди освобождённых от представления в ГИР БО организации бюджетной сферы, Банк России, религиозные организации, отчитывающихся в Банк России, организации с гостайной и случаи, установленные Правительством РФ; последняя отчётность реорганизуемого или ликвидируемого юрлица также не представляется. Перед выводом об отсутствии организации проверяйте актуальный перечень на странице «О ресурсе БФО» ФНС и применимую редакцию 402-ФЗ.
- Ограничение доступа к сведениям и отсутствие строки в поиске — не равнозначны отсутствию бухгалтерской отчётности у организации.
Примеры доступа
Контрольный HTTP-запрос
Ниже приведён прямой live-запрос, соответствующий подтверждённому контракту. Команда не переименовывает page в pageSize и не подставляет несуществующий downloadUrl:
curl -sS -D search.headers \
-H 'Accept: application/json' \
-A 'Mozilla/5.0' \
'https://bo.nalog.gov.ru/advanced-search/organizations/search?query=5256038700&page=0&size=20' \
-o search.json
jq '.content[0] | {id, inn, ogrn, shortName, bfo}' search.json
Контракт и результат подтверждены сохранённым ответом исходного сервиса от 13.07.2026 (его URL и параметры совпадают с командой): HTTP 200, Content-Type: application/json, передача chunked; в content[0] получены id=2515478, inn="<strong>5256038700</strong>", ogrn="1025202263327", bfo.period="2025", pageable.pageNumber=0, pageable.pageSize=20. Повторный live-запуск именно из рабочего контура 19.07.2026 не удался на TCP-этапе, поэтому перед промышленным запуском повторите эту команду из своей сети и сохраните свежие заголовки.
Проверенный PDF-ответ другого публичного примера показывает реальный формат скачивания: URL https://bo.nalog.gov.ru/download/bfo/pdf/10006829?period=2024&detailId=52322596 вернул 200 application/pdf, 1 287 079 байт, PDF 1.5 на 3 страницах, SHA-256 b8ad99f146586d6d0cd3763b82f4dad2b8a6e1f8fe6d7a963bf4fa4e45ff4fe3. Это контроль конкретного исторического файла, а не контрольная сумма всех PDF ресурса.
Минимальный Python-конвейер
Код ниже повторяет подтверждённую структуру HTTP-ответов и формирует CSV из JSON, а не из PDF. Значения строки вывода получены разбором контрольного ответа, приведённого выше. Вызовы к live-хосту из среды редактора не выполнялись из-за сетевого тайм-аута; поэтому HTTP-часть должна быть перепроверена перед запуском, а вот пути JSON и выборка полей проверены на фактических ответах ФНС.
from __future__ import annotations
import csv
import re
from pathlib import Path
import requests
BASE = "https://bo.nalog.gov.ru"
HEADERS = {"Accept": "application/json", "User-Agent": "Mozilla/5.0"}
def get_json(session: requests.Session, path: str, **params):
response = session.get(f"{BASE}{path}", params=params, timeout=30)
response.raise_for_status()
if "application/json" not in response.headers.get("Content-Type", ""):
raise RuntimeError(f"expected JSON, got {response.headers.get('Content-Type')!r}")
return response.json()
def plain_inn(value: str) -> str:
"""Поиск ФНС может вернуть <strong>...</strong> вокруг совпадения."""
return re.sub(r"<[^>]+>", "", value or "")
inn = "5256038700"
with requests.Session() as session:
session.headers.update(HEADERS)
found = get_json(
session,
"/advanced-search/organizations/search",
query=inn,
page=0, # нулевая страница
size=20,
)
item = next(x for x in found["content"] if plain_inn(x["inn"]) == inn)
organization_id = item["id"]
periods = get_json(session, f"/nbo/organizations/{organization_id}/bfo/")
period = next(x for x in periods if x["period"] == "2025")
annual = next(x for x in period["typeCorrections"] if x["type"] == 12)
correction = annual["correction"]
balance = correction["balance"]
result = correction["financialResult"]
pdf_url = (
f"{BASE}/download/bfo/pdf/{organization_id}"
f"?period={period['period']}&detailId={correction['id']}"
)
with Path("girbo-key-metrics.csv").open("w", newline="", encoding="utf-8") as out:
writer = csv.DictWriter(
out,
fieldnames=[
"inn", "ogrn", "organization_id", "period", "period_type",
"detail_id", "published_correction_date", "current1100", "current1200",
"current1300", "current1400", "current1500", "current1600", "current1700",
"current2110", "current2120", "current2200", "current2300", "current2400",
"pdf_url",
],
)
writer.writeheader()
writer.writerow({
"inn": plain_inn(item["inn"]),
"ogrn": item["ogrn"],
"organization_id": organization_id,
"period": period["period"],
"period_type": correction["periodType"],
"detail_id": correction["id"],
"published_correction_date": period.get("publishedCorrectionDate"),
**{key: balance.get(key) for key in (
"current1100", "current1200", "current1300", "current1400",
"current1500", "current1600", "current1700",
)},
**{key: result.get(key) for key in (
"current2110", "current2120", "current2200", "current2300", "current2400",
)},
"pdf_url": pdf_url,
})
print(out.name)
Фактическая строка контрольного ответа (поля сокращены для ширины):
girbo-key-metrics.csv
5256038700,1025202263327,2515478,2025,12,54356540,2026-03-17,
3905648.0,10784618,1448961.0,5267577.0,7973728.0,14690266,14690266,
6390649.0,3925141.0,801536.0,90701.0,45194.0
Если потребуется исходный XML, не заменяйте его догадкой об XBRL. В bundle есть кнопка «исходные файлы», которая вызывает GET /download/original/<correction.id>?isCb=false, но формат, упаковка, ответ и наличие XML у этой кнопки в публичном контуре не были подтверждены. Следующий фрагмент — псевдокод, не проверено; применять его можно только после фиксации реального ZIP/XML и его SHA-256:
# НЕ ПРОВЕРЕНО: возможно, endpoint вернёт не ZIP и не XML.
# archive = session.get(f"{BASE}/download/original/{correction['id']}",
# params={"isCb": "false"}, timeout=60)
# archive.raise_for_status()
# ... определить Content-Type и упаковку; лишь затем XML ET.iterparse(...)
Склейка с закупками и субсидиями
Ниже только обозначение ключей — псевдокод, не проверено как имена колонок конкретных файлов. Для каждого выпуска ЕИС и реестра соглашений проверьте фактический паспорт/JSON-схему.
bo.inn_clean → zakupki.supplier_inn # [ЕИС: закупки](/data-sources/federal/procurement)
bo.inn_clean → subsidy.recipient_inn # [реестр соглашений](/data-sources/federal/subsidy)
bo.inn_clean → egrul.inn # статус, адрес, ОКВЭД на дату среза
bo.inn_clean → rsmp.inn # только признак/категория МСП после проверки версии набора
После джойна сверяйте также ogrn, дату среза и статус в ЕГРЮЛ. Не соединяйте строки БО с закупкой по наименованию, КПП или текстовому региону, если есть ИНН.
Связанные страницы wiki
- Сведения о закупках — контракты и участники; ИНН поставщика является естественным ключом обогащения его БО.
- XML-выгрузки ЕИС Закупки — технический контур, в котором перед джойном нужно проверить путь конкретного поля участника/поставщика.
- Соглашения о субсидиях и межбюджетных трансфертах — соглашения используют реквизиты сторон; БО добавляет финансовый профиль получателя, но не доказывает расходование субсидии.
- ЕГРЮЛ и ЕГРИП — каноническая проверка ИНН, ОГРН, статуса, адреса и ОКВЭД на дату аналитического среза.
- Единый реестр субъектов МСП — машиночитаемое дополнение статуса МСП по ИНН, а не источник балансовых показателей.
- Бухгалтерская отчётность учреждений — другая методология и формы для учреждений; не переносите строки ГИР БО на бюджетный учёт.
- ИНН, ОГРН и ОКВЭД 2 — смысл ключей и классификатора при нормализации данных.
Не путать с
- Налоговая статистика ФНС — агрегированные формы налоговой статистики, а не финансовые строки отдельной организации.
- Открытые данные bus.gov.ru — публичные сведения и отчётность учреждений; это не заменитель ГИР БО для обычного юридического лица.
- e-disclosure.ru — раскрытие эмитентов и ценных бумаг; пересекается с ГИР БО лишь для части организаций и имеет другой состав документов.
Сводка для машинной обработки
primary_url: "https://bo.nalog.gov.ru/"
verified_at: "2026-07-19"
data_source_kind: "mixed"
formats: ["html", "json", "pdf"]
search_endpoint: "https://bo.nalog.gov.ru/advanced-search/organizations/search"
search_method: "GET"
search_parameters:
query: "строка поиска: ИНН, ОГРН или наименование"
page: "zero-based integer; confirmed 0"
size: "integer; confirmed 20"
search_record_path: "$.content[*]"
organization_id_path: "$.content[*].id"
bfo_endpoint_template: "https://bo.nalog.gov.ru/nbo/organizations/{organizationId}/bfo/"
bfo_record_path: "$[*].typeCorrections[*].correction"
pdf_endpoint_template: "https://bo.nalog.gov.ru/download/bfo/pdf/{organizationId}?period={period}&detailId={correctionId}"
join_keys: ["inn", "ogrn"]
time_key: ["period", "periodType", "correction.id", "publishedCorrectionDate"]
form_taxonomy: "Не подтверждена как публичная XBRL/XML-таксономия; API содержит нормализованные JSON-поля current<код>/previous<код>."
update_cadence: "по мере представления и обработки отчётности; не выровнено по календарю"
automation_caveat: "JSON backend недокументирован; перед промышленным запуском повторно проверить live-ответы и условия сайта"
Частые вопросы
В: Можно ли получить все строки баланса без OCR или парсинга PDF?
О: Да, для проверенного случая объекты balance и financialResult в JSON уже содержат current<код>, previous<код> и beforePrevious<код>. PDF всё равно нужен для визуальной и единичной юридической сверки единицы измерения, подписи и состава комплекта.
В: Есть ли у ГИР БО документированный API или дамп всех организаций?
О: На дату проверки не подтверждены ни публичная спецификация API, ни единый полный файл. Точки JSON — технические вызовы веб-фронтенда, поэтому скрипт должен фиксировать версию контракта, обрабатывать ошибки и повторно проверяться после обновления сайта.
В: Как связать БО с поставщиком из закупки?
О: Нормализуйте content[].inn (удалите HTML-подсветку), соедините с ИНН участника конкретной выгрузки ЕИС и подтвердите ОГРН/статус через ЕГРЮЛ. Один organizationId ГИР БО за пределами портала не используйте.
В: Почему организация не находится в ГИР БО, хотя есть в ЕГРЮЛ?
О: ЕГРЮЛ фиксирует регистрацию, а ГИР БО — опубликованные обязательные экземпляры. Возможны исключение из круга представления, ограничение доступа, отсутствие ещё не обработанной отчётности или иной правовой статус; это не доказательство прекращения организации.
В: Чем это отличается от bus.gov.ru и e-disclosure.ru?
О: bus.gov.ru относится к учреждениям и бюджетному учёту, а e-disclosure.ru — к раскрытию эмитентов. ГИР БО — ресурс ФНС с бухгалтерской отчётностью представивших её экономических субъектов; совпадение организации в двух витринах не делает наборы взаимозаменяемыми.