Выгрузка из ЕИС: открытые данные, XML и парсинг zakupki.gov.ru
Забрать данные из ЕИС можно тремя способами: скачивать официальные открытые данные и XML-выгрузки, написать собственный парсер сайта или взять готовый агрегирующий API. Публичного поискового REST API у самой ЕИС нет. Ниже — что каждый способ реально даёт, где ломается и как считать стоимость владения.
Три способа получить данные ЕИС
| Способ | Что даёт | Чего не даёт |
|---|---|---|
| Открытые данные и XML-выгрузки ЕИС | Официальные данные из первоисточника, большие объёмы за период | Оперативности и удобного поиска: это файлы, а не сервис запросов |
| Свой парсер сайта | Полный контроль, любые поля со страниц, ноль расходов на данные | Устойчивости: ломается при изменении разметки. Коммерческих торгов и части площадок |
| Готовый API | Нормализованные объекты из всех источников сразу, поиск и живые ленты | Бесплатности и статуса первоисточника: юридически значима публикация в ЕИС |
Открытые данные и XML-выгрузки ЕИС
ЕИС публикует данные в разделе открытых данных и в виде файловых XML-выгрузок. Это первоисточник — плюс, которого нет ни у одного агрегатора: данные официальные.
Ограничения тоже структурные, а не временные:
- Это файлы, а не сервис запросов: чтобы найти закупки по ключевым словам, выгрузку сначала нужно скачать, разобрать и сложить в свою базу с индексами.
- Схемы XML объёмны и меняются вместе с законодательством — разбор нужно сопровождать.
- Оперативность ограничена периодичностью публикации: «увидеть закупку в момент появления» так не получится.
- Коммерческих торгов в них нет по той же причине, что и на сайте: ЕИС их не ведёт.
Свой парсер сайта
Самый очевидный путь: обходить страницы поиска и карточки закупок и вынимать нужные поля. Работает, и первая версия под конкретную задачу пишется быстро.
Что обычно недооценивают:
- Поддержка, а не разработка. Разметка и структура страниц меняются, и каждое изменение — это остановившийся поток данных до тех пор, пока кто-то не починит разбор.
- Одной ЕИС мало. Значительная часть процедур живёт на площадках, и каждая площадка — отдельный парсер со своими правилами.
- Документы. Самая трудоёмкая часть: у площадок разные правила выдачи файлов, часть отдаёт их только зарегистрированным участникам.
- Изменения закупки. Тендер живёт: меняются сроки, документация, статус. Нужен не разовый обход, а отслеживание версий и понимание, что изменилось.
- Нагрузка. Агрессивный обход мешает работе сайта, поэтому скорость сбора приходится ограничивать самому.
Когда свой парсер — правильный выбор: нужна одна узкая выборка, объёмы небольшие, требования к оперативности мягкие, и есть кому его чинить. Это честный сценарий, и в нём готовый API не нужен.
Готовый агрегирующий API
Третий путь — отдать сбор и нормализацию наружу и работать с готовыми объектами. У Fraim.ru это один POST-запрос: 400+ источников, включая ЕИС, ключевые ЭТП и коммерческие площадки, приходят в одном формате.
curl -X POST https://public.fraim.ru/api/v2/tenders/query \
-H "Authorization: Bearer $FRAIM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["ремонт кровли"],
"exception_keywords": ["ямочный"],
"regions": [1],
"price": {"from": 100000, "to": 5000000},
"status": ["active"],
"limit": 50
}' Отслеживание изменений встроено: сохранённый next_cursor продолжает поток событий по тому же фильтру и отдаёт только новое — без повторного обхода всего массива.
Чего API не заменяет: статуса первоисточника. Юридически значимой остаётся публикация в ЕИС и на площадке. Для решений, где нужна официальная ссылка, агрегатор — способ найти закупку, а не заменить документ.
Что выбрать под задачу
- Разовое исследование рынка. Выгрузки ЕИС: данные официальные, оперативность не нужна.
- Одна узкая выборка, своя команда разработки. Свой парсер — при готовности его сопровождать.
- Продукт для клиентов, CRM, скоринг, мониторинг. API: нужны надёжность потока, все источники и отслеживание изменений.
- Нужны коммерческие торги. Только API или прямая работа с площадками — в ЕИС их нет.
Как считать стоимость владения
Сравнивать «бесплатный парсер» с платным API по цене данных некорректно: у парсера стоимость не в данных, а в людях. Считайте три статьи:
- Разработка — разовая, обычно её и оценивают.
- Поддержка — постоянная: починки после изменений, новые площадки, разбор документов.
- Цена простоя — что стоит день без данных, когда парсер сломался.
У API первая статья близка к нулю, вторая переходит к поставщику, третья закрывается поддержкой. Взамен появляется плата за объём: от 0,75 ₽ за доставленный объект, без абонплаты и лицензий. Повторная выдача той же версии бесплатна, поэтому ретраи и продолжение ленты ничего не стоят.
Точку безубыточности считайте на своих объёмах — и сравнивайте не с ценой данных, а со стоимостью месяца работы разработчика на поддержке парсеров. Вход при этом стоит 0 ₽: ни лицензии, ни минимального платежа нет, а цену под конкретный объём считают продажи.