architect/_archive/2025-11-09-marketplace-old/marketplace-mvp/modules/egrul/README.md

Модуль ЕГРЮЛ

Получение официальных данных компаний по ИНН из базы ЕГРЮЛ/ЕГРИП ФНС.

📊 Источники данных

✅ Dadata API (рекомендуется)

Официальный лицензированный доступ к ЕГРЮЛ ФНС

❌ ФНС напрямую (не работает)

С 2024 года ФНС закрыл публичный API.
Прямое подключение к egrul.nalog.ru невозможно без обхода защиты.


🚀 Быстрый старт

Шаг 1: Регистрация на Dadata

  1. Перейти: https://dadata.ru
  2. Нажать "Регистрация"
  3. Подтвердить email
  4. Скопировать API ключ из личного кабинета

Шаг 2: Настройка в проекте

Добавьте API ключ в файл .env:

# .env
DADATA_API_KEY=ваш_api_ключ_здесь

Шаг 3: Использование

from modules.egrul import EgrulProvider

# Автоматически берет ключ из .env
provider = EgrulProvider()

# Получить данные по ИНН
company = provider.get_company_by_inn("7707083893")

if company['found']:
    print(f"Название: {company['name_short']}")
    print(f"Адрес: {company['address']}")
    print(f"ОГРН: {company['ogrn']}")
else:
    print(f"Не найдено: {company['message']}")

📖 API Reference

EgrulProvider (рекомендуется)

Универсальный провайдер с автоматическим выбором источника.

provider = EgrulProvider()

# Получить данные компании
company = provider.get_company_by_inn("7707083893")

# Проверить доступность источников
status = provider.test_connection()
print(status)
# {'dadata': {'available': True, 'message': '✅ ....'}}

DadataAPI (прямое использование)

from modules.egrul import DadataAPI

api = DadataAPI(api_key="your_key")

# Поиск по ИНН
company = api.get_company_by_inn("7707083893")

# Поиск по названию
results = api.suggest_company("Яндекс", count=5)

# Тест подключения
status = api.test_connection()

📋 Формат данных

Метод get_company_by_inn() возвращает словарь:

{
    "found": True,                      # Найдено ли
    "inn": "7707083893",                # ИНН
    "kpp": "770701001",                 # КПП
    "ogrn": "1027700132195",            # ОГРН
    "name_full": "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"ЯНДЕКС\"",
    "name_short": "ООО \"ЯНДЕКС\"",     # Краткое название
    "entity_type": "ООО",               # Тип: ООО, ИП, АО, ПАО
    "director": "Волож Аркадий",        # Руководитель
    "address": "119021, Москва...",     # Юридический адрес
    "phone": None,                      # Телефон (не возвращается)
    "email": None,                      # Email (не возвращается)
    "status": "active",                 # active, liquidated, liquidating
    "registration_date": "2000-01-01",  # Дата регистрации
    "okved": "62.01",                   # ОКВЭД
    "employees_count": None,            # Кол-во сотрудников
    "source": "Dadata"                  # Источник данных
}

Если не найдено:

{
    "found": False,
    "inn": "1234567890",
    "message": "Компания с таким ИНН не найдена в ЕГРЮЛ"
}

⚙️ Настройка без .env

Если не хотите использовать .env, передайте ключ напрямую:

provider = EgrulProvider(dadata_api_key="ваш_ключ")
company = provider.get_company_by_inn("7707083893")

❓ FAQ

Нужна ли регистрация на Dadata?

Да, но она бесплатная и занимает 2 минуты.

Сколько запросов доступно бесплатно?

10,000 запросов в день на бесплатном тарифе.
Для малого бизнеса этого хватит на годы.

Можно ли работать без API ключа?

Нет. ФНС закрыл публичный доступ к данным.
Dadata - единственный легальный способ получить данные из ЕГРЮЛ.

Данные актуальные?

Да, Dadata обновляет базу каждый день напрямую из ФНС.


🔒 Безопасность

ВАЖНО: Не коммитьте API ключ в git!

Используйте .env файл (он в .gitignore):

# .env (НЕ коммитить!)
DADATA_API_KEY=ваш_секретный_ключ

📚 Документация


Версия