Implementation guide
The Logo 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.1
Embed your logo
To avoid potential naming collisions between identifier types, you can use explicit type routes with the pattern
{type}/{identifier}.To embed a logo, simply use an img tag with the following src attribute:Without a type prefix, the API will auto-detect the identifier type by order (domain → ticker → isin → crypto).
2
Register an account and get your Client ID
Each request must include your unique client ID. This ensures your usage stays within fair limits and logos render reliably.To get your client ID, register for free from our Developer Portal.
3
Implement additional features
Beyond simply swapping out the base URL, Brandfetch’s Logo API offers powerful features to enhance your logo fetching experience:
- Logo types: Access not just logo icons, but also brand symbols and main logos.
- Theme variants: Access dark or light logos, display them on any background.
- Customizable sizing: Adjust the logo’s height and width to fit your needs.
- Smart fallbacks: Even when a logo isn’t available, you’ll get fallbacks.
-
Flexible identifiers: Query directly by domain (e.g.,
nike.com), Stock or ETF ticker (e.g.,NKE,QQQ), ISIN (e.g.,US6541061031), or Crypto symbol (e.g.,BTC,ETH).
Default icon
Get the brand’s default logo icon.PNG or JPG instead of WEBP
By default Logo API serves logos in the modern and highly efficient WebP format. You can use others formats by specifying the file extension in the URL.logo, symbol type variants support an additional svg format.
Logo sizing / Retina
Customize the logo’s dimensions by addingw (width) and h (height) query parameters to the URL. The ratio of the logo is always respected.
For Retina displays, double the size values for optimal display. e.g., for a 64x64 icon display, set h=128 and w=128.
Type variants
Request different types of logos by using thetype path parameter.
Available variants are: icon, symbol, and logo.
Dark and light themes
Ensure the logo looks great regardless of the background color of your application.Multiple fallbacks
Specify a fallback option to be used when the a logo is not available. See all fallbacks.Usage guidelines
Authentication
Authentication
To use Logo 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.Include your client ID in each request as shown in the example below:
Hotlinking
Hotlinking
We require logo links to be directly embedded in your applications.Embedding logo links directly within your HTML image tags guarantees that the logo remains up-to-date at all times. It also ensures a faster and more reliable implementation.If your use case requires caching, please contact us for a custom setup.
When embedding a logo link, HTTP requests must include the
Referer header
with the request origin. Your HTTP Referrer-Policy header must be set to one
of: origin, origin-when-cross-origin, strict-origin,
strict-origin-when-cross-origin (browser default), or unsafe-url.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 Typeform integration improves the user’s onboarding by presenting brand logos. Without this integration, the app still has a lot of value to its users.
- ✅ The Pitch integration brings brand logos inside Pitch’s editor to streamline the creation of presentations. Without this integration, the app still has a lot of value to its users.
- 🚫 A logo search that only returns logos from Logo API. Without the integration, the app has no content and no value to users.
- 🚫 An unofficial Logo API that allows users to access brand logos via Logo API. Without the API, the app has no content and no value to users.
Rate limits
We offer a fair use rate limit of 500,000 requests per month, which is designed to cover most small to medium applications. This is a soft limit and you won’t immediately be blocked if you exceed it. Traffic that runs far beyond your allowance can eventually be refused with a429 carrying quota_exceeded.
If your usage approaches this limit, we’ll send you a friendly heads-up so you can adjust your usage or explore an upgrade to an unlimited tier.
To maintain platform reliability, request throughput limits also apply:
- 1,000 requests every 5 minutes per IP
- 2,400 requests every 5 minutes per customer
x-bf-error header. See Errors for how to tell a throughput block from the other reasons a request can be refused. Let us know if your application requires higher throughput.
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 Logo CDN refuses a request, the response carries anx-bf-error header naming the exact reason. A Logo API URL usually lives inside an <img> tag, where no response body ever reaches your page, so read that header in your browser’s network panel.
403 responses also return a JSON body with an error code, a message written for a human, and a docs link. The other statuses are header-only. Some refusals are answered with a 302 redirect to our usage guidelines instead of an error status; inside an <img> tag, that renders as a broken image.
The throughput limits under rate limits are enforced separately, so those responses carry no
x-bf-error header. The presence of the header is what tells you the CDN refused the request for one of the reasons below.Once a request is accepted
Anything past the checks above reaches the image itself. None of these responses carry anx-bf-error header.
There’s no
4xx for an unsupported format or an out of range size either: an unrecognized format falls back to WebP, a w or h value that isn’t a positive integer is ignored, and an unrecognized fallback value becomes the default.