Después de que tu aplicación procese la solicitud de oferta de Google, debe compilar y enviar una respuesta. En esta guía, se explica cómo codificar tu aplicación para compilar la respuesta.
Crea un mensaje de BidResponse de Protobuf
Authorized Buyers envía el BidRequest
como el cuerpo del mensaje de un POST
HTTP. Si tu extremo de ofertas está configurado para usar el formato Protobuf, tu aplicación debe enviar una respuesta con el encabezado Content-Type
establecido en application/octet-stream
y un cuerpo de mensaje que consta de un búfer de protocolo serializado. El búfer de protocolo es un mensaje BidResponse
, como se define en openrtb.proto
. Tu aplicación debe mostrar un BidResponse
que se pueda analizar en respuesta a cada BidRequest
. Los tiempos de espera y las respuestas que no se pueden analizar se consideran errores, y Google regula a los ofertantes con tasas de error altas.
Si no quieres ofertar por una impresión, debes mostrar una respuesta HTTP 204 vacía. Puedes obtener openrtb.proto
de la página de
datos de referencia.
ID de la creatividad
Tu BidResponse
especifica una creatividad a través del campo BidResponse.seatbid.bid.crid
(límite de 64 bytes). Incluso las creatividades similares deben tener valores únicos para este campo si difieren en alguna característica notable, incluidos, sin limitaciones, el tamaño, la URL declarada, los atributos de creatividad y los tipos de proveedores. En otras palabras, debes asignar IDs de creatividad diferentes a cualquier par de anuncios que cumplan con las siguientes condiciones:
- Se ven o se comportan de manera diferente.
- Renderiza en diferentes imágenes.
- Renderización por diferentes medios (por ejemplo, un anuncio consta de una imagen, mientras que el otro es un video)
A medida que diseñes tu aplicación, debes decidirte por una forma sistemática de generar identificadores que tenga sentido para los tipos de creatividades que planeas enviar.
Atributos del anuncio
Google recomienda declarar atributos de creatividad para describir las características de tu anuncio y su segmentación con una combinación de BidResponse.seatbid.bid.apis
y BidResponse.seatbid.bid.attr
, o la extensión BidResponse.seatbid.bid.ext.attribute
. A continuación, se describe cómo puedes declarar atributos:
VPAID
EstableceBidResponse.seatbid.bid.apis
comoVPAID_1
oVPAID_2
. Para el formato JSON, se puede establecer en1
o2
, respectivamente.MRAID
EstableceBidResponse.seatbid.bid.apis
enMRAID_1
o3
para el formato JSON.SIZELESS
EstableceBidResponse.seatbid.bid.attr
enRESPONSIVE
o18
para el formato JSON.PLAYABLE
Para indicar esto, configuraBidResponse.seatbid.bid.attr
comoUSER_INTERACTIVE
o13
para el formato JSON.
Consulta el recurso de creatividades para obtener una explicación sobre cómo obtener comentarios sobre las propiedades detectadas de tus creatividades.
Campos de Open Bidding
Las respuestas de ofertas que envían los ofertantes de intercambios y redes que participan en Open Bidding son similares a las de Authorized Buyers que participan en las ofertas en tiempo real estándar. Los clientes de Open Bidding pueden especificar una pequeña cantidad de campos adicionales, y algunos campos existentes pueden tener usos alternativos. Entre estos, se incluyen los siguientes:
OpenRTB | Authorized Buyers | Detalles |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
Es el ID del acuerdo del espacio de nombres del mercado que está asociado con esta oferta y se informa a los publicadores. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
Es el tipo de acuerdo que se informa a los publicadores, lo que afecta la forma en que se trata el acuerdo en la subasta. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
Es un token que se usa para identificar la información del comprador externo final si el intercambio como oferta abierta es un intermediario. Se obtiene del comprador externo y se debe pasar a Google sin modificaciones en la respuesta de la oferta. |
Recomendaciones
- Habilita las conexiones HTTPS persistentes (también conocidas como "keep-alive" o "reutilización de la conexión") en tus servidores. Establece el tiempo de espera en 10 segundos como mínimo. Los valores más altos son beneficiosos en muchos casos. Google lo verifica durante las pruebas de latencia iniciales de tu aplicación, ya que los compradores autorizados envían solicitudes a una velocidad alta y deben evitar la sobrecarga de latencia de establecer una conexión TCP independiente para cada solicitud.
Incluye la URL de seguimiento de impresiones opcional para hacer un seguimiento de cuándo se renderiza la impresión en lugar de cuándo gana el ofertante. Debido a la disminución entre las victorias y las renderizaciones, esto genera estadísticas de seguimiento más precisas.
- Mantén tu código del ofertante libre de dependencias en campos obsoletos, que pueden hacer que tus ofertas fallen con errores.
- Incluye
BidResponse.seatbid.bid.w
yBidResponse.seatbid.bid.h
en tuBidResponse
. UnBidResponse
para una solicitud que incluye varios tamaños de anuncios debe incluir estos campos o se descartará de la subasta. - Limita el tamaño de tu respuesta a menos de 8,000. Las respuestas muy grandes pueden aumentar la latencia de la red y provocar tiempos de espera.
- Sigue los lineamientos para las ofertas en el inventario de iOS que requieren atribución de SKAdNetwork.
Ejemplo de respuesta de oferta
En los siguientes ejemplos, se representan muestras legibles por humanos de las solicitudes de Protobuf y JSON.
Muéstrame el ejemplo
Respuesta serializadaid: "9u09jhHJXT2fbaDZ9V1x66" seatbid { bid { id: "37Td8Gbw1Lr8161bA4B" impid: "1" price: 0.075 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" adomain: "google.com" crid: "test_creative_id_156129" cat: "IAB22" w: 320 h: 50 language: "es" slotinpod: SLOT_POSITION_POD_ANY cattax: IAB_CONTENT_1_0 [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" exchange_deal_type: OPEN_AUCTION event_notification_token { payload: "token" } billing_id: 61560909063 } } seat: "4778:9251:780612" } cur: "USD"
Muéstrame el ejemplo
{ "id": "9u09jhHJXT2fbaDZ9V1x66", "seatbid": [ { "bid": [ { "id": "37Td8Gbw1Lr8161bA4B", "impid": "1", "price": 0.075, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com", "google.com" ], "crid": "test_creative_id_156129", "cat": [ "IAB22" ], "w": 320, "h": 50, "language": "es", "slotinpod": 0, "cattax": 1, "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456" ], "exchange_deal_type": 0, "event_notification_token": { "payload": "token" }, "billing_id": "61560909063" } } ], "seat": "4778:9251:780612" } ], "cur": "USD" }
Muéstrame el ejemplo
Respuesta serializadaad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 226722 billing_id: 78614473201 currency: "USD" } click_through_url: "google.com" attribute: 105 buyer_creative_id: "test_creative_id_827359" width: 336 height: 280 impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" }
Importante: Los mensajes de Protobuf que se muestran en los ejemplos se representan aquí como texto legible por humanos. Sin embargo, no es así como se envían los mensajes por cable. Cuando se usa el formato Protobuf de Google o OpenRTB, solo se aceptan mensajes BidResponse serializados.
Puedes crear y serializar un mensaje BidResponse
con el siguiente código C++:
BidResponse bid_response; // fill in bid response with bid information string post_response; if (bid_response.SerializeToString(&post_response)) { // respond to the POST with post_response as the content } else { // return an error to the POST }
Especifica la creatividad
Tu respuesta a la oferta especifica la creatividad que se publicará si tu oferta gana. Tu oferta debe incluir uno de los formatos de anuncios admitidos (AMP, video o nativo). En este ejemplo, especificamos la creatividad con el campo html_snippet
.
Como alternativa, puedes especificar tu creatividad con uno de los siguientes campos, según el formato del anuncio:
- Anuncio renderizado por el SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- Video
BidResponse.seatbid.bid.adm
- Nativo
BidResponse.seatbid.bid.adm_native
Especifica un anuncio alojado en tus propios servidores con un fragmento HTML en el campo BidResponse.seatbid.bid.adm
. El fragmento se incluye en un iframe insertado en la página web, lo que hace que el anuncio se recupere y renderice cuando se carga la página. Debes crear el fragmento de código HTML para que el anuncio (banner o intersticial) se renderice correctamente dentro de un iframe y en un tamaño adecuado para el espacio de anuncios por el que estás ofertando.
Además, el tamaño del anuncio declarado en la respuesta de oferta debe coincidir exactamente con una de las combinaciones de tamaños en la solicitud de oferta en los siguientes casos:
- Un anuncio es un banner normal (no de video, nativo ni intersticial).
- El ofertante declaró el tamaño en la respuesta de oferta. La declaración de tamaño es obligatoria cuando hay más de un tamaño en la solicitud.
- Se hace una excepción para los anuncios intersticiales. En el caso de los anuncios intersticiales, el ancho debe ser de al menos el 50% del ancho de la pantalla y la altura de al menos el 40% de la altura de la pantalla.
Puedes especificar una creatividad de fragmento HTML con cualquier código HTML válido que se renderice correctamente, pero ten en cuenta las restricciones para especificar el campo crid
en la sección Crea un mensaje BidResponse.
Un uso de esto es colocar información adicional en los argumentos de las URLs que se recuperan de tus servidores como parte de la renderización del anuncio. Esto te permite pasar datos arbitrarios sobre la impresión a tus propios servidores.
La mayoría de las políticas para los fragmentos de HTML que se muestran en las respuestas a las ofertas son las mismas que para los anuncios de terceros. Consulta los Lineamientos del Programa de Compradores Autorizados, los Requisitos para la publicación de anuncios de terceros y Cómo declarar URLs de clic en los anuncios para obtener más información.
Especifica macros
Las macros son texto con formato incorporado en algunos campos de respuesta de ofertas que contienen URLs que se reemplazan por un valor relevante en el momento de la publicación del anuncio. Por ejemplo, si tu oferta ganadora incluía la macro AUCTION_PRICE
en la creatividad del fragmento de código HTML incluida con tu oferta, la macro se reemplazaría por un valor que podrías desencriptar para determinar el importe que pagaste por la impresión en la subasta.
Puedes incluir macros en los siguientes campos:
-
BidResponse.seatbid.bid.adm
Las macros son compatibles con los formatos de fragmento HTML, nativo, URL de video y VAST de video en formato XML.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
Solo se admiten las macros
WINNING_PRICE
yWINNING_PRICE_ESC
específicas de Google para las creatividades de AMP. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
Úsalo en lugar de
BidResponse.seatbid.bid.burl
si necesitas más de una URL de facturación.
A modo de ejemplo, puedes incluir una macro como parte de un fragmento HTML si incorporas ${MACRO}
dentro de la URL que se usa para recuperar la creatividad, donde MACRO
es una de las macros compatibles que se describen en la especificación de OpenRTB.
Macros de RTB de Google
Google admite macros adicionales además de las que se encuentran en las especificaciones de OpenRTB. Estas tienen un formato diferente y aparecerían como %%MACRO%%
si se incorporaran en una URL. En la siguiente tabla, se describen estas macros:
Macro | Descripción |
---|---|
ADVERTISING_IDENTIFIER |
Permite que los compradores reciban el IDFA de iOS o el ID de publicidad de Android en la renderización de impresiones. Consulta Cómo desencriptar los identificadores del anunciante para obtener más información. |
CACHEBUSTER |
Es una representación de cadena de un número entero aleatorio de cuatro bytes sin firmar. |
CLICK_URL_UNESC |
La URL de clic sin escape del anuncio. En el fragmento, una versión escapada de la URL de clic de terceros debe seguir directamente a la macro. Por ejemplo, si la URL de clic de terceros es <a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> En el momento de la publicación del anuncio, se expande de la siguiente manera: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> La URL primero registrará el clic con Google y, luego, redireccionará al usuario a la URL de clic de terceros. |
CLICK_URL_ESC |
La URL de clic escapada del anuncio. Usa esto en lugar de Por ejemplo, se podría usar el siguiente código en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> En el momento de la publicación del anuncio, se expande de la siguiente manera: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Esto registrará el clic con Puedes agregar una URL con doble escape después de |
CLICK_URL_ESC_ESC |
Es la URL con escape doble del anuncio. Usa esto en lugar de Por ejemplo, se podría usar el siguiente código en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> En el momento de la publicación del anuncio, se expande de la siguiente manera: <a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a> |
SCHEME |
Se expande a http: si la solicitud de oferta no requiere SSL o a https: si la solicitud de oferta requiere SSL. |
SITE |
El dominio con codificación de URL de la URL del contenido o el ID anónimo para el inventario anónimo |
SITE_URL |
Obsoleta. Se reemplazó por la macro SITE, que proporciona una funcionalidad idéntica. |
TZ_OFFSET |
El desfase de zona horaria. |
VERIFICATION |
Los diferentes valores para la producción y cuándo se analiza la creatividad en la canalización de verificación El formato es:
Por ejemplo, si una creatividad incluye |
WINNING_PRICE |
Es el costo de impresión codificado (es decir, CPI en lugar de CPM) en micros de la moneda de la cuenta. Por ejemplo, un CPM ganador de USD 5 corresponde a 5,000,000 de micros de CPM o 5,000 de micros de CPI. El valor decodificado de Para analizar esta macro, deberás implementar una aplicación que descrypte las confirmaciones de precios. Consulta la página Cómo desencriptar las confirmaciones de precios para obtener más información. |
WINNING_PRICE_ESC |
WINNING_PRICE con codificación de URL |
Google requiere que uses la macro CLICK_URL_UNESC
o CLICK_URL_ESC
dentro de la creatividad del anuncio publicado por terceros. Google usa las macros CLICK_URL
para el seguimiento de clics.
El escape de URL en macros usa el siguiente esquema:
- El carácter de espacio se reemplaza por un signo más (
+
). - Los caracteres alfanuméricos (0-9, a-z, A-Z) y los caracteres del conjunto !()*,-./:_~ no se modifican.
- Todos los demás caracteres se reemplazan por
%XX
, dondeXX
es el número hexadecimal que representa el carácter.
Restricciones y requisitos para publicadores
La solicitud de oferta incluye información sobre los tipos de restricciones y requisitos que los publicadores imponen a las creatividades en la subasta.
BidRequest.bcat
- Puedes comparar las categorías bloqueadas que especifica este campo con las que se detectan en las creatividades que enviaste con el campo
detectedCategories
de la API de Real-time Bidding.
- Puedes comparar las categorías bloqueadas que especifica este campo con las que se detectan en las creatividades que enviaste con el campo
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- En la práctica, siempre se establecerá como
true
porque Google requiere compatibilidad con SSL para todas las creatividades.
- En la práctica, siempre se establecerá como
BidRequest.imp.{audio/banner/native/video}
BidRequest.imp.{audio/banner/native/video}.api
BidRequest.imp.{audio/banner/native/video}.battr
BidRequest.imp.{audio/banner/video}.mimes
Nunca realices ofertas con un anuncio que contenga una función restringida. En el caso de las funciones permitidas, como el tipo de proveedor, muestra un anuncio solo si su tipo de proveedor está en la lista allowed_vendor_type
en BidRequest
. Solo se deben incluir en tu oferta los formatos de anuncios especificados en la solicitud de oferta a través de la propagación de campos como BidRequest.imp.banner
. Consulta los comentarios de estos campos en la definición del búfer de protocolo BidRequest
para obtener más detalles.
Si se muestra un anuncio en BidResponse
, debes configurar con precisión los campos BidResponse.seatbid.bid.attr
, BidResponse.seatbid.bid.cat
y BidResponse.seatbid.bid.adomain
o BidResponse.seatbid.bid.adm_native.link.url
en BidResponse
. Si un anuncio tiene varios valores aplicables para estos campos, debes incluir todos los valores. Consulta los comentarios de estos campos en la definición del búfer de protocolo BidResponse
para obtener más detalles.
Se descartan las respuestas que no tienen estos campos configurados.
Open Measurement
Open Measurement te permite especificar proveedores externos que proporcionan servicios de medición y verificación independientes para los anuncios que se publican en entornos de apps para dispositivos móviles.
Los formatos de anuncios admitidos incluyen anuncios de video, de banner y intersticiales. Para obtener más información sobre cómo usar Open Measurement en una respuesta de oferta que contiene estos formatos, consulta el artículo del Centro de ayuda del SDK de Open Measurement.
Ejemplos de respuestas de ofertas
En las siguientes secciones, se muestran respuestas de ofertas de muestra para diferentes tipos de anuncios.
Banner de la app
Muéstrame el ejemplo
Respuesta serializadaid: "8L85Di7e9374c3jriwo2W0" seatbid { bid { id: "0L7hx7783rjD1hT81FH" impid: "1" price: 0.4000000059604645 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_192654" w: 300 h: 50 burl: "https://test.com/imp?id=123456" [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" billing_id: 70614819650 skadn { version: "3.0" network: "Y8HK1z22" campaign: "72382716" itunesitem: "953637916" sourceapp: "com.google.testapp" fidelities { fidelity: VIEW_THROUGH_ADS nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415" timestamp: "1730359683568" signature: "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE" } fidelities { fidelity: STOREKIT_RENDERED_ADS nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415" timestamp: "1730359683568" signature: "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY" } skadn_opts { always_open_appstore: true } } app_promotion_type: INSTALLS } } seat: "4095:5416:758587" } cur: "USD" [com.google.doubleclick.bid_response] { processing_time_ms: 16 }
Muéstrame el ejemplo
{ "id": "8L85Di7e9374c3jriwo2W0", "seatbid": [ { "bid": [ { "id": "0L7hx7783rjD1hT81FH", "impid": "1", "price": 0.4000000059604645, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_192654", "w": 300, "h": 50, "burl": "https://test.com/imp?id=123456", "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456" ], "billing_id": "70614819650", "skadn": { "version": "3.0", "network": "Y8HK1z22", "campaign": "72382716", "itunesitem": "953637916", "sourceapp": "com.google.testapp", "fidelities": [ { "fidelity": 0, "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415", "timestamp": "1730359683568", "signature": "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE" }, { "fidelity": 1, "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415", "timestamp": "1730359683568", "signature": "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY" } ], "skadn_opts": { "always_open_appstore": 1 } }, "app_promotion_type": 1 } } ], "seat": "4095:5416:758587" } ], "cur": "USD", "ext": { "processing_time_ms": 16 } }
Muéstrame el ejemplo
Respuesta serializadaad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 44095 billing_id: 99718422589 } click_through_url: "google.com" attribute: 47 attribute: 50 category: 7 buyer_creative_id: "test_creative_id_997551" advertiser_name: "Google" width: 300 height: 250 impression_tracking_url: "https://test.com/imp?id=123456" skadn { version: "4.0" network: "DofiF4X5" itunesitem: "448730563" sourceapp: "195751234" fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5" timestamp: 1728803273481 signature: "0KXE97ri9xnW9M10NDg64r014MsN7SO5R11N29oe8h8Cuao3K477i9dFH61bKny28iA6337A6EK6T3fgR9p9EJK12qvaY96E" } fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5" timestamp: 1728803273481 signature: "EF1Vj82st371O79029Q9067AL00972U3NqNG9u295r8B4681c12Se2jk34XSR8404681c9WGa9a69779CQ87o9T81Y85198C" } source_identifier: 1 } advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 13
Anuncio intersticial de aplicación
Muéstrame el ejemplo
Respuesta serializadaid: "6700Z3L2o0zSw9g8IqmiQ5" seatbid { bid { id: "0UBHDN63xQ8hj1F8184" impid: "1" price: 0.016728 adid: "test_creative_id_179418" adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_179418" cat: "IAB13-7" w: 300 h: 600 burl: "https://test.com/imp?id=123456" [com.google.doubleclick.bid] { billing_id: 14443955188 dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } seat: "2054:4176:757161" group: false } bidid: "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q" cur: "USD"
Muéstrame el ejemplo
{ "id": "6700Z3L2o0zSw9g8IqmiQ5", "seatbid": [ { "bid": [ { "id": "0UBHDN63xQ8hj1F8184", "impid": "1", "price": 0.016728, "adid": "test_creative_id_179418", "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_179418", "cat": [ "IAB13-7" ], "w": 300, "h": 600, "burl": "https://test.com/imp?id=123456", "ext": { "billing_id": "14443955188", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } } } ], "seat": "2054:4176:757161", "group": 0 } ], "bidid": "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q", "cur": "USD" }
Muéstrame el ejemplo
Respuesta serializadaad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 80117 min_cpm_micros: 0 billing_id: 12608068331 deal_id: 0 } click_through_url: "google.com" attribute: 47 buyer_creative_id: "test_creative_id_266407" advertiser_name: "Google" width: 756 height: 384 impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" dsa_transparency { buyer_render: true } } processing_time_ms: 11
Anuncio intersticial de video en la aplicación
Muéstrame el ejemplo
Respuesta serializadaid: "79N7F1708654i75q3k69j1" seatbid { bid { id: "1gR655162hOsH9q3X6R" impid: "1" price: 2.3833 adid: "test_creative_id_648299" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_648299" attr: VIDEO_IN_BANNER_AUTO_PLAY w: 1920 h: 1080 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } billing_id: 11004606416 skadn { version: "4.0" network: "O5O88B57" itunesitem: "509167749" nonce: "" sourceapp: "com.google.testapp" timestamp: "OMITTED" signature: "OMITTED" fidelities { fidelity: VIEW_THROUGH_ADS nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b" timestamp: "1730409097616" signature: "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc" } fidelities { fidelity: STOREKIT_RENDERED_ADS nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b" timestamp: "1730409097616" signature: "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd" } sourceidentifier: "1" } app_promotion_type: INSTALLS } } seat: "1061:9160:833989" } bidid: "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp" cur: "USD"
Muéstrame el ejemplo
{ "id": "79N7F1708654i75q3k69j1", "seatbid": [ { "bid": [ { "id": "1gR655162hOsH9q3X6R", "impid": "1", "price": 2.3833, "adid": "test_creative_id_648299", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_648299", "attr": [ 6 ], "w": 1920, "h": 1080, "ext": { "event_notification_token": { "payload": "token" }, "billing_id": "11004606416", "skadn": { "version": "4.0", "network": "O5O88B57", "itunesitem": "509167749", "nonce": "", "sourceapp": "com.google.testapp", "timestamp": "OMITTED", "signature": "OMITTED", "fidelities": [ { "fidelity": 0, "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b", "timestamp": "1730409097616", "signature": "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc" }, { "fidelity": 1, "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b", "timestamp": "1730409097616", "signature": "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd" } ], "sourceidentifier": "1" }, "app_promotion_type": 1 } } ], "seat": "1061:9160:833989" } ], "bidid": "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp", "cur": "USD" }
Muéstrame el ejemplo
Respuesta serializadaad { adslot { id: 1 max_cpm_micros: 2454000 billing_id: 95400492935 deal_id: 1 } click_through_url: "google.com" attribute: 22 attribute: 105 buyer_creative_id: "test_creative_id_716344" width: 0 height: 0 video_vast_xml: "OMITTED_VAST_XML" event_notification_token: "token" skadn { version: "4.0" network: "113tdmXM" itunesitem: "460184775" sourceapp: "751592940" fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9" timestamp: 1728932156118 signature: "7m3PDLV778PZ741T2I3561kkCW3UjIp5p63989cP311iiZ2445v20HP5ymfD8ThYO7437h22075h4h9O21S8A08U1kw3qis2" } fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9" timestamp: 1728932156118 signature: "28X90AX01Z762a3W92186a40Eb4J8ekACsYFo55J8vD445f5pcA80MH45753Iy887596gK8ax0s55ndC23eg0V7P862yS240" } source_identifier: 1 } advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 51
App nativa
Muéstrame el ejemplo
Respuesta serializadaid: "96Z599PGNvp7Mr99138Fm0" seatbid { bid { id: "NQb32Ge7Rtt84wFn2p8" impid: "1" price: 0.153584 adid: "test_creative_id_272596" adomain: "google.com" crid: "test_creative_id_272596" cat: "IAB13-7" burl: "https://test.com/imp?id=123456" adm_native { ver: "1.2" assets { id: 1 required: true title { text: "Luxury Mars Cruises" } } assets { id: 2 required: true data { value: "Visit the planet in a luxury spaceship." } } assets { id: 3 required: false data { value: "Book today" } } assets { id: 4 required: true data { value: "Galactic Luxury Cruises" } } assets { id: 5 required: true img { url: "https://native.test.com/image?id=123456" w: 1200 h: 627 } } link { url: "https://www.google.com" } eventtrackers { event: IMPRESSION method: IMG url: "https://test.com/event?id=123456" } privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED" } [com.google.doubleclick.bid] { ad_choices_destination_url: "https://test.com/preferences" billing_id: 29846056590 dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } bid { id: "4vwb23qm6iqU6w6G978" impid: "1" price: 0.153584 adid: "test_creative_id_272596" adomain: "google.com" crid: "test_creative_id_272596" cat: "IAB21" burl: "https://test.com/imp?id=123456" adm_native { ver: "1.2" assets { id: 1 required: true title { text: "Luxury Mars Cruises" } } assets { id: 2 required: true data { value: "Visit the planet in a luxury spaceship." } } assets { id: 3 required: false data { value: "Book today" } } assets { id: 4 required: true data { value: "Galactic Luxury Cruises" } } assets { id: 5 required: true img { url: "https://native.test.com/image?id=123456" w: 1200 h: 627 } } link { url: "https://www.google.com" } eventtrackers { event: IMPRESSION method: IMG url: "https://test.com/event?id=123456" } privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED" } [com.google.doubleclick.bid] { ad_choices_destination_url: "https://test.com/preferences" dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } seat: "4528:1161:591635" group: false } bidid: "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC" cur: "USD"
Muéstrame el ejemplo
{ "id": "96Z599PGNvp7Mr99138Fm0", "seatbid": [ { "bid": [ { "id": "NQb32Ge7Rtt84wFn2p8", "impid": "1", "price": 0.153584, "adid": "test_creative_id_272596", "adomain": [ "google.com" ], "crid": "test_creative_id_272596", "cat": [ "IAB13-7" ], "burl": "https://test.com/imp?id=123456", "ext": { "ad_choices_destination_url": "https://test.com/preferences", "billing_id": "29846056590", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } }, "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}" }, { "id": "4vwb23qm6iqU6w6G978", "impid": "1", "price": 0.153584, "adid": "test_creative_id_272596", "adomain": [ "google.com" ], "crid": "test_creative_id_272596", "cat": [ "IAB21" ], "burl": "https://test.com/imp?id=123456", "ext": { "ad_choices_destination_url": "https://test.com/preferences", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } }, "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}" } ], "seat": "4528:1161:591635", "group": 0 } ], "bidid": "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC", "cur": "USD" }
Muéstrame el ejemplo
Respuesta serializadaad { adslot { id: 1 max_cpm_micros: 158000 billing_id: 41106584355 deal_id: 1 } click_through_url: "google.com" attribute: 70 buyer_creative_id: "test_creative_id_251451" advertiser_name: "Google" native_ad { headline: "Luxury Mars Cruises" body: "Visit the planet in a luxury spaceship." call_to_action: "Book today" advertiser: "Galactic Luxury Cruises" image { url: "https://native.test.com/image?id=123456" width: 1200 height: 222 } app_icon { url: "https://native.test.com/icon?id=123456" width: 512 height: 512 } star_rating: 4.300000190734863 click_link_url: "https://www.google.com" } impression_tracking_url: "https://test.com/imp?id=123456" impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" skadn { version: "4.0" network: "l6x39K4z" itunesitem: "731305960" sourceapp: "627009739" fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "9216faff-74a9-4b35-badc-66878c35f67c" timestamp: 1728975919221 signature: "b0USXkmg02Q3v6p301kYOHG36CCOWWdEo52RHRttB9t8PTNi79qL17E4D6h7UeUSuq479oTK13G2Ev34MJlU86C5vY1SMVw2" } fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "9216faff-74a9-4b35-badc-66878c35f67c" timestamp: 1728975919221 signature: "4Cf4NH6239z9f3wa8j6420Z7H0UISYxyxN5720444dkq6457I5FY0Jg8bk1xge2P8YgiDp74l2738136v2g1A8D50331IRm0" } source_identifier: 1 } click_tracking_urls: "https://google.com/rtb/click?imp_id=55d2112c-4947-4da5-bc37-b79ebf4577dd" advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 63
Video web
Muéstrame el ejemplo
Respuesta serializadaid: "b2F6m05a9d83V7I35iw415" seatbid { bid { id: "Ob7259K5679O36pMt00" impid: "1" price: 1.52 adid: "test_creative_id_262797" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_262797" exp: 3600 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } billing_id: 47460168025 } } bid { id: "0890di791A75n9R13jM" impid: "1" price: 1.2 adid: "test_creative_id_262797" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_262797" exp: 3600 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } } } seat: "2121:7826:598388" } cur: "USD"
Muéstrame el ejemplo
{ "id": "b2F6m05a9d83V7I35iw415", "seatbid": [ { "bid": [ { "id": "Ob7259K5679O36pMt00", "impid": "1", "price": 1.52, "adid": "test_creative_id_262797", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_262797", "exp": 3600, "ext": { "event_notification_token": { "payload": "token" }, "billing_id": "47460168025" } }, { "id": "0890di791A75n9R13jM", "impid": "1", "price": 1.2, "adid": "test_creative_id_262797", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_262797", "exp": 3600, "ext": { "event_notification_token": { "payload": "token" } } } ], "seat": "2121:7826:598388" } ], "cur": "USD" }
Muéstrame el ejemplo
Respuesta serializadafad { adslot { id: 1 max_cpm_micros: 68340760 min_cpm_micros: 0 billing_id: 75752641104 deal_id: 0 } click_through_url: "google.com" vendor_type: 145 attribute: 47 attribute: 8 video_url: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" buyer_creative_id: "test_creative_id_877383" advertiser_name: "Google" event_notification_token: "token" dsa_transparency { buyer_render: true } } processing_time_ms: 17
Banner de la Web móvil para ofertantes de intercambio
Muéstrame el ejemplo
Respuesta serializadaid: "l30Zu42070Man1Z5u751yG" seatbid { bid { id: "4X6uu65F9J3m467C571" impid: "1" price: 0.17 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_941528" w: 320 h: 50 [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" impression_tracking_url: "https://test.com/impression?id=123456" event_notification_token { payload: "token" } billing_id: 50962964480 } } seat: "7632:7504:809671" } bidid: "II638Xkf-6432F06d-VGu8-27B4407D136w" [com.google.doubleclick.bid_response] { processing_time_ms: 70 }
Muéstrame el ejemplo
{ "id": "l30Zu42070Man1Z5u751yG", "seatbid": [ { "bid": [ { "id": "4X6uu65F9J3m467C571", "impid": "1", "price": 0.17, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_941528", "w": 320, "h": 50, "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456", "https://test.com/impression?id=123456" ], "event_notification_token": { "payload": "token" }, "billing_id": "50962964480" } } ], "seat": "7632:7504:809671" } ], "bidid": "II638Xkf-6432F06d-VGu8-27B4407D136w", "ext": { "processing_time_ms": 70 } }