Единый реестр субъектов малого и среднего предпринимательства
| Признак | Значение |
|---|---|
| Уровень и охват | Федеральный полный срез Единого реестра субъектов МСП: юридические лица, ИП и главы КФХ, состоящие в реестре на дату среза |
| Тип доступа | Паспорт открытых данных ФНС со ссылкой на ZIP и архивом предыдущих срезов; программный API для этого набора не заявлен |
| Основные форматы | ZIP с XML в UTF-8; отдельные XSD и DOCX-описание формата |
| Оператор | ФНС России |
| Режим доступа | Открытое скачивание по типовым условиям использования открытых данных |
Коротко: набор 7707329152-rsmp — машиночитаемый снимок реестра принадлежности к МСП. Для каждой записи он даёт категорию (микро/малое/среднее), идентификаторы ЮЛ или ИП, дату включения, код региона и виды деятельности. Это источник для обогащения контрагентов по ИНН, а не выписка ЕГРЮЛ/ЕГРИП и не реестр получателей мер поддержки.
Качество и верификация
Проверка выполнена 2026-07-19 по паспорту ФНС, актуальным ZIP/XSD и DOCX-описанию формата, приложенному к паспорту.
| Измерение | Значение для этой карточки |
|---|---|
Дата проверки (last_verified) | 2026-07-19 |
Полнота (data_completeness) | Полная выгрузка реестра на дату среза: в XML один Документ представляет одного включённого субъекта МСП; для истории нужны соседние архивные срезы. |
Машиночитаемость (machine_readability) | ZIP с 7 347 XML по опубликованной XSD; схема и описание формата доступны отдельно. |
Юридическая значимость (legal_significance) | Официальная публикация ФНС. Состав сведений в паспорте отсылает к ч. 3 ст. 4.1 закона № 209-ФЗ. |
Задержка обновления (update_lag) | Паспорт не публикует отдельную величину лага; дата актуальности текущей выгрузки — 10.08.2026 при срезе 10.07.2026. |
Глубина архива (archive_depth) | На паспорте доступны ежемесячные ZIP с 10.08.2016 по 10.06.2026 плюс текущий срез 10.07.2026; старые версии XSD также перечислены. |
Лицензия (license_or_terms) | Типовые условия использования общедоступной информации в форме открытых данных: допускается коммерческое и некоммерческое использование без специальной лицензии; нужно указывать источник и не искажать сведения об обновлении. |
Описание
Паспорт идентифицирует набор как «Единый реестр субъектов малого и среднего предпринимательства», идентификатор — 7707329152-rsmp. Он содержит сведения о юридических лицах и индивидуальных предпринимателях, внесённых в реестр; состав сведений определён законом № 209-ФЗ. В примечании паспорта отдельно указано: сведения о среднесписочной численности с 10 января по 10 июня относятся к календарному году, предшествующему предыдущему, а в срезах с 10 июля по 10 декабря — к предыдущему календарному году.
Каждый ZIP — снимок состояния реестра: все проверенные XML-файлы текущего выпуска имеют в Документ/@ДатаСост значение 10.07.2026. Изменения состава между датами не помечаются отдельными событиями «включён» или «исключён»; их восстанавливают сравнением архивных срезов по ИНН/ОГРН(ИП).
В объём карточки не входят интерактивный поиск на rmsp.nalog.ru, выписки ЕГРЮЛ/ЕГРИП и реестр получателей поддержки МСП — это отдельный набор 7707329152-rsmppp.
Оператор
Федеральная налоговая служба — каталог открытых данных.
- Карточка ИС: Сайт ФНС России — статистика и данные — общий контур публикации открытых данных ФНС.
URL и точки доступа
| Тип доступа | URL | Формат |
|---|---|---|
| Паспорт: метаданные, актуальный ZIP и архив | https://www.nalog.gov.ru/opendata/7707329152-rsmp | HTML |
| Текущий срез на 10.07.2026 | https://file.nalog.ru/opendata/7707329152-rsmp/data-10072026-structure-12052026.zip | ZIP, 2 111 054 656 байт (1,97 GiB) |
| XSD текущей структуры | https://file.nalog.ru/opendata/7707329152-rsmp/structure-12052026.xsd | XSD, 32 641 байт, UTF-8 |
| Описание формата версии 4.06 | https://file.nalog.ru/opendata/7707329152-rsmp/VO_RRMSPSV_2_213_04_04_06.zip | ZIP: DOCX и XSD, 68 779 байт |
| Каталог всех наборов ФНС | https://www.nalog.gov.ru/rn77/opendata/ | HTML |
Не привязывайте обработчик к URL из второй строки: при новом срезе ФНС меняет имя ZIP. Актуальную ссылку надо получать из поля «Гиперссылка (URL) на набор» в паспорте; код ниже делает это автоматически.
Объекты данных и показатели
- Одна запись — элемент
Документ: один субъект МСП на дату@ДатаСост; субъект — ЮЛ, ИП или глава КФХ. - Ключи субъекта — ИНН и ОГРН для ЮЛ либо ИНН и ОГРНИП для ИП/главы КФХ. Они передаются строками, чтобы не потерять ведущие нули и не выйти за безопасную точность числовых типов.
- Классификация — категория МСП, признак вновь созданного субъекта, социального предприятия, среднесписочная численность для ЮЛ, регион и ОКВЭД.
- Не публикуются: КПП, ОКТМО, полный почтовый адрес, выручка/доход, данные об участниках и явный признак исключения из реестра. В XSD объявлен общий тип
КППТип, но в структуреФайл/Документнет элемента или атрибутаКПП.
Структура файла (XML-схема)
- Кодировка: XML-декларация фактических файлов —
UTF-8; текущая XSD также имеет кодировку UTF-8. - Корневой элемент:
Файл; обязательные атрибутыИдФайл,ВерсФорм="4.06",ТипИнф="РЕЕСТРМСП",КолДок;ВерсПрогнеобязателен. - Повторяющаяся запись:
Документ— один включённый в реестр субъект МСП. В текущем ZIP каждый проверенный XML-файл содержитКолДок="900"и 900 элементовДокумент. - Вложенные группы: один из
ОргВклМСПилиИПВклМСП; обязательныйСведМН; необязательные ОКВЭД, лицензии, продукция и программы партнёрства. - XSD: structure-12052026.xsd — опубликована ФНС, не реконструирована.
Компактный скелет актуального формата:
<?xml version="1.0" encoding="UTF-8"?>
<Файл ИдФайл="VO_RRMSPSV_0000_9965_20260710_<GUID>"
ВерсФорм="4.06" ТипИнф="РЕЕСТРМСП" КолДок="900">
<ИдОтпр>
<ФИООтв Фамилия="-" Имя="-"/>
</ИдОтпр>
<Документ ИдДок="<GUID>" ДатаСост="10.07.2026" ДатаВклМСП="01.08.2016"
ВидСубМСП="1" КатСубМСП="1" ПризНовМСП="2" СведСоцПред="2" ССЧР="0">
<ОргВклМСП НаимОрг="..." НаимОргСокр="..." ИННЮЛ="4305070828" ОГРН="1054301505840"/>
<!-- либо для ИП/главы КФХ: <ИПВклМСП ИННФЛ="..." ОГРНИП="..."><ФИОИП .../></ИПВклМСП> -->
<СведМН КодРегион="43"><Регион Тип="обл." Наим="Кировская"/></СведМН>
<СвОКВЭД><СвОКВЭДОсн КодОКВЭД="47.2" НаимОКВЭД="..." ВерсОКВЭД="2014"/></СвОКВЭД>
<СвЛиценз НомЛиценз="..." ДатаЛиценз="...">...</СвЛиценз>
<СвПрод КодПрод="69.1" НаимПрод="Услуги юридические" ПрОтнПрод="2"/>
</Документ>
</Файл>
Проверенный ZIP содержит 7 347 XML-членов с именами вида VO_RRMSPSV_0000_9965_20260710_<GUID>.xml. Центральный каталог ZIP сообщает суммарный распакованный размер 22 282 684 594 байта (20,75 GiB). По первому, последнему и восьми распределённым XML-файлам КолДок=900; ориентир объёма — около 6,6 млн записей (7 347 × 900). Точное число при производственном импорте считайте итерацией, а не только умножением или доверием к атрибуту.
Поля набора
Тип и обязательность — по XSD и DOCX «Описание формата предоставления сведений» версии 4.06; примеры — из выборочных XML текущего среза 10.07.2026. Обозначения: «обяз.» — обязателен, «опц.» — может отсутствовать, 0..N — повторяющаяся необязательная группа.
| Путь/элемент | Тип | Обяз. | Семантика | Пример | Источник значения / справочник |
|---|---|---|---|---|---|
Файл/@ИдФайл | строка T(1-255) | обяз. | Имя XML-файла без расширения | VO_RRMSPSV_0000_9965_20260710_ff5129a4-... | Формат ФНС; имя XML должно совпадать с атрибутом |
Файл/@ВерсФорм | enum-строка | обяз. | Версия логического формата | 4.06 | Константа XSD текущей версии |
Файл/@ТипИнф | enum-строка | обяз. | Тип передаваемой информации | РЕЕСТРМСП | Константа XSD |
Файл/@ВерсПрог | строка T(1-40) | опц. | Версия программы формирования | не присутствует в проверенных XML | Поле XSD; ТРЕБУЕТ ПРОВЕРКИ при появлении значения |
Файл/@КолДок | целое N(9) | обяз. | Число Документ в конкретном XML-члене | 900 | Заголовок XML; подтверждать реальным подсчётом при импорте |
Документ/@ИдДок | строка T(1-36) | обяз. | Технический идентификатор записи; формат рекомендует GUID | 7308286e-4005-48f9-b190-9f8b54a59985 | Технический ключ, не внешний идентификатор организации |
Документ/@ДатаСост | строка ДД.ММ.ГГГГ | обяз. | Дата состояния реестра, на которую сформирован срез | 10.07.2026 | Дата среза |
Документ/@ДатаВклМСП | строка ДД.ММ.ГГГГ | обяз. | Дата включения субъекта в реестр | 01.08.2016 | Реестр МСП |
Документ/@ВидСубМСП | enum-строка T(=1) | обяз. | Тип субъекта: 1 — ЮЛ, 2 — ИП, 3 — глава КФХ | 1 | Коды XSD / описание формата |
Документ/@КатСубМСП | enum-строка T(=1) | обяз. | Категория: 1 — микро, 2 — малое, 3 — среднее предприятие | 2 | Коды XSD / описание формата |
Документ/@ПризНовМСП | enum-строка T(=1) | обяз. | Вновь созданное ЮЛ / вновь зарегистрированный ИП: 1 — да, 2 — нет | 1 | Коды XSD / описание формата |
Документ/@СведСоцПред | enum-строка T(=1) | обяз. | Социальное предприятие: 1 — да, 2 — нет | 2 | Коды XSD / описание формата |
Документ/@ССЧР | целое N(9) | опц.; требуется для ЮЛ | Среднесписочная численность работников | 16 | Реестр МСП; см. примечание паспорта о годе данных |
Документ/ОргВклМСП/@НаимОрг | строка T(1-1000) | обяз. для ЮЛ | Полное русское наименование ЮЛ | ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ВЛАД" | ЕГРЮЛ / реестр МСП |
.../ОргВклМСП/@НаимОргСокр | строка T(1-500) | опц. | Сокращённое русское наименование ЮЛ | ООО "ВЛАД" | ЕГРЮЛ / реестр МСП |
.../ОргВклМСП/@ИННЮЛ | строка из 10 цифр | обяз. для ЮЛ | ИНН юридического лица | 4305070828 | ИНН; основной ключ склейки |
.../ОргВклМСП/@ОГРН | строка из 13 цифр | обяз. для ЮЛ | Основной государственный регистрационный номер ЮЛ | 1054301505840 | ОГРН |
Документ/ИПВклМСП/@ИННФЛ | строка из 12 цифр | обяз. для ИП/главы КФХ | ИНН индивидуального предпринимателя | 504809811204 | ИНН; основной ключ склейки |
.../ИПВклМСП/@ОГРНИП | строка из 15 цифр | обяз. для ИП/главы КФХ | ОГРНИП субъекта | 314504826700015 | ОГРН |
.../ИПВклМСП/ФИОИП/@Фамилия, @Имя, @Отчество | строки до 60 символов | группа опц. | ФИО ИП; отчество опционально | МАКСИМЕНКО, АЛЕКСАНДР, СЕРГЕЕВИЧ | Реестр МСП |
Документ/СведМН/@КодРегион | строка из 2 цифр | обяз. | Код субъекта РФ | 43 | Справочник субъектов РФ, не ОКТМО |
.../СведМН/(Регион|Район|Город|НаселПункт)/@Тип, @Наим | строки до 50 / 255 символов | опц. | Наименование и тип части адреса; это не полный адрес | Регион Тип="обл." Наим="Кировская" | Реестр МСП |
Документ/СвОКВЭД/СвОКВЭДОсн/@КодОКВЭД | строка T(2-8) | опц. | Основной действующий ОКВЭД заявительного типа | 47.2 | ОКВЭД |
.../СвОКВЭД/(СвОКВЭДОсн|СвОКВЭДДоп)/@НаимОКВЭД | строка T(0-1000) | опц. | Наименование основного или дополнительного ОКВЭД | Торговля розничная пищевыми продуктами... | ОКВЭД |
.../СвОКВЭД/(СвОКВЭДОсн|СвОКВЭДДоп)/@ВерсОКВЭД | enum-строка | обяз. в элементе ОКВЭД | Версия классификатора: 2001 или 2014 | 2014 | ОК 029-2001 / ОК 029-2014 |
Документ/СвОКВЭДотч/... | та же структура, что СвОКВЭД | опц. | Действующие ОКВЭД отчётного типа | СвОКВЭДОсн КодОКВЭД="93.29" ... ВерсОКВЭД="2014" | ОКВЭД |
Документ/СвЛиценз | сложный элемент, 0..N | опц. | Действующая или приостановленная лицензия субъекта | НомЛиценз="Л041-01162-50/00654518" | Реестр МСП |
.../СвЛиценз/@СерЛиценз, @НомЛиценз, @ВидЛиценз | строки до 10 / 100 / 10 символов | опц. | Серия, номер и вид лицензии | номер Л041-01162-50/00654518 | Реестр МСП |
.../СвЛиценз/@ДатаЛиценз, @ДатаНачЛиценз, @ДатаКонЛиценз, @ДатаОстЛиценз | строки ДД.ММ.ГГГГ | опц. | Выдача, начало, окончание и приостановление лицензии | 31.05.2023, 31.05.2023 | Реестр МСП |
.../СвЛиценз/@ОргВыдЛиценз, @ОргОстЛиценз | строки до 500 символов | опц. | Орган, выдавший или приостановивший лицензию | МИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ МОСКОВСКОЙ ОБЛАСТИ | Реестр МСП |
.../СвЛиценз/НаимЛицВД | текст T(0-1000), 0..N | опц. | Лицензируемый вид деятельности | Медицинская деятельность ... | Реестр МСП |
Документ/СвПрод/@КодПрод | строка T(1-18) | обяз. в группе | Код вида продукции | 69.1 | ОКПД 2, ОК 034-2014 (КПЕС 2008) |
.../СвПрод/@НаимПрод | строка T(1-1000) | обяз. в группе | Наименование вида продукции | Услуги юридические | ОКПД 2 |
.../СвПрод/@ПрОтнПрод | enum-строка T(=1) | обяз. в группе | Отнесение продукции: 1 — инновационная/высокотехнологичная, 2 — нет | 2 | Коды XSD / описание формата |
Документ/СвПрогПарт/@НаимЮЛ_ПП, @ИННЮЛ_ПП, @НомДог, @ДатаДог | строки; ИНН 10 цифр, дата ДД.ММ.ГГГГ | группа 0..N; ИНН и дата обяз. в группе | Заказчик программы партнёрства, его ИНН, номер и дата договора о присоединении | ТРЕБУЕТ ПРОВЕРКИ: группа не встретилась в девяти выборочных XML; поля подтверждены опубликованной XSD | Справочник программ партнёрства / реестр МСП |
ОргВклМСП и ИПВклМСП — взаимоисключающий выбор в Документ; не пытайтесь ожидать оба. У СвОКВЭД могут быть один основной и много дополнительных кодов; при выгрузке в плоскую таблицу вынесите их в дочернюю таблицу, иначе строка субъекта будет дублироваться.
Ключи связки с другими данными
| Ключ | Чем является | С чем соединять | Примечание |
|---|---|---|---|
ОргВклМСП/@ИННЮЛ или ИПВклМСП/@ИННФЛ | ИНН субъекта МСП | поставщик/заказчик после нормализации ИНН в XML-выгрузках ЕИС; получатель в реестре субсидий; получатель поддержки в 7707329152-rsmppp | Храните строкой. ЮЛ имеют 10 цифр, ИП — 12; внешнее поле нужно приводить к тому же виду и проверять его семантику. |
ОргВклМСП/@ОГРН | ОГРН юридического лица | ЕГРЮЛ и корпоративные раскрытия | Полезен как альтернативный ключ и для контроля совпадений; только для ЮЛ. |
ИПВклМСП/@ОГРНИП | ОГРНИП ИП / главы КФХ | ЕГРИП и наборы, в которых он раскрыт | Только для ИП и глав КФХ; не заменяет ИНН при смешанном реестре. |
СвОКВЭД.../@КодОКВЭД | Код вида деятельности | ОКВЭД, отраслевые группы в закупках и статистике | Учитывайте @ВерсОКВЭД: в текущих выборках встречается 2014, XSD допускает также 2001. |
СведМН/@КодРегион | Двухзначный код субъекта РФ | региональные срезы и справочник субъектов РФ | Это не ОКТМО: для муниципального уровня нужна внешняя геокодировка. |
Объёмы и версионирование
- Текущий ZIP:
data-10072026-structure-12052026.zip, 2 111 054 656 байт; заголовок HTTPLast-Modified— 10.07.2026 13:25:52 GMT. - Состав ZIP: 7 347 XML-файлов, суммарно 22 282 684 594 байта после распаковки. В девяти проверенных файлах — по 900
Документ; ориентир — около 6,6 млн записей. - Имена: ZIP —
data-DDMMYYYY-structure-DDMMYYYY.zip; XML —VO_RRMSPSV_0000_9965_YYYYMMDD_<GUID>.xml. В имени текущего ZIP первая дата — дата среза, вторая — дата версии структуры; не преобразуйте их автоматически в ISO, не разобрав порядокDDMMYYYY. - Версия формата:
4.06; актуальная XSD названаstructure-12052026.xsd. Паспорт также сохраняет XSD10062025,10062023,10032022,10082021,10102019,08012016. - Архив: доступен прямо на паспорте: предыдущие ZIP с 10.08.2016 по 10.06.2026, плюс актуальная ссылка 10.07.2026. Это архив срезов, а не журнал изменений.
Периодичность обновления
Паспорт не выводит отдельное текстовое поле «периодичность». Наблюдаемая по списку архивов периодичность — ежемесячный срез на 10-е число: data-10082016, data-10092016, …, data-10062026, текущий data-10072026. Для текущего выпуска паспорт фиксирует дату последнего изменения 10.07.2026, содержание «Обновление набора» и дату актуальности 10.08.2026.
Это наблюдение по архиву, а не гарантированное расписание: перед запуском регулярной загрузки сверяйте паспорт и извлекайте актуальный URL программно.
Ограничения и особенности
- Не загружайте ZIP целиком в память: один актуальный архив занимает ~2,11 ГБ, XML после распаковки — ~22,28 ГБ. Обрабатывайте XML-члены последовательно и используйте
iterparse. - Актуальный ZIP поддерживает HTTP Range (
Accept-Ranges: bytes); это позволило проверить центральный каталог и отдельные XML-члены без скачивания 2,11 ГБ. Для полного импорта всё равно потребуется место на диске под ZIP либо собственная потоковая загрузка с сохранением архива. - В наборе нет КПП, ОКТМО и явной даты исключения. Отсутствие субъекта в новом срезе можно трактовать только после сравнения снимков, с учётом возможных реорганизаций и качества ключей.
- Не путайте
КодРегионсо значением ОКТМО: это двухзначный код субъекта РФ, а не муниципальное образование. - ОКВЭД заявительного и отчётного типов находятся в разных ветках (
СвОКВЭДиСвОКВЭДотч); не объединяйте их без поля-источника.
Примеры доступа
1. Найти актуальный ZIP в паспорте и скачать на диск
Проверено 2026-07-19: запрос к паспорту выбрал data-10072026-structure-12052026.zip; его HTTP-заголовок подтвердил размер 2 111 054 656 байт. Сам полный ZIP в рамках проверки не скачивался: ниже код делает это потоково на диск и требует около 2,1 ГБ свободного места.
from pathlib import Path
from urllib.parse import urljoin
from urllib.request import Request, urlopen
from lxml import html
PASSPORT = "https://www.nalog.gov.ru/opendata/7707329152-rsmp"
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; rsmp-downloader/1.0)"}
with urlopen(Request(PASSPORT, headers=HEADERS), timeout=60) as response:
page = html.fromstring(response.read())
# Первая ссылка data-*.zip в паспорте — поле «Гиперссылка (URL) на набор».
zip_hrefs = page.xpath(
"//a[contains(@href, '/opendata/7707329152-rsmp/data-') "
"and contains(@href, '.zip')]/@href"
)
if not zip_hrefs:
raise RuntimeError("ФНС не отдала актуальную ссылку data-*.zip в паспорте")
zip_url = urljoin(PASSPORT, zip_hrefs[0])
target = Path(zip_url.rsplit("/", 1)[-1])
with urlopen(Request(zip_url, headers=HEADERS), timeout=600) as response, target.open("wb") as output:
while chunk := response.read(1024 * 1024): # 1 MiB; весь ZIP не держится в RAM
output.write(chunk)
print(f"saved {target} ({target.stat().st_size:,} bytes) from {zip_url}")
2. Потоково разобрать все XML внутри ZIP
Проверено 2026-07-19 на XML-члене VO_RRMSPSV_0000_9965_20260710_ff5129a4-bef7-4837-a344-eea98946edb8.xml актуального ZIP: XML валиден против structure-12052026.xsd; lxml.etree.iterparse извлёк ИНН, ОГРН(ИП), дату среза, категорию, регион и основной ОКВЭД. Функция ниже не строит DOM всего файла и освобождает обработанные элементы.
import json
from pathlib import Path
from zipfile import ZipFile
from lxml import etree
def get_attr(element, name):
return element.get(name) if element is not None else None
def flatten_document(document):
company = document.find("ОргВклМСП")
entrepreneur = document.find("ИПВклМСП") # также используется для главы КФХ
address = document.find("СведМН")
primary_okved = document.find("./СвОКВЭД/СвОКВЭДОсн")
fio = entrepreneur.find("ФИОИП") if entrepreneur is not None else None
return {
"record_id": document.get("ИдДок"),
"as_of": document.get("ДатаСост"),
"included_at": document.get("ДатаВклМСП"),
"subject_kind": document.get("ВидСубМСП"),
"msp_category": document.get("КатСубМСП"),
"is_new": document.get("ПризНовМСП"),
"is_social_enterprise": document.get("СведСоцПред"),
"employee_count": document.get("ССЧР"),
"inn": get_attr(company, "ИННЮЛ") or get_attr(entrepreneur, "ИННФЛ"),
"ogrn_or_ogrnip": get_attr(company, "ОГРН") or get_attr(entrepreneur, "ОГРНИП"),
"name": get_attr(company, "НаимОрг") or " ".join(
part for part in (get_attr(fio, "Фамилия"), get_attr(fio, "Имя"), get_attr(fio, "Отчество")) if part
),
"region_code": get_attr(address, "КодРегион"),
"okved_primary": get_attr(primary_okved, "КодОКВЭД"),
"okved_version": get_attr(primary_okved, "ВерсОКВЭД"),
}
def stream_records(zip_path):
with ZipFile(zip_path) as archive:
for member in archive.namelist():
if not member.endswith(".xml"):
continue
with archive.open(member) as source:
for _, document in etree.iterparse(
source, events=("end",), tag="Документ", huge_tree=True
):
row = flatten_document(document)
document.clear()
while document.getprevious() is not None:
del document.getparent()[0]
yield row
for number, row in enumerate(stream_records(Path("data-10072026-structure-12052026.zip")), 1):
print(json.dumps(row, ensure_ascii=False))
if number == 10:
break
3. Соединить нормализованный срез МСП с внешней таблицей по ИНН
Проверено 2026-07-19: операция pandas.merge выполнена на двух строках, извлечённых из проверенного XML-среза, и тестовой внешней таблице. В примере contracts.csv — локально подготовленный контракт внешнего набора с колонкой supplier_inn; конкретное имя поля в сырой выгрузке ЕИС или другом источнике ТРЕБУЕТ ПРОВЕРКИ до нормализации. ИНН нельзя приводить к числу.
import pandas as pd
# rsmp_current.parquet формируется потоковым разбором выше; это один срез @ДатаСост.
msp = pd.read_parquet(
"rsmp_current.parquet",
columns=["inn", "as_of", "msp_category", "region_code", "okved_primary"],
)
contracts = pd.read_csv("contracts.csv", dtype={"supplier_inn": "string"})
required = {"supplier_inn"}
missing = required - set(contracts.columns)
if missing:
raise ValueError(f"Нормализуйте внешний набор: отсутствуют колонки {sorted(missing)}")
msp["inn"] = msp["inn"].astype("string").str.strip()
contracts["supplier_inn"] = contracts["supplier_inn"].astype("string").str.strip()
# Уникальность — ожидаемое свойство одного среза; fail-fast защищает от ошибочной склейки.
if msp["inn"].duplicated().any():
raise ValueError("В срезе есть повторяющиеся ИНН: разберите дубликаты до join")
joined = contracts.merge(
msp,
how="left",
left_on="supplier_inn",
right_on="inn",
validate="m:1",
indicator=True,
)
joined.to_parquet("contracts_enriched_with_msp.parquet", index=False)
print(joined["_merge"].value_counts(dropna=False))
Сводка для машинной обработки
primary_url: "https://www.nalog.gov.ru/opendata/7707329152-rsmp"
formats: ["zip", "xml", "xsd", "docx"]
encoding: "UTF-8"
root_element: "Файл"
record_element: "Документ"
update_cadence: "наблюдаемая: ежемесячный срез на 10-е; отдельное расписание не заявлено в паспорте"
join_keys: ["inn", "ogrn", "ogrnip", "okved", "region_code"]
schema_source: "https://file.nalog.ru/opendata/7707329152-rsmp/structure-12052026.xsd (официальная XSD)"
current_release: "data-10072026-structure-12052026.zip"
current_release_date: "2026-07-10"
format_version: "4.06"
archive_members_xml: 7347
sample_size_records: 900
estimated_records: 6612300
file_size_bytes: 2111054656
uncompressed_size_bytes: 22282684594
Связанные страницы wiki
- Публичный портал реестра МСП (rmsp.nalog.ru) — интерактивная проверка субъекта и статистика по тому же реестру; не заменяет массовый XML-срез.
- Единый реестр получателей поддержки МСП — другой реестр: факты полученной поддержки; присоединяется к этому набору по ИНН для региона и ОКВЭД получателя.
- XML-выгрузки ЕИС закупок — внешний массив для сопоставления поставщиков/заказчиков с принадлежностью к МСП после нормализации ИНН.
- Реестр субсидий — внешний массив для анализа получателей бюджетных субсидий с признаком МСП по ИНН.
- ОКВЭД — справочник для интерпретации отраслевых кодов
КодОКВЭД. - ИНН — основной идентификатор склейки в этом наборе.
Не путать с
- Единый реестр МСП — получателей поддержки — фиксирует меры поддержки и получателей, а не принадлежность к МСП; факт включения в текущий набор не означает получение поддержки.
- Налоговая статистика ФНС — агрегированные показатели, а не записи организаций и ИП.
- ОКТМО — муниципальный классификатор; в XML
7707329152-rsmpего нет,КодРегион— только код субъекта РФ.
Частые вопросы
В: Можно ли узнать из XML, когда субъект исключён из реестра?
О: Нет. В текущей XSD нет даты или флага исключения. Наличие Документ означает присутствие в срезе на @ДатаСост; исчезновение нужно определять сравнением двух срезов по ИНН и ОГРН/ОГРНИП.
В: Есть ли в наборе КПП, ОКТМО и полный адрес?
О: Нет. У ЮЛ есть ИНН и ОГРН, у ИП — ИНН и ОГРНИП. Территория ограничена СведМН/@КодРегион и необязательными именованными частями адреса; КПП и ОКТМО не передаются.
В: Какой ключ выбрать для склейки с закупками?
О: Основной ключ — строковый ИНН (@ИННЮЛ для ЮЛ, @ИННФЛ для ИП/главы КФХ). ОГРН/ОГРНИП полезны как дополнительная проверка, но применимы только к соответствующему виду субъекта. Перед соединением сохраняйте длину ИНН и проверяйте смысл внешнего поля: поставщик, заказчик и получатель — разные роли.