Following the success of ads.txt and sellers.json, aimed at achieving greater transparency across the supply chain, IAB Tech Lab has recently introduced a new initiative – buyers.json. Let’s see what it’s about.

Just as the analysts forecasted, 2021 proves being a year of the accelerated standardization across the global online advertising ecosystem. Namely, just recently IAB Tech Lab has released the new specification for public commentary, known as buyers.json.

What is buyers.json?

Designed to be utilized in conjunction with the OpenRTB DemandChain object, buyers.json somewhat mirrors the sellers.json initiative, introduced last year.

However, this particular specification primarily targets the intermediaries in the demand chain, including DSPs, ad exchanges and other players, involved in the sale of publishers’ inventory.

In this respect, an obvious benefit of implementing buyers.json is that in such a way publishers and SSPs can identify controversial buyers across the demand chain faster and easier, hence preventing or at least mitigating malvertising attacks and other types of online ad fraud more efficiently.

Of course, the sole implementation of buyers.json and the OpenRTB DemandChain object will not resolve all issues with advertising fraud, but it will definitely add up to the overall supply/demand chain transparency.

How to Implement Buyers.json

The implementation flow is similar to sellers.json and implies that all intermediary players between a publisher and an advertiser publicly declare a list of authorized inventory buyers they’re representing in the root folder of their advertising domain: https://example.com/buyers.json,  with “Content-Type: application/json” contained in the HTTP request header.

Note! The URL mentioned herein is merely an example, so visiting it should yield no result.

Parent Object

The file formatting implies adding several fields in the parent object, yet only two of them are mandatory.

Namely, the list of required fields includes:

“buyers”: [ is an array of objects, which enlists all inventory buyers (even if those are marked as confidential).

“version” is a string, which refers to the version of the specification. 

Note! The only valid “version” string value at this point is “1.0”

It’s also recommended to add the date and time of the last file update, using the “last_updated” attribute, which is a string, in the ISO 8601 format (UTC time), e.g. “2021-04-19T00:02:02Z”.

Note! If the file contents didn’t change, the timestamp should NOT be updated.

As for the optional attributes in the parent object, these are “name”, “contact_email” and “contact_address”, which refer to the advertising system’s name and contact information, accordingly, as well as the object array “identifiers”: [ , which enlists the identifiers, associated with a particular ad system (e.g. TAG IDs or else).

Buyers Object

Each object in the object array “buyers”: [ needs to include the following mandatory fields:

“buyer_id”  – a string, which contains a unique buyer’s ID, also included in bidresponse.seatbid[].seat of an OpenRTB response, if it’s present, and the DemandChain Object.

“buyer_type” – a string, which contains information on whether a buyer is a direct advertiser (“ADVERTISER”), an intermediary  (“INTERMEDIARY”), or both  (“BOTH”).

“name” – a string, which contains information on the buyer’s name, IF the “is_confidential” attribute value is 0 (see below).

“domain”- a string, which contains information on the buyer’s domain, IF the buyer has a web domain and WHEN the “is_confidential” attribute value is 0.

Note! “is_confidential”  – is an integer (optional), which contains information on whether a buyer’s identity is confidential, or not (0 refers to “not confidential” and 1 refers to “confidential”). The default value is: 0.

It’s also recommended to add the date of file creation – using the “created_on” attribute.

Example: 

 "buyers": [
   { 
    "buyer_id": "112233", 
    "name": "ExampleInc",
    "domain": "example.inc",
    "buyer_type": "ADVERTISER",
    "created_on": "2021-03-01" 
   }, 
   { 
    "buyer_id": "5678", 
    "name": "IntermediaryCom",
    "domain": "intermediary.com",
    "buyer_type": "INTERMEDIARY",
    "created_on": "2021-04-18" 
   }, 
   …
 ] 

Check out the detailed guide to buyers.json implementation on the IAB Tech Lab’s website.