API reference
Search API
GET /v1/search: find brands by name or domain for an autocomplete. No credits: 250,000 searches a month free, more on paid plans.
Request
GEThttps://brandidentityapi.com/v1/search?q={query}
Works with a secret key or a publishable key, so you can call it straight from a browser. Search never costs a credit. It is rate limited per minute, and each search that answers counts toward your plan's monthly searches: past them it answers 429 with quota_exceeded until the 1st (UTC).
| Parameter | Description |
|---|---|
| q | Required. A brand name (stripe) or a domain (stripe.com), up to 100 characters. |
| limit | How many results, from 1 to 20. Default 10. |
curl "https://brandidentityapi.com/v1/search?q=stripe&limit=5" \
-H "Authorization: Bearer $BRAND_IDENTITY_API_KEY"Response
{
"query": "stripe",
"results": [
{
"brandId": "0b7e9a52-3c1d-4f6e-8a2b-5d9c1e7f4a30",
"name": "Stripe",
"domain": "stripe.com",
"icon": "https://brandidentityapi.com/logo/stripe.com?type=icon&size=64",
"claimed": false,
"qualityScore": 0.94
},
{
"brandId": null,
"name": "Stars and Stripes",
"domain": "stripes.com",
"icon": "https://brandidentityapi.com/logo/stripes.com?type=icon&size=64",
"claimed": false,
"qualityScore": null
}
]
}| Field | Type | Description |
|---|---|---|
| brandId | string | null | The record's id, or null when the brand is not indexed yet. |
| name | string | The brand's name. |
| domain | string | Its domain: pass it to the Brand API for the full record. |
| icon | string | A small square icon from the logo CDN, ready for an img tag. |
| claimed | boolean | Whether the owner has claimed the record. |
| qualityScore | number | null | The record's quality score, or null when not indexed. |
Results with a null brandId are real companies we know the domain of but have not crawled yet. Looking one up with the Brand API indexes it.
When nothing we hold is about the query, we search the web for the brands it means: a misspelling or a name with a space in it (fire crawl) finds firecrawl.dev. That returns up to five brands, or an empty results array when the query is not a brand. Adult sites never appear in results.
An autocomplete in the browser
Use a publishable key (lh_pk_) in front-end code: it can search and load logos, and cannot spend lookups. Wait for a short pause in typing before each call: every search counts toward your monthly searches, whichever key sends it.
const KEY = "lh_pk_your_publishable_key";
let timer;
export function suggestBrands(query, onResults) {
clearTimeout(timer);
if (query.trim().length < 2) return onResults([]);
timer = setTimeout(async () => {
const url = new URL("https://brandidentityapi.com/v1/search");
url.searchParams.set("q", query);
url.searchParams.set("limit", "6");
const res = await fetch(url, { headers: { Authorization: `Bearer ${KEY}` } });
if (!res.ok) return onResults([]);
const { results } = await res.json();
onResults(results);
}, 200);
}Brandfetch alias
GET /v2/search/{name} answers with a bare array of the same results, the shape Brandfetch's search endpoint uses.