Implementation guide
1
Get your client ID
You’ll need to create an account on our Developer Portal. Creating an account is quick and easy, and will give you access to your dashboard where you’ll find your client ID.
2
Make your first API call
Implement or run the code below to make your first API request.Authentication is done by passing your client ID as a query parameter.
3
Test and deploy
The Brand Search API is a free product. Before you deploy your application to a live environment, be sure to consult our rate limits and review our usage guidelines to ensure a smooth launch.
Usage guidelines
Authentication
Authentication
To use Brand Search API, you must include your client ID with every request.Adding your client ID provides reliable access, supports fair usage, and keeps consistent performance across all requests.Create a free account and access your client ID from the Developer Portal.To use Brand Search API, include your client ID with every request as shown below:
Hotlinking
Hotlinking
We require Brand Search API to be directly embedded in your user-facing applications.The API should be used directly as is, with all data fetched live and not altered or persisted. Your users should make requests to the API directly from their browsers.The logo image URLs provided by the Brand Search API must be hotlinked. Other data, such as brand names, should not be cached and should be used exclusively for building an autocomplete experience. Image URLs expire after 24 hours and must be refetched.For more information on the API’s availability, see our uptime status. We can provide custom SLAs for enterprise customers.If your use case requires more flexibility, please contact us for a custom setup.
Replicating Brandfetch
Replicating Brandfetch
You cannot replicate the core user experience of Brandfetch.The best way to ensure that your application doesn’t violate this guideline is by integrating Brandfetch into an existing app that offers more value than just the Brandfetch integration.Some examples:
- ✅ The Pitch integration helps their users autocomplete brand names to streamline logo search within Pitch’s editor. Without this integration, the app still has a lot of value to its users.
- 🚫 An unofficial Brand Search API that allows users to autocomplete brands. Without the API, the app has no content and no value to users.
Rate limits
Every plan includes a monthly Brand Search allowance: 500,000 requests per month on the free plan, and 1 to 5 million on paid plans. See the pricing page. These are soft limits, so exceeding yours does not block you straight away. Traffic that runs far beyond your allowance can eventually be refused with a429 carrying quota_exceeded.
Usage is counted per client ID. Every GET answered with a 2xx or 3xx status counts, whether it was served from the edge cache or freshly. Browser preflight requests, refused requests, and requests without a valid client ID do not count. Your month’s usage and every counted request are under Usage History in your developer dashboard.
To maintain platform reliability, two request throughput limits also apply:
- 200 requests every 5 minutes per IP address
- 6,000 requests every 5 minutes per client ID, counted across every address it is used from. Enterprise client IDs are exempt.
429 status code without an x-bf-error header; exceeding the per-client limit returns a 429 with x-bf-error: rate_limited. See Errors for how to tell a throughput block from the other reasons a request can be refused.
For enterprises, we provide custom solutions, including SLA agreements, custom terms, and flexible caching options to ensure optimal performance at scale. These plans are tailored to meet the needs of high-volume users.
Feel free to contact us to discuss the right plan for your use case.
Errors
When the Brand Search API refuses a request because of its client ID, its client ID’s throughput or your allowance, the response carries anx-bf-error header naming the exact reason, and a JSON body with the same code in error, a message written for a human, and a docs link. The header is exposed through CORS, so a browser caller can read either one.
The per-IP throughput limit under rate limits is enforced separately, before the client ID is looked at, so those
429 responses carry no x-bf-error header and no error field, only a short message. The presence of the header is what tells you the request was refused for one of the reasons below.When a search fails
A search that could not be answered returns503 with x-bf-error: temporarily_unavailable and a JSON body with a message. It never returns an empty array, so a 200 with [] always means no brand matched.
Retry after about 10 seconds. An identical request made sooner can get the same 503. A 503 does not count towards your Brand Search allowance.