Skip to main content
Brand, part of the Logo.dev API, turns one identifier into a brand’s full public identity: its name, description, colors, social profiles, logo, brandmark, and banners. You already hold these identifiers. They arrive in work emails at signup, sit on CRM records, and appear in portfolios as tickers. One request replaces the crawler, parsers, and image processing you would otherwise run and re-run to catch rebrands. Send your secret key and exactly one identifier to GET /v2/brands:
The response looks like:
Look up a brand lists every field. Key your records on data.id, not on the domain. A brand keeps its id when its domain changes, and GET /v2/brands/{id} fetches it again by that id.

Look up a brand by any identifier

Send exactly one identifier. Each lookup page covers how Logo.dev reads that identifier: The API reference also lists merchant, for card-statement descriptors. It is not enabled for any account yet and returns 403. To identify a merchant today, use Transaction. GET /v2/brands returns at most one brand, and only a 200 carries one. To show a list of candidates first, use Search.

Handle each status

A first lookup of a brand Logo.dev has not indexed yet returns 202, and the brand is usually ready within a minute. See not found vs. still indexing. Set your HTTP client timeout to at least 15 seconds, because Logo.dev can prepare a brand’s assets at request time. On serverless platforms, a default function timeout such as Vercel’s maxDuration can end the request first.

Automatic subscriptions

If webhooks are on for your account, a lookup also subscribes the account to the brand’s update webhooks. Add nosubscribe=true to skip that. metadata.subscription reports what the lookup did. status is subscribed when the account is subscribed to the brand. Your plan caps the number of subscriptions. At the cap, a lookup of a new brand does not subscribe the account: status is quota_exceeded, and message gives the reason. The lookup is answered and billed as usual.

Get only the logo or the brandmark

GET /v2/brands/logo and GET /v2/brands/brandmark return one image as JSON, without the rest of the brand. They take the same identifiers as GET /v2/brands and never subscribe you to the brand:
A brand that is ready but has no image of that kind returns 404, and the request is still billed. To show a logo on a page, you don’t need these routes. The Logo.dev CDN serves logo images with a publishable key.

Images

Every image, inside a brand or on its own, has the same fields: Download the images you need and host them yourself. Save each image’s etag with your copy. When you fetch the brand again, download only the images whose etag changed. A new url or expires_at alone does not mean the image changed. The signature in a download URL is the credential, so send no key with it. Add these query parameters to format the download. They do not change source. A url with no parameters downloads a 128-pixel JPG, not the source file. To keep a large copy with transparency, add ?size=800&format=png. Downloads from these URLs do not count as CDN requests.

Resolution

metadata.resolution describes how your identifier reached the brand. It is about the request, not the brand. The same identifier can reach a different brand later if its match changes. Subscriptions follow brand ids, so they do not move with it.

Authentication and plans

Brand takes your secret key (sk_...) as a bearer token. Call it from your server, and keep the key out of client code and git. Lookups spend API credits from your plan’s monthly grant, then from prepaid API credits. See API credits for how billing works, including when a repeat lookup is free, what each request costs for the cost of each route, and out of API credits for the 402 response. See the pricing page for what each plan includes.

Next steps

Look up a brand

Every parameter, field, and status code.

Webhooks

Get told when a brand you use changes.

Migrate from Brandfetch

Map each Brandfetch Brand API field to Logo.dev.

Onboarding personalization

Brand a signup flow from a work email.