REST API Dadata — это современный и удобный инструмент для работы с данными, который предоставляет доступ к различным видам информации, включая адреса компаний, почтовые индексы, кадастровые номера и другую полезную информацию.
Основные возможности REST API Dadata:
Работа с адресами компаний: получение информации о регионе, городе, улице, доме и квартире, почтовом индексе, часовом поясе и стоимости квартиры.
Геокодирование: определение координат по адресу и возврат почтового индекса, координат и другой информации об адресе.
Обратное геокодирование: определение адреса по координатам.
Определение города по IP-адресу.
Получение информации об адресе по кадастровому номеру, коду ФИАС или коду КЛАДР.
Определение кадастрового номера дома или квартиры.
Поиск ближайшего почтового отделения.
Работа с компаниями: поиск компаний по ИНН, КПП, ОГРН, учредителям, руководителям и другой информации.
Аффилированные компании: поиск организаций, связанных с другими компаниями по ИНН учредителей и руководителей.
Работа с электронной почтой: получение информации об организации, которой принадлежит email.
Самозанятые: поиск информации о самозанятых через API налоговой.
Работа с банками: поиск информации о банках по БИК, SWIFT, ИНН, рег. номеру, реквизитам, корр. счёту и статусу.
Работа с ФИО: разбор ФИО из строки, стандартизация, определение пола и склонение по падежам.
Работа с телефонами: проверка телефона по справочнику Россвязи, определение оператора, страны и города.
Работа с паспортами: проверка паспорта по реестру МВД, определение организации, выдавшей паспорт, и ИНН по паспорту.
Работа с email: проверка email на одноразовые адреса, классификация адресов на личные, корпоративные и «ролевые».
Чтобы начать работу с API-DADATA, зарегистрируйтесь и подтвердите почту.
Используем IP-адрес клиента, значение из параметра ip или заголовок X-Forwarded-For.
Возвращает детальную информацию о городе, в том числе почтовый индекс.
Просто подключить API «город по IP» , бесплатный лимит в 10 000 запросов в сутки.
pip install dadata
from dadata import Dadata
token = "Replace with Dadata API key"
secret = "Replace with Dadata secret key"
dadata = DadataAsync(token, secret)
data = await dadata.iplocate("46.226.227.20")
await dadata.close()
print(data)
{
"location": {
"value": "г Краснодар",
"unrestricted_value": "350000, Краснодарский край, г Краснодар",
"data": {
"postal_code": "350000",
"country": "Россия",
"country_iso_code": "RU",
"federal_district": "Южный",
"region_fias_id": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
"region_kladr_id": "2300000000000",
"region_iso_code": "RU-KDA",
"region_with_type": "Краснодарский край",
"region_type": "край",
"region_type_full": "край",
"region": "Краснодарский",
"area_fias_id": null,
"area_kladr_id": null,
"area_with_type": null,
"area_type": null,
"area_type_full": null,
"area": null,
"city_fias_id": "7dfa745e-aa19-4688-b121-b655c11e482f",
"city_kladr_id": "2300000100000",
"city_with_type": "г Краснодар",
"city_type": "г",
"city_type_full": "город",
"city": "Краснодар",
...
}
}
}
Если город не удалось определить, ответ будет таким:
{
"location": null
}
#Для получения ip адреса
await def get_ip(request: Request) -> str:
ip = request.forwarded.get("for", None)
if not ip:
ip = request.ip or request.remote_addr
return ip