curl --request GET \
--url https://api.example.com/api/v1/ad-library/advertisers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/ad-library/advertisers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/ad-library/advertisers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/ad-library/advertisers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/ad-library/advertisers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/ad-library/advertisers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ad-library/advertisers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"generated_at": "2023-11-07T05:31:56Z",
"limit": 123,
"offset": 123,
"total": 0,
"has_more": false,
"items": [
{
"advertiser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"parent_company": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"primary_domain": "<string>",
"website_url": "<string>",
"website_header_image_url": "<string>",
"industry": "<string>",
"brand_classification": {
"primary_industry": "<string>",
"industries": [
"<string>"
],
"business_models": [
"<string>"
],
"version": "<string>",
"source": "<string>",
"classified_at": "2023-11-07T05:31:56Z",
"needs_review": false
},
"filterable_industries": [
"<string>"
],
"partners": [
{
"name": "<string>",
"page_id": "<string>",
"page_url": "<string>",
"profile_image_url": "<string>"
}
]
},
"has_captured_ads": true,
"total_ads": 0,
"review_count": 0,
"new_ads_30d": 0,
"active_ads": 0,
"industry_match": false,
"recommendation_score": 0,
"last_active_at": "2023-11-07T05:31:56Z",
"platforms": [
"<string>"
],
"providers": [
"<string>"
],
"countries": [
"<string>"
]
}
],
"platform_counts": [
{
"platform": "<string>",
"brand_count": 0
}
],
"any_platform_brand_count": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}List Global Ad Library Advertisers
Distinct advertisers (brands) across the global ad library.
Powers the Explore Brands tab — a server-side GROUP BY advertiser_id
aggregate so every brand surfaces (paginated), not just the handful that
dominate a single ad-fetch page. Same filter semantics as /search.
platform_facet additionally returns platform_counts /
any_platform_brand_count — how many BRANDS the current filters leave on
each requested platform, for the “Platforms:” pill bar. Those counts ignore
platform itself (a facet that narrows itself blanks every option the
caller has not already picked) and honour every other filter.
curl --request GET \
--url https://api.example.com/api/v1/ad-library/advertisers \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/ad-library/advertisers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/ad-library/advertisers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/ad-library/advertisers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/ad-library/advertisers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/ad-library/advertisers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ad-library/advertisers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"generated_at": "2023-11-07T05:31:56Z",
"limit": 123,
"offset": 123,
"total": 0,
"has_more": false,
"items": [
{
"advertiser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"parent_company": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"primary_domain": "<string>",
"website_url": "<string>",
"website_header_image_url": "<string>",
"industry": "<string>",
"brand_classification": {
"primary_industry": "<string>",
"industries": [
"<string>"
],
"business_models": [
"<string>"
],
"version": "<string>",
"source": "<string>",
"classified_at": "2023-11-07T05:31:56Z",
"needs_review": false
},
"filterable_industries": [
"<string>"
],
"partners": [
{
"name": "<string>",
"page_id": "<string>",
"page_url": "<string>",
"profile_image_url": "<string>"
}
]
},
"has_captured_ads": true,
"total_ads": 0,
"review_count": 0,
"new_ads_30d": 0,
"active_ads": 0,
"industry_match": false,
"recommendation_score": 0,
"last_active_at": "2023-11-07T05:31:56Z",
"platforms": [
"<string>"
],
"providers": [
"<string>"
],
"countries": [
"<string>"
]
}
],
"platform_counts": [
{
"platform": "<string>",
"brand_count": 0
}
],
"any_platform_brand_count": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
1 - 2001 - 801 - 2001 - 200trustpilot, google 1 - 401 - 1202 - 10002 - 10001 - 2001 - 2001 - 2001 - 10001 - 10001 - 4001 - 4001 - 4001 - 2001 - 6001 - 200x >= 1x >= 0Response
Successful Response
Paginated advertiser (brand) list for the Explore Brands tab.
total is the distinct advertiser count for the current filters (drives
has_more / "Load more"); no brand scope — Explore browses the complete
ad library.
platform_counts / any_platform_brand_count populate the "Platforms:"
pill bar and are computed ONLY when the caller asks for them
(platform_facet); an empty list means "not requested", never "zero
brands". Both are computed with the caller's own platform filter
REMOVED — a facet that narrows itself reports 0 for every option the user
did not already pick, which reads as a broken control. Every other
dimension (search, industry, business model, country, status, dates,
review filters, tenancy) still applies, so the numbers move with the
filter bar. any_platform_brand_count is the distinct brand count over
the UNION of the requested platforms, not the sum of the rows: a brand
advertising on Google and YouTube is one brand, and the rows deliberately
do not add up to it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?