Нередко сталкивался с запросами от специалистов по продажам, что нужен простой сервис для проверки профиля юридического лица по имени компании или по ИНН. Есть немало сервисов, которые позволяют реализовать эту задачу. Я же воспользовался сервисом dadata(.ru). Простота API и достаточно широкие возможности позволяют без труда сделать веб-сервис для получения карточки юридического лица.
Не для рекламы скажу, что в бесплатный тариф этого сервиса входит до 10 тыс. запросов в сутки (это много), но не все функции API вы можете вызывать с таким тарифом. В общем, подробности сами почитаете на сайте разработчика. Я же должен сказать, что для вызова API функций вам понадобится учетная запись, создать её несложно. После создания аккаунта у вас в личном кабинете будет создана автоматически пара: API-Key
, Secret Key
.
Прежде чем сразу прописывать параметры в код, я обычно отрабатываю паттерны запросов, а также получаю структуру JSON-объекта для дальнейшего описания схемы данных в коде (конечно, где это требуется). Для этого отлично подходит известный on-line веб-сервис Postman(.co).
Итак, давайте рассмотрим простую задачу получение имени компании по ИНН на базе dadata.
1) Описываем запрос в Postman.
Метод <GET>
URL: https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party?query=689&count=1
где <query> - запрашиваемый ИНН юридического лица, а <count> - количество компаний выдаваемых в ответе.
В блоке <Headers>
Authorization:Token <ваш_ключ>
Content-Type:application/json
2) В ответ на исполнение запроса вы получите положительный ответ (Status:200 OK). А дальше приготовьтесь, большая схема данных JSON, выдаваемых по запросу. Из наименования элементов поймете их содержимое. В целом, в официальной документации сервиса есть описание и примеров и описание данных
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"suggestions": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"value": {
"type": "string"
},
"unrestricted_value": {
"type": "string"
},
"data": {
"type": "object",
"properties": {
"kpp": {
"type": "string"
},
"capital": {
"type": "null"
},
"invalid": {
"type": "null"
},
"management": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"post": {
"type": "string"
},
"disqualified": {
"type": "null"
}
},
"required": [
"name",
"post",
"disqualified"
]
},
"founders": {
"type": "null"
},
"managers": {
"type": "null"
},
"predecessors": {
"type": "null"
},
"successors": {
"type": "null"
},
"branch_type": {
"type": "string"
},
"branch_count": {
"type": "integer"
},
"source": {
"type": "null"
},
"qc": {
"type": "null"
},
"hid": {
"type": "string"
},
"type": {
"type": "string"
},
"state": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"code": {
"type": "null"
},
"actuality_date": {
"type": "integer"
},
"registration_date": {
"type": "integer"
},
"liquidation_date": {
"type": "null"
}
},
"required": [
"status",
"code",
"actuality_date",
"registration_date",
"liquidation_date"
]
},
"opf": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"code": {
"type": "string"
},
"full": {
"type": "string"
},
"short": {
"type": "string"
}
},
"required": [
"type",
"code",
"full",
"short"
]
},
"name": {
"type": "object",
"properties": {
"full_with_opf": {
"type": "string"
},
"short_with_opf": {
"type": "string"
},
"latin": {
"type": "null"
},
"full": {
"type": "string"
},
"short": {
"type": "string"
}
},
"required": [
"full_with_opf",
"short_with_opf",
"latin",
"full",
"short"
]
},
"inn": {
"type": "string"
},
"ogrn": {
"type": "string"
},
"okpo": {
"type": "string"
},
"okato": {
"type": "string"
},
"oktmo": {
"type": "string"
},
"okogu": {
"type": "string"
},
"okfs": {
"type": "string"
},
"okved": {
"type": "string"
},
"okveds": {
"type": "null"
},
"authorities": {
"type": "null"
},
"documents": {
"type": "null"
},
"licenses": {
"type": "null"
},
"finance": {
"type": "object",
"properties": {
"tax_system": {
"type": "null"
},
"income": {
"type": "null"
},
"expense": {
"type": "null"
},
"revenue": {
"type": "null"
},
"debt": {
"type": "null"
},
"penalty": {
"type": "null"
},
"year": {
"type": "null"
}
},
"required": [
"tax_system",
"income",
"expense",
"revenue",
"debt",
"penalty",
"year"
]
},
"address": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"unrestricted_value": {
"type": "string"
},
"invalidity": {
"type": "null"
},
"data": {
"type": "object",
"properties": {
"postal_code": {
"type": "string"
},
"country": {
"type": "string"
},
"country_iso_code": {
"type": "string"
},
"federal_district": {
"type": "string"
},
"region_fias_id": {
"type": "string"
},
"region_kladr_id": {
"type": "string"
},
"region_iso_code": {
"type": "string"
},
"region_with_type": {
"type": "string"
},
"region_type": {
"type": "string"
},
"region_type_full": {
"type": "string"
},
"region": {
"type": "string"
},
"area_fias_id": {
"type": "null"
},
"area_kladr_id": {
"type": "null"
},
"area_with_type": {
"type": "null"
},
"area_type": {
"type": "null"
},
"area_type_full": {
"type": "null"
},
"area": {
"type": "null"
},
"city_fias_id": {
"type": "string"
},
"city_kladr_id": {
"type": "string"
},
"city_with_type": {
"type": "string"
},
"city_type": {
"type": "string"
},
"city_type_full": {
"type": "string"
},
"city": {
"type": "string"
},
"city_area": {
"type": "null"
},
"city_district_fias_id": {
"type": "null"
},
"city_district_kladr_id": {
"type": "null"
},
"city_district_with_type": {
"type": "string"
},
"city_district_type": {
"type": "string"
},
"city_district_type_full": {
"type": "string"
},
"city_district": {
"type": "string"
},
"settlement_fias_id": {
"type": "null"
},
"settlement_kladr_id": {
"type": "null"
},
"settlement_with_type": {
"type": "null"
},
"settlement_type": {
"type": "null"
},
"settlement_type_full": {
"type": "null"
},
"settlement": {
"type": "null"
},
"street_fias_id": {
"type": "string"
},
"street_kladr_id": {
"type": "string"
},
"street_with_type": {
"type": "string"
},
"street_type": {
"type": "string"
},
"street_type_full": {
"type": "string"
},
"street": {
"type": "string"
},
"stead_fias_id": {
"type": "null"
},
"stead_cadnum": {
"type": "null"
},
"stead_type": {
"type": "null"
},
"stead_type_full": {
"type": "null"
},
"stead": {
"type": "null"
},
"house_fias_id": {
"type": "string"
},
"house_kladr_id": {
"type": "string"
},
"house_cadnum": {
"type": "string"
},
"house_type": {
"type": "string"
},
"house_type_full": {
"type": "string"
},
"house": {
"type": "string"
},
"block_type": {
"type": "string"
},
"block_type_full": {
"type": "string"
},
"block": {
"type": "string"
},
"entrance": {
"type": "null"
},
"floor": {
"type": "null"
},
"flat_fias_id": {
"type": "null"
},
"flat_cadnum": {
"type": "null"
},
"flat_type": {
"type": "string"
},
"flat_type_full": {
"type": "string"
},
"flat": {
"type": "string"
},
"flat_area": {
"type": "string"
},
"square_meter_price": {
"type": "string"
},
"flat_price": {
"type": "null"
},
"room_fias_id": {
"type": "null"
},
"room_cadnum": {
"type": "null"
},
"room_type": {
"type": "null"
},
"room_type_full": {
"type": "null"
},
"room": {
"type": "null"
},
"postal_box": {
"type": "null"
},
"fias_id": {
"type": "string"
},
"fias_code": {
"type": "string"
},
"fias_level": {
"type": "string"
},
"fias_actuality_state": {
"type": "string"
},
"kladr_id": {
"type": "string"
},
"geoname_id": {
"type": "string"
},
"capital_marker": {
"type": "string"
},
"okato": {
"type": "string"
},
"oktmo": {
"type": "string"
},
"tax_office": {
"type": "string"
},
"tax_office_legal": {
"type": "string"
},
"timezone": {
"type": "string"
},
"geo_lat": {
"type": "string"
},
"geo_lon": {
"type": "string"
},
"beltway_hit": {
"type": "string"
},
"beltway_distance": {
"type": "null"
},
"metro": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"line": {
"type": "string"
},
"distance": {
"type": "number"
}
},
"required": [
"name",
"line",
"distance"
]
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"line": {
"type": "string"
},
"distance": {
"type": "number"
}
},
"required": [
"name",
"line",
"distance"
]
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"line": {
"type": "string"
},
"distance": {
"type": "number"
}
},
"required": [
"name",
"line",
"distance"
]
}
]
},
"divisions": {
"type": "null"
},
"qc_geo": {
"type": "string"
},
"qc_complete": {
"type": "null"
},
"qc_house": {
"type": "null"
},
"history_values": {
"type": "null"
},
"unparsed_parts": {
"type": "null"
},
"source": {
"type": "string"
},
"qc": {
"type": "string"
}
},
"required": [
"postal_code",
"country",
"country_iso_code",
"federal_district",
"region_fias_id",
"region_kladr_id",
"region_iso_code",
"region_with_type",
"region_type",
"region_type_full",
"region",
"area_fias_id",
"area_kladr_id",
"area_with_type",
"area_type",
"area_type_full",
"area",
"city_fias_id",
"city_kladr_id",
"city_with_type",
"city_type",
"city_type_full",
"city",
"city_area",
"city_district_fias_id",
"city_district_kladr_id",
"city_district_with_type",
"city_district_type",
"city_district_type_full",
"city_district",
"settlement_fias_id",
"settlement_kladr_id",
"settlement_with_type",
"settlement_type",
"settlement_type_full",
"settlement",
"street_fias_id",
"street_kladr_id",
"street_with_type",
"street_type",
"street_type_full",
"street",
"stead_fias_id",
"stead_cadnum",
"stead_type",
"stead_type_full",
"stead",
"house_fias_id",
"house_kladr_id",
"house_cadnum",
"house_type",
"house_type_full",
"house",
"block_type",
"block_type_full",
"block",
"entrance",
"floor",
"flat_fias_id",
"flat_cadnum",
"flat_type",
"flat_type_full",
"flat",
"flat_area",
"square_meter_price",
"flat_price",
"room_fias_id",
"room_cadnum",
"room_type",
"room_type_full",
"room",
"postal_box",
"fias_id",
"fias_code",
"fias_level",
"fias_actuality_state",
"kladr_id",
"geoname_id",
"capital_marker",
"okato",
"oktmo",
"tax_office",
"tax_office_legal",
"timezone",
"geo_lat",
"geo_lon",
"beltway_hit",
"beltway_distance",
"metro",
"divisions",
"qc_geo",
"qc_complete",
"qc_house",
"history_values",
"unparsed_parts",
"source",
"qc"
]
}
},
"required": [
"value",
"unrestricted_value",
"invalidity",
"data"
]
},
"phones": {
"type": "null"
},
"emails": {
"type": "null"
},
"ogrn_date": {
"type": "integer"
},
"okved_type": {
"type": "string"
},
"employee_count": {
"type": "null"
}
},
"required": [
"kpp",
"capital",
"invalid",
"management",
"founders",
"managers",
"predecessors",
"successors",
"branch_type",
"branch_count",
"source",
"qc",
"hid",
"type",
"state",
"opf",
"name",
"inn",
"ogrn",
"okpo",
"okato",
"oktmo",
"okogu",
"okfs",
"okved",
"okveds",
"authorities",
"documents",
"licenses",
"finance",
"address",
"phones",
"emails",
"ogrn_date",
"okved_type",
"employee_count"
]
}
},
"required": [
"value",
"unrestricted_value",
"data"
]
}
]
}
},
"required": [
"suggestions"
]
}
3) Остаётся определиться с дальнейшей интеграцией. В моем случае был построен робот, который по ИНН с веб-приложения возвращал массив только необходимых мне данных о компании, в связи с чем схема была упрощена в отличие от полной приведенной.