Как устроен ЕГРЮЛ — единый госреестр юридических лиц



    ЕГРЮЛ — это государственный реестр юридических лиц, в котором хранятся данные 10 миллионов российских компаний. Управляет справочником ФНС.

    Из ЕГРЮЛ мы берем данные организаций для «Подсказок», «Единого клиента» и «Фактора». В статье расскажем, как мы жили до справочника, как получаем к нему доступ и как с ним работаем.

    Жизнь до ЕГРЮЛ


    Еще пару лет назад ФНС скрывал ЕГРЮЛ в своих недрах, и данные о компаниях мы собирали где придется.

    Для начала купили базу у multistat.ru — это легальный реселлер, который продавал данные ФНС. Проблема в том, что свою базу «Мультистат» отдавал задорого и без обновлений.

    Поэтому мы обновляли данные с помощью сайтов kartoteka.ru и fedresurs.ru. Выгружать информацию скопом они, конечно же, не давали: в ответ на введенный ИНН или ОГРН показывали только одну карточку компании.

    Мы написали скрипт, который генерировал ИННы и запрашивал по ним информацию на сайтах-справочниках. Если скрипт находил новое юрлицо или изменение в старом, он забирал обновление.

    А в 2015 году ФНС открыл ЕГРЮЛ всем, кто готов платить. Этим налоговая служба убила рынок продажи справочника: раньше база стоила миллионы, а теперь символические, в общем-то, 150 000 ₽. (Есть подозрение, что вырученные деньги только-только окупают инфраструктуру и поддержку.)

    Тогда мы подумали: «Ну, теперь заживем!».

    Доступ к ЕГРЮЛ


    Годовой доступ к ЕГРЮЛ стоит 150 000 ₽. (Столько же стоит ЕГРИП — госреестр индивидуальных предпринимателей.)

    Вот что нужно было сделать в начале 2018 года, чтобы получить доступ к данным.

    Заплатить 150 000 ₽ за один справочник или 300 000 ₽ за два. Инструкция по заполнению платежки — на сайте ФНС.

    Отправить курьерской службой в ФНС два документа:

    • оригинал платежки со штампом банка «Оплачено», «Проведено» или «Принято»;
    • запрос о предоставлении сведений, содержащихся в ЕГРЮЛ. Бланк запроса — в приложении № 1 к административному регламенту (.docx). Ищите форму ближе к концу документа.

    В запросе можно выбрать способ доставки доступов — почта или емейл. Мы всегда выбираем емейл, но бывают неожиданности: в 2016 году на адреса домена @hflabs.ru письма ФНС не приходили. В 2017-м проблему исправили, но осадочек остался.

    Документы принимают по адресу: 125373, г. Москва, Походный проезд, двлд 3, второй этаж. Налоговая инспекция «МИ ФНС России по ЦОД». В отличие от обычной инспекции, у этой нет номера. В январе мы продлевали доступ к ЕГРЮЛ, и курьер по ошибке отдал документы в соседнюю инспекцию. Пакет чудом дошел куда нужно, но ждать пришлось дольше. Есть смысл подчеркнуть для курьера, что в нужном адресе номера инспекции нет.

    Дождаться решения. В течение трех рабочих дней, включая день доставки документов, в ФНС регистрируют входящие письма. В течение пяти рабочих дней рассматривают запрос.

    Статус заявки узнаю́т по номеру (495) 913-07-60. У вас спросят:

    • ИНН;
    • дату, когда ФНС приняла документы;
    • ФИО сотрудника, принявшего документы.

    Получить доступы. Если все в порядке, вы получите по почте или на емейл доступы к ЕГРЮЛ. В аттаче емейла — архив с файлами: PDF c уведомлением на официальном бланке, PDF с логином и паролем, сертификат в файле формата .p12.


    Даже если заказываешь доступы по емейл, их все равно продублируют по обычной почте. Именно к физическому письму относится строчка про CD

    Итак, доступы в кармане — пора утолять жажду к знаниям.

    Структура справочника


    ЕГРЮЛ представляет собой длиннющую портянку с папками-датами.


    Данные из ЕГРЮЛ скачивают с FTP-сервера

    В каждой директории лежит zip-архив.


    Архивов в директории может быть и несколько

    В инструкции по интеграции ФНС пишет, что в каждом архиве хранится до 100 xml-файлов. Мы пересчитывали, цифры верные :)


    В каждом xml — до 1000 записей

    Каждая запись включает в себя основные атрибуты юрлица:

    • ОГРН — идентификатор юрлица для ФНС;
    • адрес;
    • краткое и полное наименование;
    • ИНН;
    • КПП;
    • уставной капитал;
    • статус;
    • куча документов: свидетельство о регистрации, всевозможные лицензии и т. д.;
    • основной и дополнительный ОКВЭДы.

    Из перечисленных атрибутов только ОГРН заполнен у всех, он всегда уникален. С остальными параметрами бывают вариации, даже КПП есть не у всех юрлиц.

    Помимо основной информации о юрлице в каждой записи лежит еще кое-что интересное:

    • данные о физике-учредителе;
    • данные о юрике-учредителе;
    • управляющий-физик;
    • управляющий-юрик;
    • подробности реорганизации. Это когда одна компания вливается или поглощает другую;
    • правопреемники и правопредшественники;
    • филиалы и представительства, причем сколько угодно много.

    Да, филиалы в ЕГРЮЛ — не отдельные записи, а лишь атрибуты.

    Обновления


    В первый день каждого года ФНС выкладывает на сервер все, что у нее есть, полную базу юрлиц на текущий момент. Название папок с выгрузками: 01.01.2015_FULL, 01.01.2016_FULL и так далее.

    Дальше обновления выходят ежедневно, ФНС складывает их в папки по датам: 02.01.2018, 03.01.2018 и т. д. Если обновление не пришло, ничего страшного: ФНС может пропустить пару деньков, а потом вывалить сразу несколько.

    В каждом обновлении — только измененные записи. Если 4 мая ФНС узнала об изменениях в данных юрлица, в течение 1–3 дней они появятся в папке 05.05.2018, 06.05.2018 или 07.05.2018 соответственно. Поэтому актуальные данные о компании всегда лежат в папке с названием, ближайшим к сегодняшнему дню.

    Сколько будет архивов в обновлении, заранее неизвестно. Может быть и один. Если очень усредненно, обычно меняют данные где-то 50 000 юрлиц. Однажды, в феврале 2017 года, в обновлении пришла вообще вся база. Насколько можно судить, в ЕГРЮЛ тогда глобально изменились внутренние идентификаторы и элементы структуры, к бизнес-задачам не имеющие отношения.

    Казалось бы, получить из ЕГРЮЛ актуальные данные о юрлицах элементарно: берешь полную базу на начало года и применяешь все последующие апдейты. После этого остается каждый день скачивать и накатывать изменения на базу.

    Не тут-то было! ФНС строго следит, чтобы разработчики не скучали. Ошибки и костыли в ЕГРЮЛ — отдельная, интересная и богатая тема. Мы раскрыли ее в следующей статье.

    Приходите к нам работать, если нравится парсить сложные справочники, структурировать данные и приводить их к человеческому виду. Сейчас ищем джависта для продукта «Фактор». Зарплата — от 175 000 до 275 000 ₽, подробности — на hh.ru.
    HFLabs 87,30
    Качество и интеграция клиентских данных
    Поделиться публикацией
    Комментарии 24
      0
      Живу в Украине. Тут доступ к едрпоу (ваш егрюл) абсолютно бесплатный, читаю и не могу поверить, особенно цены. (((
        +1
        Дык и у нас бесплатный, но перебирать ИНН по одному надо в формочек ФНС. А тут всё и сразу. Обычному смертному это не надо, а те, кто решил использовать информацию в бизнесе, могут за неё и заплатить. Тем более 1,5 месячные зарплаты сотрудника за годовой доступ — не великие расходы.
        +1

        Приветствую, коллеги! А что случилось с номерами телефонов в апдейтах ЕГРЮЛ в 2018? На 01.01.2018 телефоны были, а теперь нет((

          +1

          Защита персональных данных — все номера телефонов скрыли. А то раньше базу ЕГРЮЛ часто парсили для извлечения номеров телефонов.

          0
          > Заплатить 150 000 ₽ за один справочник или 300 000 ₽ за два
          это разовый платеж или ежегодный?
            +1
            Ежегодный. Продлеваем в начале каждого года.
            +1
            Ох ещё бы рекламу прикрыть, открыл ООО — замучали предложениями открыть счёт, ИП — то же самое :)
              0
              В тексте неточность, доступ не по ftp, а http. Кстати, весь 17й год в комплекте с егрип шла АИС из которой можно было скрейпить ДР и место рождения. Кто-нибудь в курсе, собираются вернуть такое?
                +2
                Интересна была бы статья про то, как вы егрюл обрабатываете. Начиная с хранения — orm фреймворк такие жирные xml тянет или нет? какая субд, какие ттх у системы вышли — иногда наложки выкатывают после 2недельной паузы сразу с миллион обновлений юл, с какой скоростью обрабатывается. сколько запросов к апи в сутки и сколько каких серверов обслуживает. ну и да, про специфику егрюл — как решали проблемы что например в одном юл два пупкиных ви с разными инн. нутро ж подсказывает, что это один человек, но как это обработать…
                  0
                  Отличные вопросы, спасибо! Поговорю с ребятами-разработчиками, которые работают «на земле». Может быть, сделаем отдельную статью.
                    0
                    Присоединяюсь к предыдущему оратору, и вы обещали статью на этой неделе… Очень жду, очень интересно. Пока это просто хантинг с вашей стороны :)
                      0
                      Вот же статья, которую обещал habr.com/company/hflabs/blog/414885 :)

                      На вопросы mspain ответили там же в комментариях. Правда, не так уж интересно получилось.
                    0
                    в одном юл два пупкиных ви с разными инн. нутро ж подсказывает, что это один человек, но как это обработать…


                    Смотрю спецификацию, таблица 4.100 «Сведения о ФИО и (при наличии) ИНН ФЛ (СвФЛЕГРЮЛТип)» — там ИНН, Фамилия, Имя, Отчество.

                    На самом деле не обязательно. Насколько я понимаю, с точки зрения ФНС, люди идентифицируются по ИНН.

                    С точки зрения ФНС это разные люди… Вот тут обсуждают проблему двух ИНН. Если верить гуглу, у человека может быть два ИНН — один на физлицо, второй на него как на ИП.

                    Но может ли человек быть одновременно учредителем и соучредителем от имени ИП имени себя для своего ООО — не знаю. Вероятно, это незаконно и следить за этим должен тот же ФНС.

                    P.S. Не имею отношения к HF Labs, если что.
                      0
                      >На самом деле не обязательно

                      Не обязательно, но вероятность что в шараге ОООшной встретилось два разных Баранчука Васиссуалия Моисеевича почти нулевая. И соответственно, 99.Х% что это косяк налоговой и физлицо одно.

                      >соучредителем от имени ИП имени себя для своего ООО

                      Кажется вы не разобрались в вопросе :)
                        0
                        Не обязательно, но вероятность что в шараге ОООшной встретилось два разных Баранчука Васиссуалия Моисеевича почти нулевая. И соответственно, 99.Х% что это косяк налоговой и физлицо одно.


                        Вообще говоря, проверять такие косяки — как раз задача налоговой.

                        Я бы на месте обработчика этих данных вумное лицо не делал и подобные «вероятно-баги» решать не брался.

                        Потому что в каком-нибудь АО с 500 учредителями вполне вероятно появление двух Смирновых Андреев Александровичей с разными ИНН и, действительно, разных людей.

                        У меня сейчас нет доступа к дампу ФНС, мне нечем подтвердить это мнение. Просто поверьте на слово ;-)
                          0
                          Я и не утверждаю, что надо слить ФЛ в одно. Но обрабатывать это надо с учётом. Иначе и выходит: «есть СПАРК, а есть остальные дешевые и убогие аналоги».
                            0
                            «есть СПАРК, а есть остальные дешевые и убогие аналоги».

                            Не осознал проблемы.

                            Как обрабатывать — непонятно. Как я писал выше — два ИНН у физлица — это не нормально, это косяк налоговой.

                            Но исправлять его на стороне негосударственной аналитики мы не можем… хотя бы потому, что можем легко в результате предоставить пользователям недостоверную информацию. А работаем мы с бизнес-данными, на основе нашей аналитики человек может принять критичное для своего бизнеса решение.

                            Мы даже не имеем права написать: «Иванов Иван Иванович, ИНН XXXX и И.И.И., ИНН YYYY» — возможно одно и то же лицо.
                    +1
                    Отмечу, что размер архива не бывает больше 50 Мб.

                    Два года назад делал для руспрофайла импорт данных из ЕГРЮЛ. Наступил на все грабли, которые мог.

                    Жирные XML (а они доходили до 50 метров каждая) стандартный пхп-шный XML Parser не брал, падал сразу (выделил процессу 4 гектара — стал падать на 2-3 XML-ке, принудител ьное освобождение памяти не помогало).

                    Опыта в кастомных парсерах у меня немного, пришлось писать костыльное, на первый взгляд, решение, которое потом оказалось весьма эффективным.

                    Жирные XML-ки (в каждой до 1000 выгрузок) режем регуляркой на отдельные выгрузки — это строчки
                    <СвЮЛ ...>....</СвЮЛ>

                    Строчки зипуем, пишем в базу.

                    Зачем? В перспективе планировалась возможность сравнивать изменения в истории компании по выгрузкам. Каждый раз парсить файлы на предмет нужной выгрузки — я счел совершенно нерациональным подходом и решил хранить «сырую» выгрузку.

                    Ну, кроме сырой выгрузки хранилась еще всякая служебная информация — атрибуты

                    <ЕГРЮЛ ДатаВыг=... >

                    и другая мета, полезная для.

                    Потом сырые данные вынимались, каждая такая выгрузка заворачивалась в валидный XML, он парсился, нужные данные раскладывались куда нужно…

                    Реализовали ли анализ истории компании по выгрузкам и реализовывали ли — не знаю, это было уже без меня (личный конфликт с ПМ-ом уровня «я думал, ты догадаешься, как надо было сделать» закончился закономерно).

                    Теперь по поводу скорости обработки: понятно, что импорт из XML «сырых» данных в базу практически ограничен только скоростью I/O. Суточный diff всасывался со свистом, менее чем за минуту.

                    Анализ и полный разбор выгрузки, хотя и выглядел сложным с точки зрения спецификации, на деле оказался довольно простым. Нет, там действительно довольно мозголомная структура, но по сути все просто — анализируем ноду, разбираем атрибуты, пошагово разбираем субноды. В сумме что-то около 120 таблиц (пришлось прибегнуть к денормализации для ускорения парсинга, но, конечно, не везде, только в паре мест).

                    Хотя сейчас я бы написал парсинг иначе, более оптимально.

                    На продакшене, если мне не изменяет память, один дифф обрабатывался максимум секунду, минимум менее сотой доли секунды (действительно, есть компании, у которых СвЮЛ-запись весит под 40 метров, например, список учредителей может быть под 4000 человек).

                    Ну и по итогам парсинга выяснились довольно забавные вещи.

                    Дата выгрузки в позапрошлом веке

                    Самое длинное название региона (на 2016 год): поселок Центральной Усадьбы Совхоза 40 Лет Октября Машоновского сельского поселения Зарайского района Московской области

                    Самое длинное название компании в СвЮЛ/СвНаимЮЛ/НаимЮЛПолн (до 1000 символов) не влезает — там что-то в духе профсоюз союза профсоюзов ответственных работников…

                    С именами собственными отдельная песня — чего только люди в ФИО учредителя не пишут! Чуть ли не ребусы встречаются.

                    P.S.
                    К слову, кроме телефонов, в ЕГРЮЛ есть поля и для более критичных данных.
                      0
                      Спасибо, что так подробно расписали! Это интересно, передал ребятам-разработчикам.
                        0
                        К сожалению, у вас JAVA (насколько я могу судить по списку вакансий), а так бы я еще и предложил своё CV передать ;-)
                          0
                          Все верно, у нас Java без альтернатив. Вы так шикарно все расписали, что даже жаль, что мы разошлись!
                            0
                            >(выделил процессу 4 гектара — стал падать на 2-3 XML-ке, принудител ьное освобождение памяти не помогало)
                            >К сожалению, у вас JAVA

                            Читая про ваши приключения с пыхыпы и «выделил процессу 4 гектара — стал падать на 2-3 XML-ке», можно считать, что «К СЧАСТЬЮ, у них java» :))))

                            Никаких проблем с жором памяти не замечал, программе выделено намного меньше 4ГБ, а уж про удобство жавовского JAXB и говорить не стоит. Если ребята с прямыми руками, у них XML автоматически конвертируется в Java объекты. Дальше работать одно удовольствие. Читаешь про приседания с php и радуешься, что не php-шник :)
                              0
                              А вы попробуйте. Возьмите XML-файл метров на 50 и попробуйте распарсить. А заодно расскажите нам про сложности выделения памяти для JAVA-машин в виртуальных контейнерах.

                              Про удобство JAXB говорите джавистам, мне эта аббревиатура не говорит ни-че-го.

                              И, к слову, даже нативный PHP-шный парсер XML на выходе дает… объект. С которым можно работать привычными стрелочками.
                          0
                          Да, еще к парсингу данных. Выше речь шла о полном разборе выгрузки по юрлицу.

                          Сокращенный парсинг — название, ИНН, ОГРН, руководитель, адреса, реквезиты, оквэды итп парсились почти мгновенно, актуальная база из 10 млн юрлиц составлялась примерно за час-полтора. Ну, насколько я помню.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое