Контракты по ИНН: история закупок компании и поставщика
Историю компании можно получить одним запросом: ИНН передаётся во вложенный фильтр customer или supplier. Важное правило, об которое спотыкаются почти все: заказчик ищется и в закупках, и в контрактах, а поставщик — только в контрактах. Причина в модели данных: у объявленной закупки победителя ещё нет.
Главное правило: где кого искать
| Роль компании | POST /tenders/query | POST /contracts/query | Поля фильтра |
|---|---|---|---|
| Заказчик | Да | Да | inn, ogrn, name |
| Поставщик | Нет | Да | inn, name |
Поставщик существует только у контракта. Передать supplier в поиск тендеров нельзя — запрос вернёт ошибку валидации, а не пустую выдачу. Это удобно: опечатку видно сразу, а не через час отладки пустых ответов.
История закупок заказчика
Что заказчик покупал раньше, как часто и на какие суммы — это его закупки и его контракты. Начинать удобнее с контрактов: у них есть итоговая цена и победитель.
curl -X POST https://public.fraim.ru/api/v2/contracts/query \
-H "Authorization: Bearer $FRAIM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer": {"inn": ["7700000000"]},
"price": {"from": 100000},
"limit": 100
}' Чтобы посмотреть, что заказчик объявляет прямо сейчас, тот же фильтр customer передаётся в POST https://public.fraim.ru/api/v2/tenders/query — вместе с status: ["active"].
История поставщика
Для поставщика источник один — контракты: именно там он появляется как сторона сделки.
curl -X POST https://public.fraim.ru/api/v2/contracts/query \
-H "Authorization: Bearer $FRAIM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"supplier": {"inn": ["7700000000"]},
"limit": 100
}' Выдача листается тем же курсором, что и любая другая лента: сохранённый next_cursor продолжает поток и отдаёт только новые контракты этой компании — то есть история превращается в мониторинг без дополнительной работы.
Скоринг контрагента
Типичная задача: перед сделкой понять, работала ли компания по госзаказу и как. По контрактам поставщика видно:
- Опыт — сколько контрактов и за какой период.
- Масштаб — типичная и максимальная сумма контракта.
- Специализация — что именно и для кого поставляет.
- Постоянство — повторяются ли заказчики.
Чего эти данные не заменяют: они говорят о публичной истории торгов, а не о финансовом состоянии и добросовестности. Юридически значимым источником остаётся первоисточник — ЕИС и площадка, а сведения о недобросовестных поставщиках ведутся отдельным реестром.
Анализ конкурентов
Та же механика, другой вопрос: с кем конкурент работает, на каких суммах и в каких регионах. Практичный порядок действий:
- Выгрузить контракты конкурента по
supplier.inn. - Собрать из них список заказчиков.
- По этим заказчикам запросить активные закупки через
customer.innиstatus: ["active"]. - Сохранить курсор последнего запроса — дальше новые закупки этих заказчиков будут приходить сами.
Результат — не разовый отчёт, а поддерживаемая выборка: новые процедуры интересных заказчиков попадают в ленту без повторной выгрузки.
Что учесть
- ИНН точнее названия. Поиск по
nameсоберёт однофамильцев: для скоринга это шум. - Незнакомое поле — ошибка. Во вложенных фильтрах
customerиsupplierлишний ключ вернёт422 extra_forbidden, а не будет проигнорирован. - Ответ 202 preparing — не ошибка. Идёт фоновый сбор: повторите тот же запрос с теми же аргументами.
- Дедупликация — по паре id + version. Контракт может измениться, и новая версия придёт снова.
- Стоимость — по объектам. Каждый контракт в выдаче — объект: от 0,75 ₽, цена зависит от суммы пополнения баланса.