Skip to content
Docs page

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).

ParameterDescription
qRequired. A brand name (stripe) or a domain (stripe.com), up to 100 characters.
limitHow many results, from 1 to 20. Default 10.
bash
curl "https://brandidentityapi.com/v1/search?q=stripe&limit=5" \
  -H "Authorization: Bearer $BRAND_IDENTITY_API_KEY"

Response

200 OK · application/json
{
  "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
    }
  ]
}
FieldTypeDescription
brandIdstring | nullThe record's id, or null when the brand is not indexed yet.
namestringThe brand's name.
domainstringIts domain: pass it to the Brand API for the full record.
iconstringA small square icon from the logo CDN, ready for an img tag.
claimedbooleanWhether the owner has claimed the record.
qualityScorenumber | nullThe 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.

javascript
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);
}
Limits
Search shares your plan's per-minute limit with the rest of the API. Calls made without a key, such as this site's own demo, are limited to 60 a minute per visitor.

Brandfetch alias

GET /v2/search/{name} answers with a bare array of the same results, the shape Brandfetch's search endpoint uses.