ibiza
CPM · CTR …
/

Bid request в OpenRTB: структура запроса на ставку и пример

≈ 3 мин чтения · обновлено

Bid request — сообщение, которое биржа или SSP отправляет покупателям (DSP), когда у площадки появляется рекламный показ. В нем описано, где и в каком формате будет показ, на каком устройстве, кому, по какой минимальной цене и сколько времени есть на ответ. По этим данным DSP решает, ставить ли и сколько. Формат запроса задает протокол OpenRTB.

Структура bid request по OpenRTB

Пример запроса на баннер в мобильном приложении:

{
  "id": "f3b7c1d2-req",
  "at": 1,
  "tmax": 200,
  "cur": ["RUB"],
  "imp": [{
    "id": "1",
    "tagid": "home_banner_top",
    "instl": 0,
    "banner": { "w": 320, "h": 50, "pos": 1 },
    "bidfloor": 35.0,
    "bidfloorcur": "RUB",
    "secure": 1
  }],
  "app": {
    "id": "a-118",
    "bundle": "ru.example.taxi",
    "publisher": { "id": "pub-42" }
  },
  "device": {
    "os": "android", "osv": "14", "make": "Samsung", "model": "SM-A546E",
    "ifa": "…", "lmt": 0, "connectiontype": 6,
    "geo": { "country": "RUS", "city": "Kazan" }
  },
  "user": { "id": "u-ex-77" },
  "source": { "schain": { "complete": 1, "ver": "1.0", "nodes": [ … ] } }
}

Главные поля

Поле Зачем DSP
id связать ставку, выигрыш и показ
imp[].banner / video / native подобрать креатив подходящего формата
imp[].tagid конкретное место размещения, ставки по слотам
imp[].bidfloor, bidfloorcur минимальная цена в CPM
app.bundle или site.domain идентификатор приложения или сайта: таргетинг, блок-листы
device.ifa, lmt рекламный идентификатор и признак ограничения трекинга
device.geo, connectiontype гео и тип соединения (6 — 4G)
at тип аукциона: первая или вторая цена
tmax лимит времени на ответ, мс
source.schain цепочка посредников от площадки до DSP

Полный список объектов — в статье про OpenRTB.

Что DSP делает с запросом

  1. Проверяет базовые фильтры: формат, ОС, гео, блокировки площадки.
  2. Ищет устройство в сегментах аудитории и частотных счетчиках.
  3. Оценивает показ: вероятность клика или конверсии, ожидаемую цену.
  4. Отвечает ставкой (BidResponse) или HTTP 204, если ставить не будет.

Один запрос может содержать несколько imp — например, несколько слотов на экране. DSP вправе ставить на любые из них, каждая ставка ссылается на свой impid.

Bid request и ad request

Ad request — обращение SDK или тега к своему серверу: «дай рекламу». Bid request — то, во что сервер превращает это обращение, чтобы опросить покупателей. Одно обращение может породить много запросов: SSP рассылает его нескольким DSP, а иногда через несколько бирж, из-за чего один и тот же показ приходит покупателю дважды.

Что портит запрос

  • Пустые поля. Без app.bundle, гео или идентификатора покупатели не могут оценить показ — ставки ниже или их нет вовсе.
  • Флор без валюты. По спецификации bidfloorcur по умолчанию USD; если продавец имел в виду рубли и не указал валюту, флор окажется завышенным в десятки раз.
  • Неверный тип соединения или ОС. Ломает таргетинг покупателей и выглядит как подозрительный трафик.
  • Слишком много запросов без ставок. Если DSP отвечает на малую долю запросов, имеет смысл согласовать с биржей фильтрацию на ее стороне — это экономит трафик обеим сторонам.

Где теряются запросы на пути к показу — в статье «Воронка RTB».

Частые вопросы

Что такое bid response?

Ответ DSP на bid request — объект BidResponse со ставкой (seatbid.bid.price), разметкой креатива и URL уведомлений. Если DSP ставить не будет, она возвращает HTTP 204 без тела.

Сколько bid request получает DSP?

Зависит от подключенных бирж и согласованного лимита запросов в секунду (QPS). На одну ставку обычно приходятся десятки и сотни запросов: большинство не подходит под таргетинг ни одной кампании.

Есть ли в bid request персональные данные?

Запрос может содержать IP, рекламный идентификатор устройства и геокоординаты. Это обезличенные данные, но правила их использования задают законы и согласия пользователя.