Buy traffic using OpenRTB

Do you want to buy traffic using OpenRTB protocol but don't know how to do it? Then this article is for you!

We will explain how to set up your OpenRTB endpoints to buy traffic using OpenRTB from a 3rd-party adserver. You might want to check out this article if you need to sell traffic using the OpenRTB protocol.

Currently, Adserver.Online supports OpenRTB v2.5 protocol for Banners, Native, VAST, Direct Link, and Push Notification ad formats.

Before you start, we kindly recommend you examine the specification of OpenRTB protocol. It will help you understand how it generally works and the terminology used.

How to configure

First, it's necessary to check if you have enabled server tag mode for a particular zone in its Publisher / SSP options. Otherwise, endpoints won't be working.

Second, you must configure a revenue model for zones configured as RTB endpoints.

Afterward, you will find the OpenRTB endpoint on the zone view page.

buy traffic using openRTB - adserver.online

Additional parameter

You can manually add extra parameters to the endpoint's URL to adjust its behavior.

Available parameters:

  • pmodel – Optional. Pricing model integer code. Possible values: 1 – CPM, 2 – CPC. By default 1 (CPM).
    Example: https://srv.aso1.net?rtb/bidder?zid=34921&pmodel=2
  • ifr – Optional. Enables IFrame-based adm format when applicable (e.g., banners). Possible values: 1 – enabled, 0 – disabled (default).
    Example: https://srv.aso1.net?rtb/bidder?zid=34921&ifr=1
  • nurlAdm – Optional. Some SSPs may require inserting NURL pixel into ADM field. Possible values: 1 – nurl pixel will be inserted into adm-field, 0 – disabled (default. nurl will be a separate field).
    Example: https://srv.aso1.net?rtb/bidder?zid=34921&nurlAdm=1
  • af – Optional. Allows selecting ad format. It applies to banner zones/endpoints only. Possible values are banner and native. By default, any banner ad can be returned by an endpoint.
    Example: https://srv.aso1.net?rtb/bidder?zid=34921&af=native

Bids

As a buyer, you must specify bids or prices you are ready to pay for an impression (in case you win an auction in the supply party system).

Since a zone is responsible for the RTB endpoint, the bid configuration is located on the zone form – Revenue Model fields in the Publisher / SSP section.

You can select between two bidding strategies: Flat Rate and Revenue Share.

In the case of a Flat Rate, your bid will be constant. In the case of Revenue Share, the bid will depend on the campaign's rate.

Read more about how the calculation works.

Pricing Model

According to the specification, OpenRTB supports only the CPM pricing model.

However, some supply parties may support other models, e.g., CPC. You must clarify it with your supply partners.

By default, our RTB responses contain CPM campaigns only. To change this behavior, add the "pmodel" parameter to the endpoint (see above).

Currency

By default, the system uses the currency configured in the Settings / Common menu as the bid currency.

If the currency specified in the request differs from the default, it will be automatically converted. Currency conversion is supported for the "cur" and "imp.bidfloorcur" parameters of the RTB request. Supported currencies.

For example, if your adserver currency is USD (set in the Settings / Common menu) but the cur: ["EUR"] parameter is specified, the bid will be automatically converted to EUR.

Multisizes support

By default, a banner endpoint supports only one size (e.g., 200×400). This behavior is defined in the corresponding zone form. You must adjust the "Size matching method" property of the needed zone(s) to support multiple sizes within the same endpoint.

For example, select "Not wider than" and choose 300×250 in the Size field. In this case, the endpoint will support ads of several sizes: 300x250, 300x100, 300x600, 100x100, etc.

Also, the system will allow you to link ads of different sizes to that zone.

Reporting

Besides standard statistics, e.g., impressions and clicks that you can find in the Reports / Statistics menu, Adserver.Online provides extended data in these special reports:

1 . In the Reports / SSP responses report, you can find all incoming requests to your endpoints, including average bid, bidfloors, and won rate.

2. The supply party may ask you to provide a report based on the "imp.tagid" tag. This report is available via API method.

Response codes

  • 200 – Successful response
  • 204 – Empty response. No ads were found
  • 400 – Required parameters are missing
  • 404 – Zone is inactive, or server tag is not enabled

How to buy traffic using OpenRTB – examples

IMPORTANT: OpenRTB endpoints are not regular links, so they will not work in a web browser if you try to open them like that. You will likely get an error. So, instead of that, you need to use a special tool like Postman to make POST requests to the endpoint.

We provide examples of formats not covered by OpenRTB specification, such as direct links and push notifications. For Banners, Native, and VAST, please refer to the OpenRTB specification.

Direct link / Popup

IMPORTANT: These formats are not described in OpenRTB specification, so different ad networks may use different approaches. Adserver.Online interprets a request as a Direct link/Popup request if it doesn't contain any ad format section (e.g., "banner", "video", "native")

This is what an endpoint looks like:

https://srv.aso1.net/rtb/bidder?zid=34921

An example of a request:

{
     "id": "8b424a6120ce11e990d90242ac110004",
     "imp": [
         {
             "id": "1",
             "tagid": "123456"
         }
     ],
     "site": {
         "id": "1",
         "domain": "example.com",
         "page": "https://example.com/hello",
         "ref": "https://example.com/ref"
     },
     "device": {
         "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15",
         "geo": {
             "country": "US",
             "region": "South Dakota",
             "city": "Sisseton"
         },
         "ip": "85.253.99.10",
         "os": "mac"
     },
     "user": {
         "id": "e7252cbb0f7898f722b58a768213d8da"
     },
     "at": 1
 }

An example of a response:

{
  "id": "8b424a6120ce11e990d90242ac110004",
  "seatbid": [
    {
      "bid": [
        {
          "id": "87033",
          "impid": "1",
          "price": 1.2345,
          "nurl": "https://track.aso1.net/won?params",
          "adm": "https:\/\/track.aso1.net\/link?params",
          "adomain": [
            "adserver.online"
          ],
          "cid": "45592",
          "crid": "87033"
        }
      ]
    }
  ]
}

Push Notification example

This is what an endpoint looks like:

https://srv.aso1.net/rtb/bidder?zid=44418

An example of a request:

{
     "id": "8b424a6120ce11e990d90242ac110004",
     "imp": [
         {
             "id": "1",
             "tagid": "7892",
             "native": {
               "request": "{\"native\":{\"ver\":\"1.1\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":75}},{\"id\":2,\"required\":1,\"img\":{\"type\":1}},{\"id\":3,\"required\":0,\"data\":{\"type\":2,\"len\":75}},{\"id\":7,\"required\":0,\"img\":{\"type\":3}}]}}"
              }
         }
     ],
     "site": {
         "id": "1",
         "domain": "example.com",
         "page": "https://example.com/hello",
         "ref": "https://example.com/ref"
     },
     "device": {
         "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15",
         "geo": {
             "country": "US",
             "region": "South Dakota",
             "city": "Sisseton"
         },
         "ip": "85.253.99.10",
         "os": "mac"
     },
     "user": {
         "id": "e7252cbb0f7898f722b58a768213d8da"
     },
     "at": 1
 }

An example of a response:

{
  "id": "8b424a6120ce11e990d90242ac110004",
  "seatbid": [
    {
      "bid": [
        {
          "id": "87033",
          "impid": "1",
          "price": 1.2345,
          "nurl": "https://track.aso1.net/won?params",
          "adm": "{\"native\":{\"ver\":\"1.1\",\"link\":{\"url\":\"https:\\/\\/track.aso1.net\\/click?_d=UllSCgZQ\"},\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Test Push #2\"}},{\"id\":2,\"required\":1,\"img\":{\"url\":\"https:\\/\\/media.aso1.net\\/storage\\/b\\/4\\/8\\/b4833c1f9dc5be9d5b97ed7e1c4e414db97de536.png\"}},{\"id\":3,\"required\":1,\"data\":{\"value\":\"Check out knowledge base for details\"}}],\"imptrackers\":[\"https:\\/\\/track.aso1.net\\/wtf.gif?cid=54182&aid=106973&d\"]}},
          "adomain": [
            "adserver.online"
          ],
          "cid": "45592",
          "crid": "87033"
        }
      ]
    }
  ]
}

Conclusion

This article contains enough information on how to buy traffic using OpenRTB and how to set up endpoints. It's a powerful feature that can help you use it wisely to scale up your online business.

IMPORTANT: If you plan to buy traffic using the OpenRTB protocol, you should know that each OpenRTB request generates an ad server request. But that doesn't necessarily mean that each of your OpenRTB requests will result in an impression. And that's inherent to the nature of an auction when only OpenRTB requests that won the auction can result in impressions.

NB: Manuals/documentation from your partners are needed when you contact our support team with questions about OpenRTB integration.

Onboarding questions and answers

You might be asked the following questions when connecting to a new SSP partner. We prepared the answers.

Q: What version of OpenRTB do you support?
A: Currently, Adserver.Online supports OpenRTB v2.5

Q: What is the max RPS (Requests Per Second)?
A: We recommend answering 100 RPS despite the fact we support much more than that. This limit can be increased at any time. Initially, it will save you money since our pricing is based on requests.

Q: Where are your RTB servers located?
A: Europe

Q: Can you control RPS on your side?
A: No.

Q: Do you place a bid per single impression or 1000 impressions (CPM)?
A: Per 1000 impressions

Q: Can you provide examples of requests and responses?
A: Direct link request and response. For other formats, we follow this specification.