Об API

Общее описание логики работы API ФраймЗакупки: баланс, лимиты, получение тендеров и особенности использования.

Баланс и списания

За что списывается баланс

API работает по модели "pay-per-tender" — вы платите только за новые тендеры, которые раньше не получали. За каждый новый тендер списывается 1 единица баланса.

Важно

Повторное получение того же тендера не списывает баланс повторно. Система запоминает, какие тендеры вы уже получали.

Как это работает на практике

  • Первый запрос: Запрашиваете тендеры по фильтру → получаете 20 тендеров → списывается 20 единиц баланса (если все новые)
  • Повторный запрос через час: Запрашиваете те же тендеры → получаете те же 20 тендеров → баланс не списывается
  • Запрос через день: Появились 5 новых тендеров → получаете 25 тендеров → списывается только 5 единиц за новые

Отслеживание в ответе API

В ответе на запрос тендеров вы видите:

JSON
{
  "new_tenders_count": 5,
  "remaining_balance": 995,
  "items": [...]
}
  • new_tenders_count — сколько новых тендеров в этом запросе (столько и списалось с баланса)
  • remaining_balance — ваш баланс после этого запроса
  • is_new — флаг у каждого тендера, показывающий новый он или вы уже получали его раньше

Суточные лимиты

Для защиты от случайных ошибок и злоупотреблений действуют суточные лимиты на количество получаемых объектов. Лимиты сбрасываются каждый день в 00:00 по московскому времени.

Лимиты по типам

Тип объекта Базовый лимит Описание
Тендеры 1000/день Количество новых тендеров, которые можно получить за сутки
Контракты 100/день Количество контрактов (если доступны по лицензии)
Протоколы 50/день Количество протоколов (если доступны по лицензии)

Как проверить текущий лимит

Запросите GET /balance — в ответе придет информация о лимитах:

JSON
{
  "limits": {
    "tenders": {
      "current": 45,
      "limit": 1000,
      "remaining": 955,
      "reset_at": "2026-03-21T00:00:00"
    }
  }
}
При превышении лимита

Если вы исчерпали суточный лимит, API вернёт ошибку 429 Too Many Requests. Попробуйте снова после 00:00 МСК или обратитесь в поддержку для увеличения лимита.

Фильтры и автопоиск

Как получить тендеры

Тендеры выдаются только по фильтрам, которые созданы в веб-интерфейсе zakupki.fraim.ru. Вы не можете запросить "все тендеры" — только те, что попадают под ваши настроенные фильтры.

Что такое автопоиск

У каждого фильтра есть настройка "Автопоиск". Только фильтры с включенным автопоиском собирают тендеры в фоне и дают доступ к ним через API.

Проверка фильтра

В ответе GET /filters поле autosearch: true означает, что фильтр активен и по нему собираются тендеры. Если autosearch: false — включите автопоиск в веб-интерфейсе.

Алгоритм работы

  1. Создаёте фильтр в веб-интерфейсе zakupki.fraim.ru
  2. Включаете "Автопоиск" для этого фильтра
  3. Система начинает собирать подходящие тендеры в фоновом режиме
  4. Через API запрашиваете тендеры по ID фильтра
  5. Получаете только те тендеры, которые уже собраны

Избранное

API позволяет управлять списком избранных тендеров — добавлять и удалять тендеры, а также получать список избранного.

Особенности

  • Избранное привязано к пользователю API токена
  • Один и тот же тендер можно добавить в избранное только один раз
  • Добавление/удаление из избранного не влияет на баланс
  • Получение деталей тендера из избранного списывает баланс, если вы ранее не получали этот тендер
  • Отслеживание изменений: добавьте тендер в избранное и периодически проверяйте его детали — так вы увидите изменения статуса, цены, сроков

Сценарий использования избранного для отслеживания изменений

  1. Находите интересный тендер через фильтры
  2. Добавляете его в избранное POST /favorites/{tender_id}
  3. Раз в день запрашиваете GET /favorites/updates — получаете только тендеры с изменениями
  4. Запрашиваете детали обновлённых тендеров GET /tenders/{id}
  5. Обнаруживаете изменения: сроки продлены, цена изменилась, статус обновлён, документы добавлены
Как работает /favorites/updates

Endpoint возвращает только те избранные тендеры, у которых update_date > favorited_at — то есть тендер обновился после того, как вы добавили его в избранное. Так вы не пропустите важные изменения.

Рекомендуемый сценарий использования

Для регулярного мониторинга

  1. Настройте фильтры в веб-интерфейсе с включенным автопоиском
  2. Раз в час/день запрашивайте тендеры по фильтру
  3. Сохраняйте new_tenders_count и remaining_balance
  4. Обрабатывайте только тендеры с is_new: true
  5. При необходимости добавляйте интересные тендеры в избранное

Для получения деталей

  1. Получаете список тендеров по фильтру
  2. Для интересных тендеров запрашиваете детали по GET /tenders/{id}
  3. Если много позиций — используйте GET /tenders/{id}/positions с пагинацией
  4. Документы доступны в деталях тендера

Важные ограничения

Сервер-сервер только

API предназначен только для сервер-сервер интеграций. Запросы из браузеров блокируются (нет CORS). Используйте API с вашего backend-сервера.

Токен — секрет

API токен показывается только один раз при создании. Сохраните его в надёжном месте (например, в переменных окружения). Если токен утрачен — создайте новый, старый удалите.

Время жизни токена

API токены не имеют срока действия. Токен действует до тех пор, пока вы его не удалите. Рекомендуем периодически проверять список активных токенов и удалять неиспользуемые.