Header Bidding Implementations in the Wild


Example Publisher: Space.com (part of the Purch Network)

Domain: http://ib.adnxs.com/jpt

Keyvalue: pr

Since I work for AppNexus I’ll let the screenshots largely speak for themselves here, but generally speaking AppNexus offers a straightforward response, exact price (which needs to be divided by 10,000 to get to an exact rate), and the creative details.

AppNexus Header Bidding

AppNexus Header Bidding

Casale Index Exchange

Example Publisher: CNSNews.com


Keyvalue: price

Index Exchange has a detailed, yet easy to understand response structure to their header bidding request.  One item in particular I like is how clearly they have the brand and advertiser domain listed in their response.  While I don’t typically see publishers logging this value, I imagine it’s incredibly helpful to Ad Ops teams when investigating ad quality concerns.  Likewise, I think logging these values as additional parameters in the ad server could simplify reporting in downstream systems for publishers who access the raw logs for their ad server.

Casale Index Header Bidding

Casale Index Header Bidding


Example Publisher: Topix.com

Domain: //rtax.criteo.com/delivery/rta/

Keyvalue: A combination of position and size; 'top160=1' as an example

Criteo is probably the most mysterious of all the header bidding companies in that, along with Amazon, they are one of the most common direct-to-publisher integrations yet have an unconventional process.  Criteo doesn’t bid exclusively through header bidding like Amazon does, but it’s certainly their preferred approach in order to maximize their reach on highly targeted audiences, particularly on high quality inventory on premium publishers.  That said, this one is tricky to catch working in the wild because it specializes in retargeting shoppers who have recently abandoned carts at various online merchants.  So, if you want to see Criteo tags pass keyvalues into the ad server, you need to prime your cookie with some data worth bidding on.  In this case, all I needed to do was check out the Case Study section on Criteo’s site to see they were a partner of FragranceNet, and after throwing a few items in my cart, my Criteo parameters went from totally empty to full of winning bids on my very next pageview, giving me coupon codes for moisturizer and cologne.

Like Amazon, Criteo mixes two pieces of information in their response, the position and size of their bid, so that you might see keyvalues like ‘top160=1’, which simply means the top 160×600 ad slot. In many cases, Criteo will return as many bids as they have creative instead of a bid per ad position on the page as the SSPs tend to do.  In my particular case, Criteo was able to submit 22 different bids to the page to offer the publisher maximum flexibility to show one of their ads.  That said, Criteo does not pass price in any visible way that I can see, rather they simply pass the equivalent of ‘yes’ in their bid; the keyvalue is present or it isn’t, but they don’t quantify their bid in any way.

Criteo Header Bidding

Criteo Header Bidding


  1. Rubicon is working on a specific actual value solution called project fast lane but it is doing so begrudgingly. Rubicon believes correctly (however, almost no publishers manager their stacks completely correctly to take advantage.) That the way to value an auction/ yield management is in terms of scarcity. Exact price doesn’t matter from this perspective of yield management. If they return a “yes” in a certain tier it means that impression is a high enough value and rare enough in Rubicon it should get priority unless AdX beats a specific floor. This methodology when done correctly distributes impressions to the highest possible value across the entire campaign.

  2. Interesting color, Dave – thanks for the comment. I think I’d probably need more detail to really take an opinion on Rubicon’s described approach, although I’m not sure it makes sense at face value that exact price doesn’t matter as long as the relative price is higher. For one, I think that makes it pretty difficult to audit how good a job Rubicon’s system would do at calling higher / lower than AdX, and second, I think it makes log level data a lot more difficult to work with. That said, Rubicon has a smart team and I’m sure there’s more than meets the eye here – hopefully they’ll release more details on their unique take with header bidding.

  3. For additionally clarity I forgot to add that their solution was designed to compete with a publisher’s direct/ guaranteed demand and allow for “price less auctions”, the idea being if direct is pacing, a scarce impression should serve. With that in mind, Rubicon actively promotes that if you use their header solution no other header tags should be allowed. The argument being fixed header bids like Criteo generally fill say 5-10% of impressions typically make the market (as the 2nd price) over 50% of the time in an auction environment and that long term fragmenting demand and turing exchanges into bidders will hurt CPMs. I agree in the case of fixed bidders like Criteo, but not for other similar exchanges to Rubicon.

  4. Hi Alex,

    Yes, Space.com has a working example – just open your developer tools and search for ‘prebid.js’ on the Network tab.

    Hope that helps!

Leave a Reply

Your email address will not be published. Required fields are marked *