Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Налоговая отдаёт данные ЕГРЮЛ по организации в виде PDF. Посредники за автоматический доступ по API хотят денег. На многих сайтах часть данных закрыто, часть функций недоступны бесплатно, и полно рекламы.
Особенно интересно, что на некоторых сайтах предоставляющих данные по API имеется логотип Сколково. Это такой высокотехнологический бизнес, наверное, открытые данные продавать.
Налоговая просит 150 000 рублей в год за доступ к данным ЕГРЮЛ в виде сваленных в архивы XML-файлов. У ФНС классный бизнес. Вы проявляйте должную осмотрительность при выборе поставщиков, но доступ к данным за деньги. Если вы хотите получить доступ и к реестру индивидуальных предпринимателей (ЕГРИП), то платите ещё 150 000 рублей в год. Согласитесь 300 000 рублей в год приличная сумма.
Остальные реестры данных у налоговой доступны бесплатно. Однако, без базы ЕГРЮЛ их вряд ли можно использовать. Самая частая операция в бизнесе подставить реквизиты из ЕГРЮЛ по ИНН.
Сформировалась целая отрасль, можно сказать, торговцев воздухом открытыми данными, создающих ВВП из воздуха как бухгалтеры, работающие руками там, где должны работать программы. Сколько компаний платит налоговой по 300 000р. в год?! Сколько программистов занято написанием одинаковых по функциям парсеров, которые переводят данные из XML налоговой в SQL и JSON?! Сколько серверов заняты под одинаковые функции?! Где добавочная стоимость? Все вроде при деле, а за чей счёт банкет?
Ну, ладно, “скандалить, критиковать каждый может”(с) как говорил бессмертный товарищ Райкин. “А что ты предлагаешь?” — резонно вы меня спросите. А я вам отвечу.
Что я предлагаю в теории
Потребовать от ФНС бесплатно отдавать все открытые данные по API в XML и JSON, а все реестры выкладывать в виде таблиц в формате CSV.
Хорошо бы ещё ФНС и принимала данные. А то чек пробить — нужно покупать кассу, а к кассе регулярно фискальный накопитель, платить посредникам из ОФД. Отправить бесплатно чек в налоговую по API нельзя. А на Украине можно! Чтобы заплатить налоги, надо ещё кучу денег потратить непонятно почему. Кто-то всё никак не нажрётся.
Бесплатно отправить декларацию в налоговую тоже надо нанимать посредников. Хотя налоговая вроде бы и говорит, что можно.
Для этого у нас есть в теории депутаты. Например, у нас на Пресне это депутат МосГорДумы Сергей Митрохин и выбранный электронным голосованием Олег Леонов.
Оба они, правда, не очень к законодательным инициативам граждан расположены, всё больше частными проблемами заняты. Но я им пошлю ссылку и формулировку законодательной инициативы о бесплатном предоставлении открытых данных в указанных форматах органами государственной власти.
Теория хорошо — переходи к практике
Ладно, погрустили, посмеялись, перехожу к делу. Понятно, что никто нам ничего не даст, поэтому рассчитывать можно только на себя. Заплатили мы 150 000 рублей. Спарсил я кучи этих архивов и открываю всем бесплатный доступ — https://egrul.itsoft.ru
Все организации, у которых есть ИНН, доступны по следующим ссылкам:
https://egrul.itsoft.ru/7730588444.json
https://egrul.itsoft.ru/7730588444.xml
https://egrul.itsoft.ru/7730588444
Организации без ИНН доступны по аналогичным ссылкам только с ОГРН.
Всем же JSON нужен, а не PDF.
Вы, наверное, удивились на фразе про ИНН. Да, не у всех он есть. Первая организация в ЕГРЮЛ, у которой нет — какая-то религиозная община. Ну не с ИНН же и с онлайн-кассой заниматься продажей свечек и наваром в 15 концов.
Наконец-то дата-центр ITSOFT оправдал своё название. :)
Отличия egrul.itsoft.ru от других
Данные в оригинальном виде. Вы видите, например, дату выписки.
Все данные открыты.
Без регистрации и бесплатно.
Без рекламы.
Супербыстро.
Как пользоваться
Первый вариант с расширением .gz и без отправки заголовка Accept-encoding: gzip, но с декомпрессией на вашей стороне:
$content = gzdecode(file_get_contents('https://egrul.itsoft.ru/7730588444.json.gz'));
$json = json_decode($content,TRUE);
print_r($json);
Второй вариант с отправкой заголовка "Accept-encoding: gzip\r\n" и декомпрессией на вашей стороне:
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept-encoding: gzip\r\n"
]
];
$context = stream_context_create($opts);
$content = gzdecode(file_get_contents('https://egrul.itsoft.ru/7730588444.xml',
false, $context));
$xml = simplexml_load_string($content, 'SimpleXMLElement');
$xml = json_decode(json_encode($xml),TRUE);
print_r($xml);
$content = gzdecode(file_get_contents('https://egrul.itsoft.ru/7730588444.json',
false, $context));
$json = json_decode($content,TRUE);
print_r($json);
Или так:
function readTextFile(file, callback) {
var rawFile = new XMLHttpRequest();
rawFile.overrideMimeType("application/json");
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4 && rawFile.status == "200") {
callback(rawFile.responseText);
}
}
rawFile.send(null);
}
readTextFile('https://egrul.itsoft.ru/' + folder_name + '.json',
function(text){
var data = JSON.parse(text);
console.log(data);
});
Третий вариант менее предпочтительный без расширения .gz, без отправки заголовка Accept-encoding: gzip и без декомпрессии — тоже можно, но лучше так не делать, если нагрузка канала пойдёт к гигабиту, то всё же придётся данные сжимать, так как сжатие уменьшает их в 5 раз.
$content = file_get_contents('https://egrul.itsoft.ru/7730588444.xml');
$xml = simplexml_load_string($content);
print_r($xml);
$content = file_get_contents('https://egrul.itsoft.ru/7730588444.json');
$json = json_decode($content,TRUE);
print_r($json);
Что и как отдаётся с какими расширениями и заголовками всегда можете посмотреть на нашем проекте Проверка HTTP-заголовков веб-сервера.
Описание формата данных
См. Приказ ФНС России от 18.01.2021 N ЕД-7-14/17@
В налоговой говорят, что с апреля будет новый формат данных. Мне особой разницы между новым и старым форматом данных обнаружить не удалось. Пока заметил только, что НаимЮЛСокр из таблицы 4.5 был атрибутом, а стал составным элементом.
Желающие могут сравнить на примере следующих ИНН:
7734344833, 7734349976, 7734355673, 7734358610, 7734365664, 7734368263, 7734372510, 7734375172, 7734379177, 7734381881, 7734384385, 7734386745, 7734389947, 7734394369, 7734397610,
7734347440, 7734350026, 7734355747, 7734363924, 7734366763, 7734368961, 7734372615, 7734376240, 7734379353, 7734382300, 7734385149, 7734387192, 7734390170, 7734394390, 7734397627,
7734347922, 7734352545, 7734356959, 7734364759, 7734367492, 7734369644, 7734374669, 7734376458, 7734379850, 7734383134, 7734385501, 7734388380, 7734390318, 7734395309, 7734397634,
7734349510, 7734354694, 7734358280, 7734365424, 7734368030, 7734372020, 7734374771, 7734378769, 7734380140, 7734383857, 7734386216, 7734389094, 7734391569, 7734397440, 7734399470.
XML-файл текущего формата https://egrul.itsoft.ru/7734344833.xml XML-файл нового формата https://egrul.itsoft.ru/n7734344833.xml
Поскольку текущий приказ описывает текущий формат, то и данные отдаём в этом формате. Когда выйдет новый приказ, будем отдавать данные в новом формате.
Не забывайте, что ИНН может начинаться с 0
Везде проверяйте длину ИНН, КПП и дополняйте их 0 слева при необходимости. В XML-формате значения ИНН как в оригинале у налоговой. А вот в JSON уже в виде чисел. Операции с числами быстрее, чем со строками и на парсинге десятков миллионов сущностей я старался оптимизировать типы данных. Некоторые парсеры работали сутками.
Как организованы у нас данные
У ФНС в каждом XML-файле порядка 1000 организаций. Собственно я разложил данные по каждой организации в отдельный файл. Ведь у всех посредников, что я пробовал, данные представлены уже переработанные, а тут оригинальные в том виде как их налоговая отдаёт.
Плюс добавил данные туда из других реестров. Там есть блок с доходами и расходами, налогами, среднесписочном количестве сотрудников, применяемых налоговых системах, размером организации и получаемой господдержкой.
Всё в одном файле.
Без регистрации.
Не надо отправлять кучи запросов и платить за каждый.
Сопроводительные справочники
Не поверите, но в интернете проблема была найти в CSV справочники регионов и ОКВЭД. На сайте налоговой справочник регионов в формате архива ARJ нашёлся. Оба справочника потребовали небольшой доработки напильником. Ну бесит меня это г. Москва и г. Санкт-Петербург. Мы, конечно, знаем про то что в Питере пока так, но в справочнике регионов об этом можно и умолчать.
Справочник субъектов Российской Федерации в csv и в json (кодировка UTF-8).
Справочник налогов в csv.
Справочник форм поддержки в csv и видов поддержки в csv.
Массив единиц поддержки:
['', 'руб.', 'кв. м.', 'час', '%', 'ед.'];
Массив категорий предприятий:
['', 'микропредприятие', 'малое предприятие', 'среднее предприятие'];
Только этого мало — даёшь всё в CSV и SQL
Даём! Если вы хотите больше, то пишите, готовы раздавать в CSV или в виде архива базы данных MySQL и если надо выложить архивы налоговой.
Мы не выкладываем в открытый доступ, чтобы не словить Хабраэффект. Да и хотим познакомиться, пообщаться с коллегами, понять, в чём мы можем посотрудничать.
Особенно интересно было бы посотрудничать с теми, кто занимается анализом данных. StatSoft Russia, Fast Reports, вы ещё живы?
Как помочь проекту информационно
Вы можете помочь как нам, так и кому-то, кому нужны эти данные.
Отправить ссылку знакомым бухгалтерам, предпринимателям или просто в соцсети.
Отправить ссылку разработчикам ПО, которые пользуются платными сервисами.
Написать плагин под всякие 1С, Битриксы и пр.
Предложить идею по развитию, обработке новых реестров данных.
Помочь нам найти архивы ЕГРЮЛ до 2018 года. ФНС говорит, что они должны быть у нас в выгрузке, но их нет. А со временем, хотелось бы исторические данные тоже открыть.
Найти своих депутатов и написать им, что надо бы законодательную инициативу проявить.
Подпишитесь на наш блог на Хабре и будьте в курсе новых статей на тему данных.
Помочь участием и сотрудничеством
Давайте объединять усилия. Если вы платили ФНС по 300 000р. год, содержали программистов и серверы, то теперь вы можете сэкономить.
Помочь деньгами и заказом услуг
Если вам интересно стать спонсором проекта egrul.itsoft.ru — пишите, обсудим условия или просто пожертвуйте сколько не жалко на карту 5536 9141 0700 1889. Благодаря вам мы сможем заплатить ФНС 150 000р. и запустить реестр индивидуальных предпринимателей и другие реестры. Подать в суд на ФНС и получить данные за все прошлые годы. Ещё нам бы второй сервер добавить в проект и быстрые диски.
Если вам нужен выделенный сервер с постоянно обновляемыми данными, или у вас есть задача по обработке данных, то мы готовы помочь с реализацией.