Организация по ИНН или ОГРН
Находит компанию или ИП по ИНН или ОГРН. Возвращает все доступные сведения о компании, в отличие от метода suggest, который возвращает только базовые поля.
Как вызвать
Чтобы вызвать метод, зарегистрируйтесь и подтвердите почту.
Параметры запроса
Название | Тип | Обяз.? | По умолч. | Описание |
---|---|---|---|---|
query | string | ✓ | ИНН или ОГРН | |
count | number | 10 | Количество результатов (максимум — 300) | |
kpp | string | КПП для поиска по филиалам, см. пример | ||
branch_type | string | Головная организация ( MAIN ) или филиал ( BRANCH ), см. пример | ||
type | string | Юрлицо ( LEGAL ) или индивидуальный предприниматель ( INDIVIDUAL ), см. пример |
Головные организации и филиалы
Если у компании есть филиалы, запрос вернёт несколько объектов. Если нужна только головная организация, укажите дополнительный параметр branch_type :
Чтобы найти конкретный филиал, укажите дополнительный параметр kpp :
К сожалению, для 50% компаний налоговая служба пока не сообщает КПП филиалов. Такие филиалы с помощью данного метода найти не получится.
Юрлица и индивидуальные предприниматели
Чтобы искать только среди юрлиц, либо только среди индивидуальных предпринимателей, укажите параметр type :
Что в ответе
Примеры вызова
Ограничения
Длина запроса (параметр query ) — не более 300 символов.
Количество запросов в день — в соответствии с тарифным планом.
Максимальная частота запросов — 20 в секунду с одного IP-адреса.
Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.
Стоимость
Бесплатно до 10 тысяч запросов в день. Больше — в составе годовой подписки.
Описание API-ФНС
С помощью сервиса вы сможете автоматизировать заполнение реквизитов компаний, поиска компаний по различным параметрам, проявить должную осмотрительность, отслеживать изменения в параметрах ваших контрагентов.
Для выбора методов и ввода параметров можно использовать единый адрес входа: https://api-fns.ru/api
API состоит из нескольких программных интерфейсов:
Название метода | Команда | Описание |
---|---|---|
Поиск компаний | search | Позволяет получить список компаний, соответствующих указанному запросу |
Получение данных о компании | egr | Позволяет получить все актуальные и исторические данные из ЕГРЮЛ о юридическом лице (ЮЛ), или из ЕГРИП для индивидуального предпринимателя (ИП) |
Реквизиты группы компаний | multinfo | Позволяет получить базовые данные сразу о нескольких юридических лиц или индивидуальных предпринимателей |
Проверка группы компаний | multcheck | Позволяет провести базовую (упрощенную) проверку нескольких юридических лиц или индивидуальных предпринимателей |
Проверка контрагента (признаки недобросовестности) | check | Позволяет получать информацию о том, попало ли юридическое лицо в различные негативные реестры ФНС, отметки о недостоверных данных, признаки «массового» директора, учредителя, решений о ликвидации, реорганизации и прочие |
Проверка блокировок счета | nalogbi | Запрос полной информации о действующих решениях ФНС о приостановлении операций по счетам |
Проверка блокировок счета в виде файла | nalogbi_file | Вывод полной информации о действующих решениях ФНС о приостановлении операций по счетам в виде файла zip с подписью ФНС |
Отслеживание изменений параметров компании | changes | Позволяет получить те параметры компании, которые изменились, начиная с указанной даты |
Мониторинг изменений по списку компаний | mon | Формирование списка компаний для мониторинга и отслеживание изменений в ЕГРЮЛ/ЕГРИП по этому списку |
Выписка из ЕГРЮЛ | vyp | Позволяет получить заверенную выписку ФНС из ЕГРЮЛ или ЕГРИП |
Бухгалтерская отчетность | bo | Бухгалтерская отчетность организации по данным ФНС |
Бухгалтерская отчетность в виде файла | bo_file | Бухгалтерская отчетность организации в виде файла zip или pdf, заверенного подписью ФНС |
Узнать ИНН по паспортным данным | innfl | Возвращает ИНН физического лица на основании введенных паспортных данных |
Проверка паспорта на недействительность | mvdpass | Проверяет серию и номер паспорта по списку недействительных российских паспортов |
Статусы физического лица | fl_status | Проверяет статус самозанятого, является ли физическое лицо индивидуальным предпринимателем, банкротство физического лица, недействительность ИНН |
Лицензии ФСРАР | fsrar | Возвращает информацию о лицензиях по данным ФСРАР |
Статистика запросов (использования ключа) | stat | Возвращает информацию статистику о количестве использованных и доступных запросов по каждому из методов |
Поиск компаний
Позволяет получить список компаний по указанному запросу.
Используется запрос GET или POST.
Параметры запроса:
Параметр | Тип данных и пример | Описание |
---|---|---|
q | string q=Гордиенко Василий | Поисковая строка. Если указать q=any, то будут выведены все организации, соответствующие параметру filter |
page | integer page=2 | Страница поиска (поиск выдает только первые 100 найденных значений, если их больше используйте page для отображения следующей порции найденных значений) |
Необязательное поле
Возвращаемый документ (HTTP response) представляет собой структурированный документ JSON, содержащий список найденных организаций.
Поля возвращаемого документа:
Примеры запросов.
https://api-fns.ru/api/search?q=Борунов Алексей Владимирович&key=
Данные о компании
Позволяет получить все данные из ЕГРЮЛ или ЕГРИП (включая исторические) о компании.
Используется запрос GET или POST.
Параметры запроса:
Параметр | Тип данных и пример | Описание |
---|---|---|
req | string req=1026605606620 | ОГРН или ИНН искомой компании (юридического лица или ИП) |
key | string | Ваш ключ доступа к API |
Возвращаемый документ (HTTP response) представляет собой структурированный документ JSON, содержащий информацию из ЕГРЮЛ (ЕГРИП).
Поля возвращаемого документа:
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
«тильда»)
YYYY-MM-DD (начальная и конечная даты, разделенные знаком
API подсказок по организациям
Ищет компании и индивидуальных предпринимателей:
Что умеет
✔️ Ищет по комбинации ИНН, названия и адреса в одном запросе («7736050003 Газ» → «ПАО Газпром», «вавилова сбер» → «ПАО Сбербанк»).
✔️ Находит конкретный филиал, если указать в запросе КПП («сбербанк 540602001» → «Сибирский банк ПАО Сбербанк»).
✔️ Понимает слитное и раздельное написание («альфабанк» = «Альфа-Банк»).
✔️ Ищет по частичному совпадению в ИНН / ОГРН («77094209» → «ООО Акварель») и названиях («росне» → «ПАО «НК «Роснефть»).
✔️ Подсказывает только организации или только ИП, или и тех и других. Умеет искать только в действующих или ликвидированных компаниях. Может ограничить подсказки кодом ОКВЭД или конкретным регионом России.
✔️ Учитывает, где вы находитесь (в связке с методом город по IP-адресу).
✔️ Возвращает основные реквизиты компании из ЕГРЮЛ: краткое и полное название, ОПФ, адрес, ОГРН, ИНН, КПП, ОКВЭД, статус организации, ФИО и должность руководителя.
✔️ В связке с методом организация по ИНН возвращает вагон дополнительной информации: количество сотрудников, все коды ОКВЭД, сведения о налоговой, ПФР и ФСС, документы и лицензии, учредители и руководители, финансовые показатели, реестр малого и среднего бизнеса.
❌ Для 50% компаний налоговая служба пока не сообщает КПП филиалов. Такие филиалы можно найти по ИНН, городу и улице филиала. Например, «7724261610 москва мясницкая» → «Филиал ФГУП «Почта России» (г Москва)».
Как вызвать
Чтобы вызвать метод, зарегистрируйтесь и подтвердите почту.
Укажите при вызове:
Параметры запроса
Название | Тип | Обяз.? | По умолч. | Описание |
---|---|---|---|---|
query | string | ✓ | Текст запроса | |
count | number | 10 | Количество результатов (максимум — 20) | |
status | array [string] | Ограничение по статусу организации | ||
type | string | Ограничение по типу организации | ||
locations | array [object] | Ограничение по региону или городу | ||
locations_boost | array [object] | Приоритет города при ранжировании |
Что в ответе
Объект с массивом подсказок в поле suggestions :
Коды ответа на запрос
HTTP-код ответа | Описание |
---|---|
200 | Запрос успешно обработан |
400 | Некорректный запрос (невалидный JSON или XML) |
401 | В запросе отсутствует API-ключ |
403 | В запросе указан несуществующий API-ключ Или не подтверждена почта Или исчерпан дневной лимит по количеству запросов |
405 | Запрос сделан с методом, отличным от POST |
413 | Слишком большая длина запроса или слишком много условий |
429 | Слишком много запросов в секунду или новых соединений в минуту |
5xx | Произошла внутренняя ошибка сервиса |
Примеры вызова
Ограничения
Количество условий в параметрах locations и locations_boost — не более 10.
Длина запроса (параметр query ) — не более 300 символов.
Количество запросов в день — в соответствии с тарифным планом.
Максимальная частота запросов — 20 в секунду с одного IP-адреса.
Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.
Частые вопросы
По мере поступления обновлений от налоговой службы. Отставание от сайта налоговой (egrul.nalog.ru) не более 3 дней.
Почему не находится организация? Я точно знаю, она должна быть
Скорее всего, организация недавно зарегистрирована в ФНС, и мы еще не успели получить информацию о ней из налоговой. Отставание Дадаты от сайта налоговой (egrul.nalog.ru) не более 3 дней, так что организация скоро появится.
Подсказки не работают: ошибка 403 Forbidden (Feature SUGGESTIONS disabled for token)
Подсказки перестанут подсказывать ツ До начала нового дня, затем снова заработают.
10 000 запросов считаются суммарно по всем видам подсказок: адреса, ФИО, организации, банки, емейлы.
Стоимость
Бесплатно до 10 тысяч запросов в день. Больше — в составе годовой подписки.
Получить выписки из ЕГРЮЛ на сайте ФНС, используя python
На сайте ФНС по адресу egrul.nalog.ru/index.html есть замечательный сервис проверки контрагентов или своих собственных обществ.
Суть проверки сводится к подаче запроса в ЕГРЮЛ (единый реестр фактов детальности юридических лиц) и получении тут же, онлайн, выписки из реестра.
Работа с сервисом не вызывает каких-либо затруднений: внес в поле ОГРН, нажал кнопку “Найти” и нажал кнопку “Скачать” ниже. Все, выписка получена.
Как здесь может помочь автоматизация? Очень просто.
Если ваш холдинг состоит из n-количества юридических лиц, то даже такая работа как копипастинг ОГРН в строку поиска сервиса может надоесть.
Избавимся от рутины и автоматизируем процесс подачи-скачивания выписок из ЕГРЮЛ!
В нашем случае программа будет “забирать” по одному ОГРН из заранее подготовленной таблицы excel, вносить значение в строку сервиса, нажимать необходимые кнопки.
В идеале работа программы будет выглядеть так:
Для начала подготовим таблицу excel, куда внесем ОГРН, по которым мы будем работать, в столбик:
Количество ОГРН не имеет значения (можно хоть весь ЕГРЮЛ скачать), главное чтобы они все были в столбце А.
Назовем файл выпискиЕГРЮЛ.xlsx и сохраним в рабочей директории python.
Теперь создадим сам файл с программой – egrul.py.
Первые строки программы, как обычно, начинаются с импорта необходимых модулей, далее мы выбираем браузер (в моем случае Chrome) и “заходим” на сайт:
Далее мы запускаем цикл по всем ОГРН в таблице excel:
Здесь надо обратить внимание на значения x вначале цикла:
2- это начальная ячейка с ОГРН (стартовая), которая соответствует A2 в excel таблице. Конечная ячейка будет A186, хотя в цикле указана цифра 187.
Это надо иметь ввиду, чтобы все ОГРН были обработаны и последнее значение не потерялось.
Между подачами запросов в ЕГРЮЛ программа выдерживает паузу в 30 секунд. Это может показаться недопустимо долго и этот период захочется сократить. Это можно сделать, поменяв значение в строке time.sleep(30) на, например, time.sleep(10). Однако в данном случае можно попасть под санкции сервиса ФНС и получить капчу. Данную капчу можно обойти, но это тема отдельного поста. А в этой программе лучше оставить задержку между подачами запросов в 30 секунд и пойти спокойно пить чай, пока программа за вас работает.
Ссылка на старый вариант программы – здесь.
Ссылка на тестовую таблицу excel – здесь.
*Текст программы актуализирован на 09.2020г.
Deprecated! Автоматизация получения сведений из ЕГРЮЛ с помощью Freepascal
В своей работе (юридической) я готов автоматизировать всё, что только поддаётся этому. Но пока прокачанные нейросетями роботы из утопии Германа Грефа не появились и не отняли всю работу у рядовых юристов, рутина надолго останется нашим главным спутником. Автоматизация этой рутины — то, чем я периодически занимаюсь на протяжении последних лет, будь то многочисленные таблицы в excel с кучей формул, позволяющих быстро распечатать сотню однотипных документов-рассылок в word’е, ну или автоматически генерируемые отчеты. Но есть и такие вещи, которые простыми формулами и подстановками не сделаешь. Здесь на помощь приходит программирование, которым я увлекаюсь с детства, и так уж вышло, что началось это с delphi. Сейчас мне проще, чем в C# или python, осваивать которые начал недавно, сделать быстро какой-то проект в среде Lazarus, используя freepascal. И да, я на полном серьёзе считаю, что возможностей этой среды более, чем достаточно. Поэтому автоматизировать ЕГРЮЛ, как вы догадались, предстоит с помощью паскаля.
Юрист консалтинговой конторы, ведущей дела десятков юридических лиц, юрист-корпоративщик на вольных хлебах, да и любой другой юрист, сталкивающийся с обеспечением деятельности организаций — все они знают, как легко в голове смешиваются десятки и сотни разных наименований, номеров ИНН, ОГРН, как легко забыть, кто где руководитель, и когда у него подходит срок продления полномочий, нет ли проблем с долями в ООО и с оплатой его уставного капитала. Ну и необходимость сделать быстро какой-то документ, включающий в себя множество постоянно меняющихся реквизитов, влечет периодические ошибки и опечатки. Для автоматизации именно таких процессов мне было нужно решение с базой данных, позволяющее делать документы по шаблонам, вести различные реестры, отслеживать изменения и не пропускать какие-то сроки. Ну и одно из необходимых упрощений жизни — быстрое получение свежего файла со сведениями из ЕГРЮЛ с сайта Федеральной налоговой службы. Конечно, никто не говорит, что воспользоваться сайтом напрямую — это долго и трудно, но согласитесь, что нажать на одну кнопку, не выходя из приложения, гораздо веселее, и сделать это можно, не отрываясь от телефонного звонка (или чашки кофе).
Значит, в конкретном случае готовая функция должна возвращать pdf в виде файла (а лучше — потока), имея на входе ОГРН или ИНН лица. Но для универсализации и возможности дальнейшего расширения не будем пренебрегать всеми возможностями сайта и сделаем также функцию нечёткого поиска с возвращением набора данных, найденных по названию организации с учётом фильтра по региону или без такового. Попробуем описать интерфейсы этих функций:
Для того, чтобы понять, что за таинственный параметр Х и коллекцию чего вернёт вторая функция, разберемся, как именно сайт исполняет запрос.
1. На сайте размещена форма с полями ввода для идентификаторов поиска и проверки капчи:
2. Капча формируется с помощью заранее сгенерированного скрытого поля с именем captchaToken, которое использует ява-скрипт для генерации изображения капчи по данному токену.
3. После нажатия на кнопку «найти» на сервер отправляется POST-запрос, в результатах обработки которого возвращается JSON с массивом объектов. Этот JSON-ответ использует другой ява-скрипт, заполняющий таблицу, которую мы видим в результатах поиска.
Итак, первая загвоздка — это проверка капчи. Чтобы не нагружать наши методы, занимающиеся взаимодействием с сайтом, лишним функционалом, мы вынесем в отдельную функцию действия по обработке капчи. И в Х у нас будет параметр для callback-метода, который на входе имеет поток с изображением капчи, а на выходе — строку с распознанной капчей:
Функция, обрабатывающая капчу, может делать это как угодно: дать пользователю ввести её вручную, отправить изображение на платный сервер автоматического распознавания, самостоятельно распознать с помощью уникального ноу-хау алгоритма. Для простоты картины, и поскольку в моем случае потока капчи в промышленных масштабах не предвидится, выбираем первый вариант:
Второй вопрос — содержимое JSON-ответа сервера. Вот пример того, что в нём приходит:
Как видно, результат возвращает объект «query», который содержит исходные параметры поиска (для того, чтобы они остались в полях формы для повторного использования) и массив объектов «rows». Ссылка на файл pdf комбинируется ява-скриптом с помощью выражения: и значения ключа «Т» объекта. Время жизни сгенерированного файла pdf — несколько минут.
Две главные трудности, с которыми я столкнулся при создании http-запроса, это правильные значения заголовков и комбинирование строки с параметрами POST-запроса. Но простой анализ страницы с помощью встроенных средств браузера (в хроме вызываются по нажатию F12) дал всё необходимое. Вот пример заголовков, с которыми сервер дает правильный ответ вместо 400 Bad request:
А вот строка с параметрами:
Вооружившись этими исходными данными, приступим к реализации задачи. Я буду использовать следующие библиотеки для freepascal:
Встроенную библиотеку fcl-json — нужные модули: fpjson и fpjsonrtti — для максимального удобства обработки возвращаемых в JSON объектов.
Отдельные модули встроенной библиотеки fcl-xml — для некоторых функций потребуется работа с частями HTML как DOM-объектами, поэтому подключим модули SAX_HTML, DOM_HTML, DOM.
Опишем типы и классы объектов, которые в итоге получились:
В этот класс мы запакуем объекты, которые будут возвращаться в массиве rows в JSON-ответе сервера. Считывать мы будем их с помощью JSONToCollection, но для этого нужно сделать каждый объект элементом коллекции и все соотносимые свойства объявить как published. RTTI функции в freepascal (как и в delphi) получают доступ к наименованиям свойств только в том случае, когда они объявлены именно в такой области видимости. А функция JSONToCollection из модуля fpjsonrtti — как раз RTTI-функция, которая сопоставляет названия ключей из JSON объекта с названиями свойств класса.
Также в интерфейсе класса имеется функция GetPdfLink, которая возвращает ссылку для скачивания pdf-файла со сведениями из ЕГРЮЛ с помощью конкатенации web-адреса и значения свойства «Т».
Основной класс, реализующий объявленный выше интерфейс, будет таким:
Как видно, кроме реализации двух основных функций интерфейса все остальные свойства и методы класса будут скрытыми и нужны только для внутренней реализации. Их вообще можно было бы включить внутрь основных методов, но мы уже проходили уроки про дублирующийся код, наглядность и в целом рефакторинг.
С учетом инкапсуляции подготовительных действий основные методы вообще будут различаться только формированием строки параметров http-запроса и возвращаемым типом данных.
Здесь, как мы видим, метод также использует логический параметр isLegal, и если он не установлен в true, поиск идет по базе предпринимателей вместо юридических лиц.
Роль служебных методов сводится к следующему:
ProcessCaptcha — загружает первоначальную html страницу сервиса ФНС, ищет токен капчи, скачивает картинку, сгенерированную по этому токену, и перенаправляет её в callback-метод для распознавания капчи. В конце метод также устанавливает правильные заголовки для последующего POST-запроса.
GetCaptchaToken — загружает в DOM структуру все поля input со страницы, ищет скрытое поле с идентификатором capthcaToken и возвращает его значение.
GetLegalsList — с помощью RTTI функции JSONToCollection возвращает коллекцию объектов типа TEGRULItem, описанного выше.
Поскольку этой мой первый опыт работы с сетью в freepascal, я очень рад, что всё получилось именно так, как я и задумывал. В работоспособном виде библиотека была изготовлена менее, чем за один день (спасибо форумчанам с freepascal.ru, рассказавшим о synapse).
Как всегда буду рад любой конструктивной критике как по проекту, так и по реализации. Понимаю, что есть много факторов, которые еще можно учесть: задержка с ответом на http-запрос, в результате чего подвиснет приложение; неверные http-ответы и другие ситуации.
В дальнейшем я планирую подключить онлайн-библиотеку с адресной базой ФИАС и реализовать возможность генерировать заполненные шаблоны заявлений, которые в общем случае редактируются в Программе подготовки документов для государственной регистрации.
P.S. Извини, Сбербанк, за роль подопытного кролика и сотни раз скачанную выписку. Всё во имя науки конечно же.