As part of Privacy Sandbox, Chrome proposed the experimental Topics API. The Topics API provides third-party callers on the web page (including ad tech providers) with coarse-grained advertising topics that the page visitor might currently be interested in. The topics can supplement the contextual information about the current page, and can be useful to support interest-based advertising.
The Topics API experiment is available to RTB partners in bid requests. Topics are sent to all RTB partners based on availability.
Bid request representation
OpenRTB protocol
Topics are represented as segments in the OpenRTB BidRequest.user.data
message.
Field | Type | Description |
---|---|---|
Data.ext.segtax
|
Integer | The ID for a taxonomy that is registered centrally. For Topics, this is the version of the advertising taxonomy which defines the semantic meaning of each topic ID. 600 is used for Chrome's Topics initial taxonomy. |
Data.ext.segclass
|
String | Equivalent to classifier_version .
|
Data.segment.id
|
String | Equivalent to id casted to a string.
|
Data.ext
is an extension to the BidRequest.user.data
message. This extension
is available in the open beta version of the protocol.
Here's the definition:
// Ad Exchange extensions for the Data object.
message DataExt {
// The ID for a taxonomy that is registered centrally. Used to define the
// namespace and semantic meaning of the segment IDs. See
// https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md#enumeration-of-taxonomies
// for the enumeration of the taxonomies that this value can take. Currently
// only Chrome Topics API taxonomy (segtax=600) is supported.
optional int32 segtax = 1;
// The version of the classifier which produced the segment IDs within the
// taxonomy. For example, in the case of Chrome Topics API (segtax=600), this
// is the version of the classifier used by the browser to map hostnames to
// topics in the taxonomy.
optional string segclass = 2;
}
Google RTB protocol (deprecated)
Topics are represented in the topics
field in the BidRequest
message. This
field is available in the open beta version of the protocol.
Here's the definition:
// Experimental field; subject to change.
// A coarse-grained topic that a website visitor might currently be interested
// in based on recent browsing activity. See
// https://developer.chrome.com/docs/privacy-sandbox/topics/ and/or
// https://privacysandbox.com/intl/en_us/proposals/topics/ for more
// information about the Topics API. Reach out to your account manager to
// participate in the Topics API experiment.
message Topic {
// The value of a topic ID. A numerical identifier corresponding to a
// coarse-grained advertising topic. See
// https://github.com/patcg-individual-drafts/topics/blob/main/taxonomy_v1.md
// for a list of topics in the initial taxonomy.
optional int32 id = 1;
// The version of the advertising taxonomy which defines the semantic
// meaning of each topic ID for the topics, for example "v1".
optional string taxonomy_version = 2;
// The version of the classifier used by the browser to map hostnames to
// topic IDs in the taxonomy.
optional string classifier_version = 3;
}
// The list of topics that a website visitor might currently be interested in
// inferred by the browser based on recent browsing activity. See
// https://developer.chrome.com/docs/privacy-sandbox/topics/ and/or
// https://privacysandbox.com/intl/en_us/proposals/topics/ for more
// information about Topics API.
repeated Topic topics = 74;
Examples
The following is an example of how Google Authorized Buyers and OpenRTB protocols represent topics returned by the Chrome Topics API.
Chrome Topics API response, returned by document.browsingTopics()
:
[
{
"modelVersion": "classifier_v1",
"taxonomyVersion": "taxonomy_v1",
"topic": 3
},
{
"modelVersion": "classifier_v1",
"taxonomyVersion": "taxonomy_v1",
"topic": 44
},
{
"modelVersion": "classifier_v1",
"taxonomyVersion": "taxonomy_v1",
"topic": 59
}
]
OpenRTB BidRequest
:
{
"user": {
"data": [
{
"ext": {
"segtax": 600,
"segclass": "classifier_v1"
},
"segment": [
{ "id": "3" },
{ "id": "44" },
{ "id": "59" }
]
}
]
}
}
Google RTB protocol (deprecated) BidRequest
:
topics {
id: 3
taxonomy_version: "taxonomy_v1"
classifier_version: "classifier_v1"
}
topics {
id: 44
taxonomy_version: "taxonomy_v1"
classifier_version: "classifier_v1"
}
topics {
id: 59
taxonomy_version: "taxonomy_v1"
classifier_version: "classifier_v1"
}
In the Chrome Topics API example above, taxonomy_version
implies that
the taxonomy_v1 mapping
is used. Based on the taxonomy, these topic IDs correspond to the following
topics:
Topic ID | Topic Value |
---|---|
3 | /Arts & Entertainment/Comics |
44 | /Arts & Entertainment/Opera |
59 | /Autos & Vehicles/Classic Vehicles |
Availability
The presence of topics in the bid request is subject to the existing privacy protections and controls. For example, topics are unavailable if the user opts out of personalized advertising or on non-personalized ads inventory.