curl --request POST \
--url https://api.brandfetch.io/v2/brands/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identifiers": [
"nike.com",
"https://www.spotify.com/about",
{
"type": "ticker",
"value": "NKE"
}
],
"cachedOnly": false,
"allowNsfw": true,
"palette": false
}
'import requests
url = "https://api.brandfetch.io/v2/brands/batch"
payload = {
"identifiers": [
"nike.com",
"https://www.spotify.com/about",
{
"type": "ticker",
"value": "NKE"
}
],
"cachedOnly": False,
"allowNsfw": True,
"palette": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifiers: ['nike.com', 'https://www.spotify.com/about', {type: 'ticker', value: 'NKE'}],
cachedOnly: false,
allowNsfw: true,
palette: false
})
};
fetch('https://api.brandfetch.io/v2/brands/batch', 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.brandfetch.io/v2/brands/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifiers' => [
'nike.com',
'https://www.spotify.com/about',
[
'type' => 'ticker',
'value' => 'NKE'
]
],
'cachedOnly' => false,
'allowNsfw' => true,
'palette' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.brandfetch.io/v2/brands/batch"
payload := strings.NewReader("{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.brandfetch.io/v2/brands/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brandfetch.io/v2/brands/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"identifier": "<string>",
"status": 200,
"brand": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"claimed": true,
"description": "<string>",
"longDescription": "<string>",
"links": [
{
"name": "twitter",
"url": "<string>"
}
],
"logos": [
{
"theme": "dark",
"formats": [
{
"src": "<string>",
"format": "svg",
"height": 123,
"width": 123,
"size": 123,
"background": "transparent"
}
],
"tags": [
"<string>"
],
"type": "icon"
}
],
"colors": [
{
"hex": "<string>",
"type": "accent",
"brightness": 123
}
],
"fonts": [
{
"name": "<string>",
"type": "title",
"origin": "google",
"originId": "<string>",
"weights": [
{}
]
}
],
"images": [
{
"formats": [
{
"src": "<string>",
"format": "svg",
"height": 123,
"width": 123,
"size": 123,
"background": "transparent"
}
],
"tags": [
"<string>"
],
"type": "banner",
"pictureMetadata": {
"score": 123,
"rank": 123,
"naturalWidth": 123,
"naturalHeight": 123,
"alt": "<string>",
"sourceUrl": "<string>",
"imageCategory": "<string>",
"categoryConfidence": 123
}
}
],
"qualityScore": 123,
"company": {
"employees": 1,
"financialIdentifiers": {
"isin": [
"<string>"
],
"ticker": [
"<string>"
]
},
"foundedYear": 123,
"industries": [
{
"id": "<string>",
"score": 123,
"slug": "<string>",
"name": "<string>",
"emoji": "<string>",
"parent": [
{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"emoji": "<string>"
}
]
}
],
"kind": "EDUCATIONAL",
"location": {
"city": "<string>",
"country": "<string>",
"countryCode": "<string>",
"region": "<string>",
"state": "<string>",
"subregion": "<string>"
}
},
"isNsfw": true,
"urn": "<string>",
"palette": {
"colors": [
{
"hex": "<string>",
"name": "<string>",
"role": "<string>",
"context": "<string>",
"rank": 123,
"member": true,
"legibleText": "<string>",
"legibleTextContrast": 123,
"onColor": "<string>",
"onColorContrast": 123,
"brightness": 123,
"prevalence": 123,
"usage": {
"elements": [
{
"element": "<string>",
"property": "<string>",
"count": 123,
"examples": [
"<string>"
]
}
],
"css": {}
},
"tokens": [
"<string>"
],
"variants": [
"<string>"
]
}
],
"logos": [
{
"asset": "<string>",
"type": "<string>",
"theme": "<string>",
"format": "<string>",
"primary": true,
"colors": [
{
"hex": "<string>",
"coverage": 123
}
]
}
],
"onPairs": [
{
"element": "<string>",
"theme": "<string>",
"background": "<string>",
"text": "<string>",
"contrast": 123,
"wcag": "<string>",
"count": 123
}
],
"gradients": [
{
"rank": 123,
"type": "<string>",
"angle": 123,
"stops": [
{
"hex": "<string>",
"position": 123
}
],
"css": "<string>"
}
],
"themes": {
"light": {
"background": "<string>",
"surface": "<string>",
"text": "<string>",
"muted": "<string>",
"border": "<string>",
"accent": "<string>",
"contrast": 123
},
"dark": {
"background": "<string>",
"surface": "<string>",
"text": "<string>",
"muted": "<string>",
"border": "<string>",
"accent": "<string>",
"contrast": 123
}
}
}
},
"code": "crawl_queued",
"message": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "Not enough API credits remain for this batch.",
"quota": 123,
"used": 123,
"remaining": 123,
"required": 123
}Brand API batch
Send up to 100 identifiers. Get one result per identifier, in the order you sent them. Each identifier is answered the way GET /v2/brands/{identifier} answers it.
One difference: a batch never crawls while you wait. A brand that is not indexed yet is queued for indexing and answered 202. Request it again later.
Each identifier answered 200 uses one API credit. Every other result is free, 404 included. An identifier repeated in one request is charged once.
Available on paid plans and with prepaid credits. Authenticate with an API key sent as Authorization: Bearer <key>.
curl --request POST \
--url https://api.brandfetch.io/v2/brands/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"identifiers": [
"nike.com",
"https://www.spotify.com/about",
{
"type": "ticker",
"value": "NKE"
}
],
"cachedOnly": false,
"allowNsfw": true,
"palette": false
}
'import requests
url = "https://api.brandfetch.io/v2/brands/batch"
payload = {
"identifiers": [
"nike.com",
"https://www.spotify.com/about",
{
"type": "ticker",
"value": "NKE"
}
],
"cachedOnly": False,
"allowNsfw": True,
"palette": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifiers: ['nike.com', 'https://www.spotify.com/about', {type: 'ticker', value: 'NKE'}],
cachedOnly: false,
allowNsfw: true,
palette: false
})
};
fetch('https://api.brandfetch.io/v2/brands/batch', 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.brandfetch.io/v2/brands/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifiers' => [
'nike.com',
'https://www.spotify.com/about',
[
'type' => 'ticker',
'value' => 'NKE'
]
],
'cachedOnly' => false,
'allowNsfw' => true,
'palette' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.brandfetch.io/v2/brands/batch"
payload := strings.NewReader("{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.brandfetch.io/v2/brands/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brandfetch.io/v2/brands/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifiers\": [\n \"nike.com\",\n \"https://www.spotify.com/about\",\n {\n \"type\": \"ticker\",\n \"value\": \"NKE\"\n }\n ],\n \"cachedOnly\": false,\n \"allowNsfw\": true,\n \"palette\": false\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"identifier": "<string>",
"status": 200,
"brand": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"claimed": true,
"description": "<string>",
"longDescription": "<string>",
"links": [
{
"name": "twitter",
"url": "<string>"
}
],
"logos": [
{
"theme": "dark",
"formats": [
{
"src": "<string>",
"format": "svg",
"height": 123,
"width": 123,
"size": 123,
"background": "transparent"
}
],
"tags": [
"<string>"
],
"type": "icon"
}
],
"colors": [
{
"hex": "<string>",
"type": "accent",
"brightness": 123
}
],
"fonts": [
{
"name": "<string>",
"type": "title",
"origin": "google",
"originId": "<string>",
"weights": [
{}
]
}
],
"images": [
{
"formats": [
{
"src": "<string>",
"format": "svg",
"height": 123,
"width": 123,
"size": 123,
"background": "transparent"
}
],
"tags": [
"<string>"
],
"type": "banner",
"pictureMetadata": {
"score": 123,
"rank": 123,
"naturalWidth": 123,
"naturalHeight": 123,
"alt": "<string>",
"sourceUrl": "<string>",
"imageCategory": "<string>",
"categoryConfidence": 123
}
}
],
"qualityScore": 123,
"company": {
"employees": 1,
"financialIdentifiers": {
"isin": [
"<string>"
],
"ticker": [
"<string>"
]
},
"foundedYear": 123,
"industries": [
{
"id": "<string>",
"score": 123,
"slug": "<string>",
"name": "<string>",
"emoji": "<string>",
"parent": [
{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"emoji": "<string>"
}
]
}
],
"kind": "EDUCATIONAL",
"location": {
"city": "<string>",
"country": "<string>",
"countryCode": "<string>",
"region": "<string>",
"state": "<string>",
"subregion": "<string>"
}
},
"isNsfw": true,
"urn": "<string>",
"palette": {
"colors": [
{
"hex": "<string>",
"name": "<string>",
"role": "<string>",
"context": "<string>",
"rank": 123,
"member": true,
"legibleText": "<string>",
"legibleTextContrast": 123,
"onColor": "<string>",
"onColorContrast": 123,
"brightness": 123,
"prevalence": 123,
"usage": {
"elements": [
{
"element": "<string>",
"property": "<string>",
"count": 123,
"examples": [
"<string>"
]
}
],
"css": {}
},
"tokens": [
"<string>"
],
"variants": [
"<string>"
]
}
],
"logos": [
{
"asset": "<string>",
"type": "<string>",
"theme": "<string>",
"format": "<string>",
"primary": true,
"colors": [
{
"hex": "<string>",
"coverage": 123
}
]
}
],
"onPairs": [
{
"element": "<string>",
"theme": "<string>",
"background": "<string>",
"text": "<string>",
"contrast": 123,
"wcag": "<string>",
"count": 123
}
],
"gradients": [
{
"rank": 123,
"type": "<string>",
"angle": 123,
"stops": [
{
"hex": "<string>",
"position": 123
}
],
"css": "<string>"
}
],
"themes": {
"light": {
"background": "<string>",
"surface": "<string>",
"text": "<string>",
"muted": "<string>",
"border": "<string>",
"accent": "<string>",
"contrast": 123
},
"dark": {
"background": "<string>",
"surface": "<string>",
"text": "<string>",
"muted": "<string>",
"border": "<string>",
"accent": "<string>",
"contrast": 123
}
}
}
},
"code": "crawl_queued",
"message": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "Not enough API credits remain for this batch.",
"quota": 123,
"used": 123,
"remaining": 123,
"required": 123
}GET /v2/brands/{identifier} answers it.A batch never crawls while you wait. A brand that is not indexed yet is
queued for indexing and answered 202. Request it again later.Each identifier answered 200 uses one API credit. Every other result is
free, 404 included, and an identifier repeated in one request is charged
once. Available on paid plans and with prepaid credits. See
Batch lookups.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The brands to look up. A string is read as the identifier of GET /v2/brands/{identifier}: a domain, website URL, email address, brand ID, ticker or ISIN. An object names the identifier's type, as GET /v2/brands/{type}/{identifier} does. An exchange-suffixed ticker sent as a string, such as bhp.ax, is read as a domain: send it as { "type": "ticker", "value": "BHP.AX" }.
1 - 100 elements1 - 2048"nike.com"
[ "nike.com", "https://www.spotify.com/about", { "type": "ticker", "value": "NKE" } ]
Answer from the index alone. A brand that is not indexed is answered 204 and is not queued, and a ticker, ISIN or crypto symbol that is not indexed is not resolved. A 204 is free.
As allowNsfw on GET /v2/brands/{identifier}. Not set by default.
As palette on GET /v2/brands/{identifier}: add each brand's palette.
Response
One result per identifier, in the order you sent them.
Show child attributes
Show child attributes
Was this page helpful?