애플리케이션이 Google의 입찰 요청을 처리한 후 응답을 빌드하고 전송해야 합니다. 이 가이드에서는 응답을 빌드하도록 애플리케이션을 코딩하는 방법을 설명합니다.
Protobuf BidResponse 메시지 만들기
Authorized Buyers는 BidRequest
를 HTTP POST
의 메시지 본문으로 전송합니다. 입찰 엔드포인트가 Protobuf 형식을 사용하도록 구성된 경우 애플리케이션은 Content-Type
헤더가 application/octet-stream
로 설정된 응답과 직렬화된 프로토콜 버퍼로 구성된 메시지 본문을 전송해야 합니다. 프로토콜 버퍼는 openrtb.proto
에 정의된 BidResponse
메시지입니다. 애플리케이션은 모든 BidRequest
에 대한 응답으로 파싱 가능한 BidResponse
를 반환해야 합니다. 제한 시간 및 파싱할 수 없는 응답은 오류로 간주되며 Google은 오류율이 높은 입찰자를 제한합니다.
노출에 입찰하지 않으려면 빈 HTTP 204 응답을 반환해야 합니다. 참조 데이터 페이지에서 openrtb.proto
를 가져올 수 있습니다.
광고 소재 ID
BidResponse
는 BidResponse.seatbid.bid.crid
필드를 통해 광고 소재를 지정합니다 (64바이트 제한). 크기, 선언된 URL, 광고 소재 속성, 공급업체 유형을 포함하되 이에 국한되지 않는 눈에 띄는 특성이 다른 유사한 광고 소재도 이 필드에 고유한 값을 지정해야 합니다. 즉, 다음과 같은 두 광고에는 서로 다른 광고 소재 ID를 지정해야 합니다.
- 모양이나 행동이 다릅니다.
- 다른 이미지로 렌더링합니다.
- 다른 수단으로 렌더링합니다 (예: 한 광고는 이미지로 구성되고 다른 광고는 동영상으로 구성됨).
애플리케이션을 설계할 때는 제출할 광고 유형에 적합한 식별자를 생성하는 체계적인 방법을 결정해야 합니다.
광고 속성
광고의 특성과 타겟팅을 설명하는 광고 소재 속성을 선언하려면 BidResponse.seatbid.bid.apis
및 BidResponse.seatbid.bid.attr
조합 또는 BidResponse.seatbid.bid.ext.attribute
확장 프로그램을 사용하는 것이 좋습니다. 다음은 속성을 선언하는 방법을 설명합니다.
VPAID
BidResponse.seatbid.bid.apis
를VPAID_1
또는VPAID_2
로 설정합니다. JSON 형식의 경우 각각1
또는2
로 설정할 수 있습니다.MRAID
JSON 형식의 경우BidResponse.seatbid.bid.apis
을MRAID_1
또는3
로 설정합니다.SIZELESS
JSON 형식의 경우BidResponse.seatbid.bid.attr
을RESPONSIVE
로 설정합니다.18
PLAYABLE
이는BidResponse.seatbid.bid.attr
를USER_INTERACTIVE
로 설정하거나 JSON 형식의 경우13
로 설정하여 나타냅니다.
광고 소재의 감지된 속성에 관한 의견을 얻는 방법에 대한 설명은 광고 소재 리소스를 참고하세요.
공개 입찰 입력란
공개 입찰에 참여하는 거래소 및 네트워크 입찰자가 전송하는 입찰 응답은 표준 실시간 입찰에 참여하는 Authorized Buyers의 입찰 응답과 유사합니다. 공개 입찰 고객은 소수의 추가 입찰 항목을 지정할 수 있으며, 일부 기존 입찰 항목은 다른 용도로 사용할 수 있습니다. 여기에는 다음이 포함됩니다.
OpenRTB | Authorized Buyers | 세부정보 |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
이 입찰가와 연결되어 게시자에게 보고되는 거래소의 네임스페이스에 있는 거래 ID입니다. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
게시자에게 보고되는 거래 유형으로, 입찰에서 거래가 처리되는 방식에 영향을 미칩니다. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
공개 입찰자로서 거래소가 중개자인 경우 최종 서드 파티 구매자 정보를 식별하는 데 사용되는 토큰입니다. 서드 파티 구매자로부터 가져오며 입찰 응답에서 변경되지 않은 상태로 Google에 전달해야 합니다. |
권장사항
- 서버에서 영구 HTTPS 연결('연결 유지' 또는 '연결 재사용'이라고도 함)을 사용 설정합니다. 제한 시간은 최소 10초로 설정합니다. 대부분의 경우 더 높은 값이 유용합니다. 승인된 구매자는 요청을 빠른 속도로 전송하며 각 요청에 대해 별도의 TCP 연결을 설정하는 지연 시간 오버헤드를 피해야 하므로 Google은 애플리케이션의 초기 지연 시간 테스트 중에 이를 확인합니다.
입찰자가 낙찰된 시점이 아닌 노출이 렌더링된 시점을 추적하는 선택적 노출 추적 URL을 포함합니다. 낙찰과 렌더링 간에 감소가 발생하므로 더 정확한 추적 통계를 얻을 수 있습니다.
- 입찰자가 코드에서 지원 중단된 필드에 종속되지 않도록 합니다. 이로 인해 입찰이 오류와 함께 실패할 수 있습니다.
BidResponse
에BidResponse.seatbid.bid.w
및BidResponse.seatbid.bid.h
를 포함합니다. 여러 광고 크기가 포함된 요청에 대한BidResponse
에는 이러한 필드가 포함되어야 합니다. 그렇지 않으면 입찰에서 삭제됩니다.- 응답 크기를 8K 미만으로 제한합니다. 응답이 너무 크면 네트워크 지연 시간이 늘어나고 제한 시간이 발생할 수 있습니다.
- SKAdNetwork 기여 분석이 필요한 iOS 인벤토리의 입찰 가이드라인을 따르세요.
입찰 응답 예시
다음 예는 사람이 읽을 수 있는 Protobuf 및 JSON 요청 샘플을 나타냅니다.
예 보기
직렬화된 응답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" 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"
예 보기
{ "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" }
예 보기
직렬화된 응답ad { 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" }
중요: 샘플에 표시된 Protobuf 메시지는 여기에서 사람이 읽을 수 있는 텍스트로 표시됩니다. 그러나 메시지는 전송 중에 이러한 방식으로 전송되지 않습니다. Google 또는 OpenRTB Protobuf 형식을 사용하는 경우 직렬화된 BidResponse 메시지만 허용됩니다.
다음 C++ 코드를 사용하여 BidResponse
메시지를 만들고 직렬화할 수 있습니다.
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 }
광고 소재 지정
입찰 응답은 입찰이 낙찰될 경우 게재할 광고 소재를 지정합니다. 입찰에는 지원되는 광고 형식 (AMP, 동영상, 네이티브) 중 하나가 포함되어야 합니다. 이 예에서는 html_snippet
필드를 사용하여 광고 소재를 지정합니다.
또는 광고 형식에 따라 다음 필드 중 하나를 사용하여 광고 소재를 지정할 수 있습니다.
- SDK 렌더링된 광고
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- 동영상
BidResponse.seatbid.bid.adm
- 네이티브
BidResponse.seatbid.bid.adm_native
BidResponse.seatbid.bid.adm
필드에서 HTML 스니펫을 사용하여 자체 서버에 호스팅된 광고를 지정합니다. 스니펫은 웹페이지에 삽입된 iframe으로 묶여 있으므로 페이지가 로드될 때 광고가 검색되고 렌더링됩니다. 광고 (배너 또는 전면 광고)가 iframe 내에서 올바르게 렌더링되고 입찰하는 광고 슬롯에 적합한 크기로 렌더링되도록 HTML 스니펫을 작성해야 합니다.
또한 다음과 같은 경우 입찰 응답에 선언된 광고 크기는 입찰 요청의 크기 조합 중 하나와 정확하게 일치해야 합니다.
- 광고가 동영상, 네이티브, 전면 광고가 아닌 일반 배너입니다.
- 입찰자가 입찰 응답에서 크기를 선언했습니다. 요청에 두 개 이상의 크기가 있을 때마다 크기 선언이 필요합니다.
- 전면 광고는 예외입니다. 전면 광고의 경우 너비가 화면 너비의 50% 이상, 높이가 화면 높이의 40% 이상이어야 합니다.
올바르게 렌더링되는 유효한 HTML 코드를 사용하여 HTML 스니펫 광고 소재를 지정할 수 있지만 Create BidResponse 메시지 섹션에서 crid
필드를 지정하는 것에 대한 제한사항에 유의하세요.
이를 사용하는 한 가지 방법은 광고 렌더링의 일환으로 서버에서 가져온 URL의 인수에 추가 정보를 넣는 것입니다. 이를 통해 노출에 관한 임의의 데이터를 자체 서버로 다시 전달할 수 있습니다.
입찰 응답에서 반환되는 HTML 스니펫에 대한 대부분의 정책은 서드 파티 광고와 동일합니다. 자세한 내용은 승인된 구매자 프로그램 가이드라인, 서드 파티 광고 게재 요구사항, 광고에서 클릭연결 URL 선언하기를 참고하세요.
매크로 지정
매크로는 광고 게재 시 관련 값으로 대체되는 URL이 포함된 일부 입찰 응답 필드에 삽입된 형식이 지정된 텍스트입니다. 예를 들어 낙찰된 입찰가에 포함된 HTML 스니펫 광고 소재에 AUCTION_PRICE
매크로가 포함된 경우 매크로는 복호화하여 입찰에서 노출에 지불한 금액을 확인할 수 있는 값으로 대체됩니다.
다음 필드에 매크로를 포함할 수 있습니다.
-
BidResponse.seatbid.bid.adm
매크로는 HTML 스니펫, 네이티브, 동영상 URL, 동영상 VAST XML 형식에 지원됩니다.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
AMP 광고 소재에는 Google만의
WINNING_PRICE
및WINNING_PRICE_ESC
매크로만 지원됩니다. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
결제 URL이 2개 이상 필요한 경우
BidResponse.seatbid.bid.burl
대신 사용합니다.
예를 들어 광고 소재를 가져오는 데 사용되는 URL 내에 ${MACRO}
를 삽입하여 HTML 스니펫의 일부로 매크로를 포함할 수 있습니다. 여기서 MACRO
는 OpenRTB 사양에 설명된 지원되는 매크로 중 하나입니다.
Google RTB 매크로
Google은 OpenRTB 사양에 있는 매크로 외에도 추가 매크로를 지원합니다. 이러한 매크로는 형식이 다르며 URL에 삽입된 경우 %%MACRO%%
로 표시됩니다. 다음 표에서는 이러한 매크로를 설명합니다.
매크로 | 설명 |
---|---|
ADVERTISING_IDENTIFIER |
구매자가 노출 렌더링 시 iOS IDFA 또는 Android의 광고 ID를 수신할 수 있도록 허용합니다. 자세한 내용은 광고주 식별자 복호화를 참고하세요. |
CACHEBUSTER |
임의의 부호 없는 4바이트 정수의 문자열 표현입니다. |
CLICK_URL_UNESC |
광고의 이스케이프되지 않은 클릭 URL입니다. 스니펫에서 서드 파티 클릭 URL의 이스케이프된 버전이 매크로 바로 뒤에 나와야 합니다. 예를 들어 서드 파티 클릭 URL이 <a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> 광고 게재 시 광고 소재는 다음과 같이 확장됩니다. <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> URL은 먼저 Google에 클릭을 등록한 다음 서드 파티 클릭 URL로 리디렉션합니다. |
CLICK_URL_ESC |
광고의 이스케이프 처리된 클릭 URL입니다. 다른 서버를 통해 값을 전달한 이후 리디렉션 될 경우 예를 들어 다음 코드는 HTML 스니펫에서 사용할 수 있습니다. <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> 광고 게재 시 광고 소재는 다음과 같이 확장됩니다. <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> 이렇게 하면 클릭이
|
CLICK_URL_ESC_ESC |
광고의 이중 이스케이프 처리된 URL입니다. 다른 서버를 통해 값을 전달한 이후 리디렉션 될 경우 예를 들어 다음 코드는 HTML 스니펫에서 사용할 수 있습니다. <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> 광고 게재 시 광고 소재는 다음과 같이 확장됩니다. <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 |
입찰 요청에 SSL이 필요하지 않은 경우 http: 로, 입찰 요청에 SSL이 필요한 경우 https: 로 확장됩니다. |
SITE |
콘텐츠 URL의 URL 이스케이프 도메인 또는 익명 인벤토리의 익명 ID입니다. |
SITE_URL |
지원 중단되었습니다. 동일한 기능을 제공하는 SITE 매크로로 대체되었습니다. |
TZ_OFFSET |
시간대 오프셋입니다. |
VERIFICATION |
프로덕션과 인증 파이프라인에서 광고 소재가 스캔될 때의 서로 다른 값입니다. 형식은 예를 들어 광고 소재에 |
WINNING_PRICE |
계정 통화의 마이크로(micros)로 인코딩된 노출 비용(CPM 보다는 CPI 우선). 예를 들어, CPM $5 USD 수익은 5,000,000 마이크로 CPM, 또는 5,000 마이크로 CPI에 해당됩니다. 이 경우 이 매크로를 파싱하려면 가격 확인을 복호화하는 애플리케이션을 구현해야 합니다. 자세한 내용은 가격 확인 암호화 해제 페이지를 참고하세요. |
WINNING_PRICE_ESC |
URL 이스케이프된 WINNING_PRICE . |
Google에서는 서드 파티에서 게재하는 광고의 광고 소재 내에 CLICK_URL_UNESC
또는 CLICK_URL_ESC
매크로를 사용하도록 요구합니다. Google은 클릭 추적에 CLICK_URL
매크로를 사용합니다.
매크로의 URL 이스케이프는 다음 스키마를 사용합니다.
- 공백 문자가 더하기 기호 (
+
)로 대체됩니다. - 영숫자 문자 (0~9, a~z, A~Z) 및 !()*,-./:_~ 집합의 문자는 변경되지 않습니다.
- 다른 모든 문자는
%XX
로 대체되며 여기서XX
는 문자를 나타내는 16진수 숫자입니다.
게시자 제한사항 및 요구사항
입찰 요청에는 게시자가 입찰에서 광고 소재에 적용하는 제한사항 및 요구사항의 종류에 관한 정보가 포함됩니다.
BidRequest.bcat
- 이 필드에 지정된 차단된 카테고리를 실시간 입찰 API의
detectedCategories
필드를 사용하여 제출된 광고 소재에서 감지된 카테고리와 비교할 수 있습니다.
- 이 필드에 지정된 차단된 카테고리를 실시간 입찰 API의
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- 실제로는 Google에서 모든 광고 소재에 SSL 지원을 요구하므로 항상
true
로 설정됩니다.
- 실제로는 Google에서 모든 광고 소재에 SSL 지원을 요구하므로 항상
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
제한된 기능이 포함된 광고로 입찰해서는 안 됩니다. 공급업체 유형과 같이 허용되는 기능의 경우 공급업체 유형이 BidRequest
의 allowed_vendor_type
목록에 있는 경우에만 광고를 반환합니다. BidRequest.imp.banner
와 같은 필드를 채워 입찰 요청에 지정된 광고 형식만 입찰에 포함해야 합니다. 자세한 내용은 BidRequest
프로토콜 버퍼 정의에서 이러한 필드에 관한 주석을 참고하세요.
광고가 BidResponse
에서 반환되는 경우 BidResponse
에서 BidResponse.seatbid.bid.attr
, BidResponse.seatbid.bid.cat
, BidResponse.seatbid.bid.adomain
또는 BidResponse.seatbid.bid.adm_native.link.url
필드를 정확하게 설정해야 합니다. 광고에 이러한 필드에 적용 가능한 값이 여러 개인 경우 모든 값을 포함해야 합니다. 자세한 내용은 BidResponse
프로토콜 버퍼 정의에서 이러한 필드에 관한 주석을 참고하세요.
이러한 필드가 설정되지 않은 응답은 삭제됩니다.
Open Measurement
Open Measurement를 사용하면 모바일 앱 환경에 게재되는 광고에 대해 독립적인 측정 및 인증 서비스를 제공하는 서드 파티 공급업체를 지정할 수 있습니다.
지원되는 광고 형식에는 동영상, 배너, 전면 광고가 있습니다. 이러한 형식이 포함된 입찰 응답에서 Open Measurement을 사용하는 방법에 관한 자세한 내용은 Open Measurement SDK 고객센터 도움말을 참고하세요.
샘플 입찰 응답
다음 섹션에서는 다양한 광고 유형의 샘플 입찰 응답을 보여줍니다.
앱 배너
예 보기
직렬화된 응답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" [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 }
예 보기
{ "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 } }
예 보기
직렬화된 응답ad { 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
앱 전면 광고
예 보기
직렬화된 응답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" [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"
예 보기
{ "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" }
예 보기
직렬화된 응답ad { 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
앱 전면 광고 동영상
예 보기
직렬화된 응답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: 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"
예 보기
{ "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" }
예 보기
직렬화된 응답ad { 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
앱 네이티브
예 보기
직렬화된 응답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" 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"
예 보기
{ "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" }
예 보기
직렬화된 응답ad { 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
웹 동영상
예 보기
직렬화된 응답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 [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"
예 보기
{ "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" }
예 보기
직렬화된 응답fad { 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
거래소 입찰자를 위한 모바일 웹 배너
예 보기
직렬화된 응답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 [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 }
예 보기
{ "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 } }