files/en-us/web/api/document/browsingtopics/index.md
{{APIRef("Topics API")}}{{non-standard_header}}{{deprecated_header}}
[!WARNING] This feature is currently opposed by two browser vendors. See the Standards positions section below for details of opposition.
[!NOTE] An Enrollment process is required to use this feature in your applications.
The browsingTopics() method of the {{domxref("Document")}} interface returns a promise that fulfills with an array of objects representing the top topics for the user, one from each of the last three epochs. These topics could then be returned to the ad tech platform in a subsequent fetch request. By default, the method also causes the browser to record the current page visit as observed by the caller, so the page's hostname can later be used in topics calculation.
See Using the Topics API for more details.
[!NOTE]
browsingTopics()does not rely on HTTP headers to send topics and mark topics as observed like the other Topics API enabling features, but it is somewhat less performant. You are advised to use one of the HTTP header-using features, falling back tobrowsingTopics()only in situations where the headers cannot be modified.
browsingTopics()
browsingTopics(options)
options {{optional_inline}}
skipObservation
true, causes the browser to not observe topics when browsingTopics() is invoked. The default is false, which causes topics to be observed.A {{jsxref("Promise")}} that fulfills with an array of up to three objects representing the current user's selected topics for the last three epochs. Each object contains the following properties:
configVersion
modelVersion
taxonomyVersion
topic
version
configVersion, modelVersion, and taxonomyVersion, concatenated with colons (:) between each.The exact property values may vary by browser implementation. An example object from Chrome might look as follows:
{
"configVersion": "chrome.1",
"modelVersion": "1",
"taxonomyVersion": "1",
"topic": 43,
"version": "chrome.1:1:1"
}
NotAllowedError {{domxref("DOMException")}}
// Get an array of top topics for this user
const topics = await document.browsingTopics();
// Request an ad creative
const response = await fetch("https://ads.example/get-creative", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(topics),
});
// Get the JSON from the response
const creative = await response.json();
// Display ad
This feature is not part of an official standard, although it is specified in the Topics API Unofficial Proposal Draft.
{{Compat}}