Коммерческие тендеры и закупки по API
Коммерческие закупки, они же тендеры B2B, нельзя выгрузить из ЕИС: государственные реестры их не содержат — публиковать там свои торги частная компания не обязана. Получить их программно можно только у площадок, которые их проводят, или через агрегатор. Fraim.ru отдаёт коммерческие торги тем же запросом, что и госзакупки: один POST с фильтром purchase_types: [3].
Что считается коммерческой закупкой
Коммерческая закупка — это торги частной компании, которая не подпадает под 44-ФЗ и 223-ФЗ и закупает по собственным правилам. Она сама определяет требования к участникам, сроки подачи и порядок выбора победителя, и не обязана публиковать процедуру в государственном реестре.
В классификации Fraim.ru это purchase_types: [3] — отдельный тип наравне с остальными четырьмя:
| Код | Тип закупки | Есть в ЕИС |
|---|---|---|
| 1 | Закупка по 44-ФЗ | Да |
| 2 | Закупка по 223-ФЗ | Да |
| 3 | Коммерческая закупка | Нет |
| 4 | Малая закупка | Частично |
| 5 | Закупка по 615-ПП (капремонт) | Да |
Почему их нет в ЕИС и что из этого следует
ЕИС ведёт реестры закупок, публикация которых предписана законом. Торги частной компании под это не подпадают: обязанности раскрывать их в государственной системе нет, поэтому в zakupki.gov.ru их и не будет — сколько ни улучшай парсер.
Практический вывод: парсер ЕИС коммерческие торги не найдёт в принципе. Это не вопрос качества парсера или глубины обхода — этих данных нет в источнике. Единственный способ — собирать их с самих площадок.
Отсюда и второе следствие — конкуренция за такие лоты ниже. Участник, который следит только за ЕИС, эти процедуры просто не видит.
Тендеры B2B: где они проходят
«Тендеры B2B» и «коммерческие закупки» — одно и то же: закупка одной компании у другой по собственным правилам. Проходят они не в ЕИС, а на коммерческих площадках, и каждая ведёт свой реестр процедур.
Fraim.ru собирает их со всех источников сразу, поэтому отдельно подключаться к каждой площадке не нужно. Если же нужны не все, а конкретные — сузьте выдачу фильтром platforms:
- B2B-Center, Фабрикант, ТЭК-Торг, Лот-Онлайн, Портал Закупай — коммерческие процедуры;
- Сбербанк-АСТ, РТС-тендер, Росэлторг, ЭТП ГПБ, ZakazRF — государственные и корпоративные, часть из них ведёт и коммерческие секции.
Коды площадок — внутренние id Fraim.ru, а не ОКАТО и не что-либо общепринятое: искать нужный по названию в справочнике — /refs.json — и передавать массивом целых чисел, platforms: [3].
Как получить коммерческие тендеры по API
Поиск — это POST https://public.fraim.ru/api/v2/tenders/query с JSON-телом. Отдельного маршрута под коммерческие закупки нет: тип задаётся фильтром, всё остальное работает одинаково для любых закупок.
curl -X POST https://public.fraim.ru/api/v2/tenders/query \
-H "Authorization: Bearer $FRAIM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purchase_types": [3],
"keywords": ["поставка кабеля", "электромонтаж"],
"exception_keywords": ["демонтаж"],
"regions": [1, 2],
"price": {"from": 500000},
"status": ["active"],
"limit": 50
}' В ответе — массив results с карточками закупок и next_cursor. Карточка приходит целиком: отдельный запрос за ней нужен только ради позиций, документов и лотов.
Фильтр: что можно сузить
Сужать фильтр выгодно и технически, и по деньгам: платите вы за доставленные объекты, поэтому лишние закупки в выдаче — это лишние списания.
keywordsиexception_keywords— ключевые и минус-слова.regions— коды регионов (Москва — 1, Санкт-Петербург — 34). Полный справочник — /refs.json.platforms— конкретные площадки, если нужны не все.price— вилка НМЦК:{"from": 500000, "to": 5000000}.publish_date,start_date,end_date— диапазоны дат.customer— заказчик поinn,ogrnилиname.status— например, только["active"].
И regions, и platforms принимают только массив целых чисел — нумерация внутренняя, названием строкой сервер их не примет: 422 validation_error. Нужный id ищите в справочнике перед запросом, а не подбором.
Мониторинг новых коммерческих закупок
Отдельного механизма подписки настраивать не нужно: любой поисковый запрос неявно создаёт живую подписку. Сервер возвращает next_cursor, и запрос с этим курсором отдаёт только новые и изменившиеся закупки по тому же фильтру.
curl -X POST https://public.fraim.ru/api/v2/tenders/query \
-H "Authorization: Bearer $FRAIM_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cursor": "cur_eyJ…", "limit": 50}' Пустой results с непустым next_cursor — это не конец ленты, а «сейчас новых закупок нет». Курсор сохраняйте и продолжайте с него; для мониторинга достаточно хранить только последний.
Частота опроса ограничена лимитом в 100 запросов в минуту на аккаунт (и отдельным лимитом на всплески — 20 запросов в секунду по IP). Для ленты этого более чем достаточно: опрос раз в минуту тратит один запрос.
Сколько это стоит
Коммерческие закупки тарифицируются как любые другие объекты: от 0,75 ₽ за доставленный тендер или контракт. Абонентской платы и годовых лицензий нет, отдельного «коммерческого пакета» — тоже. Цена объекта зависит от суммы разового пополнения баланса.
- Списание — за первую доставку конкретной версии объекта, а не за запрос.
- Повторная выдача той же версии бесплатна: ретраи и продолжение ленты ничего не стоят.
- Купленные объекты не сгорают — в отличие от пакетов, которые нужно израсходовать за период.
- Скачивание документов закупки входит в цену объекта, наценки за них нет.
Проверить всё это можно бесплатно: тестовый токен fraim_test_… выдаётся при регистрации и работает на демо-данных, не списывая баланс.