The Brand Object

Logo.dev Brand API

The request and full response of Logo.dev's Brand API for linear.app: a logo and brandmark on links that expire, colors in hex and OKLCH, and billing.

Request
GET https://api.logo.dev/v2/brands?domain={domain}
Context
Observed: read from the public website of the company
Auth
Authentication is a secret key (sk_...) sent as a bearer token, called from a server. source, read 11 November 2026
Billed
Logo.dev bills brand, brandmark, and logo requests once per brand domain, per route, per 24 hours. Repeats in that window are free. source, read 11 November 2026
Plans
As of 11 November 2026, Logo.dev has a free Community plan, which needs a visible "Logos provided by Logo.dev" link in commercial projects, and its cheapest paid plan, Startup, is $50 a month billed monthly or $400 a year. source, read 11 November 2026
Over MCP
The MCP tool for this route is brand, which mirrors GET /v2/brands and GET /v2/brands/{id}. The logo and brandmark tools are separate. source, read 11 November 2026
Sample
linear.app, requested 11 November 2026

One GET with a domain returns a short profile. The profile has the name, a one-line description, social links and two colors. It also has the logo, the brandmark and social banners as signed links, and these links stop working about one day later. Of the responses on this site, it is the smallest. It also gives the most detail about its files. Each file has its source size, its format and a blurhash, which is a short code for a blurred preview image.

The request

curl "https://api.logo.dev/v2/brands?domain=linear.app&nosubscribe=true" \
  -H "Authorization: Bearer $LOGO_DEV_SECRET_KEY"

Use the secret key (sk_…) from a server. Send exactly one identifier: domain, ticker, isin, crypto or name. If webhooks are on for an account, a lookup subscribes you to the changes of that brand. nosubscribe=true stops that subscription.

The response

GET /v2/brands?domain=linear.appLogo.dev Brand API
{
"data": {
"name": "Linear",
"description": "Linear is a product development platform for …",
"indexed_at": "2026-09-21T03:13:20.59294Z",1When Logo.dev last refreshed it.
"colors": [{ "hex": "#000000", "oklch": { "l": 0, … } }, …],2Each color also in OKLCH.
"brandmark": {
"url": "https://img.logo.dev/assets/U-5Jfqg…",
"source": { "width": 400, "height": 100, "format": "svg" },
"expires_at": "2026-11-12T19:00:00Z"3About one day. Store the file, not the link.
},
"social_banners": [{ "source": { "width": 1200, … } }]
}
}

OKLCH is a color format based on human vision. The full response is in /data.json under responses.logo-dev-brand-api, and its links no longer work.

What is not in it?

  • Voice, positioning, type and rules are not in it.
  • How often Logo.dev refreshes a brand is not in it. Logo.dev does not publish this. indexed_at shows the last refresh, and brand.updated webhooks report changes.

Empty and failed responses

Status What it means Charged
202 Logo.dev is still indexing the brand (status: not_indexed). Retry after 30 seconds, and stop after 5 minutes No
404 No brand matches (status: not_found) No
400 A parameter is missing or malformed Not stated
401 The key is missing or wrong, or it is a publishable key Not stated
402 Not enough credits. A retry does not help Not stated
403 The identifier type is not enabled, or the account is suspended No
429 Too many requests in one minute, or too many open at once Not stated

Plans

As of 11 November 2026, Logo.dev has a free Community plan. On that plan, commercial projects need a visible "Logos provided by Logo.dev" link. The cheapest paid plan, Startup, is $50 a month, or $400 a year. Logo.dev bills each brand once per route per 24 hours. Repeat lookups on the same day, 202s, 404s and downloads from the image links are not billed again. The Credits-Charged header tells you if Logo.dev billed a call. See Logo.dev's pricing page. Over the Model Context Protocol (MCP), the tool is brand, on mcp.logo.dev.

Storing the files

The Logo.dev docs say that you can store anything that the API returns and serve it from your own servers. They also say to save the etag of each image. A new link or a new expires_at does not mean that the image changed.

Last updated 11 November 2026