Pass a domain, ticker, or company name. Get back a clean logo from a global CDN.
No sourcing, no hosting, no broken images.
100M+ companies · 30M+ requests/day · 80K+ developers · <50ms median · 500K free/month
Docs · Get an API key · Pricing · Changelog
- A URL is the integration. No SDK, no scraper, no image storage. Put the URL in an
<img>tag. - Works in any stack. It is an image, so it renders in HTML, React, iOS, Android, email, and spreadsheets.
- Fast everywhere. A global CDN answers in under 50ms at the median, from 150+ edge locations.
- Always current. 100M+ companies, refreshed daily. Rebrands show up without a code change.
- Five ways to look up a company. Domain, company name, stock ticker, crypto symbol, or ISIN.
- More than logos. Turn a domain into a full brand profile, or a company name into its domain.
| Product | What it does | Call |
|---|---|---|
| Logo API | Logo images by domain, name, ticker, crypto, or ISIN | GET img.logo.dev/{domain} |
| Search API | Find a company's domain from its name, with typeahead | GET api.logo.dev/search?q= |
| Brand API | Logo, brandmark, colors, description, and socials as JSON | GET api.logo.dev/brand/{domain} |
| Transaction API | Turn a card transaction string into a merchant and its brand. Private beta. | POST api.logo.dev/transaction |
The Logo API takes your publishable key (pk_) and is safe in a browser. The REST APIs take your secret key (sk_) and belong on a server. Both keys are on your dashboard.
Sign up for a free key, then pick what you need.
<img src="https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY" alt="Stripe logo" />Swap stripe.com for any domain. That is the whole integration.
React, cURL, Python
// React. In Next.js, read the key from process.env.NEXT_PUBLIC_LOGO_DEV_TOKEN.
function CompanyLogo({ domain }) {
return (
<img
src={`https://img.logo.dev/${domain}?token=LOGO_DEV_PUBLISHABLE_KEY`}
alt={`${domain} logo`}
/>
);
}# cURL: save a 128px PNG
curl "https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&format=png" --output stripe.png# Python
import requests
def get_company_logo(domain: str) -> bytes:
url = f"https://img.logo.dev/{domain}?token=LOGO_DEV_PUBLISHABLE_KEY"
return requests.get(url).contentMore stacks (Next.js, Vue, Ruby, PHP, Swift, Kotlin, Google Sheets, Excel) are in the docs.
| Lookup | URL |
|---|---|
| Domain | img.logo.dev/stripe.com |
| Company name | img.logo.dev/name/stripe |
| Stock ticker | img.logo.dev/ticker/AAPL |
| Crypto symbol | img.logo.dev/crypto/BTC |
| ISIN | img.logo.dev/isin/US0378331005 |
Every lookup takes the same parameters:
| Parameter | Values | Default |
|---|---|---|
size |
1 to 800 pixels | 128 |
format |
jpg, png, webp, or svg (Enterprise) |
jpg |
theme |
auto, light, or dark |
auto |
retina |
true renders at 2× the size |
false |
greyscale |
true returns a black-and-white logo |
false |
fallback |
monogram, or 404 to handle a missing logo yourself |
monogram |
curl --header "Authorization: Bearer LOGO_DEV_SECRET_KEY" "https://api.logo.dev/brand/sweetgreen.com"Response
{
"name": "sweetgreen",
"domain": "sweetgreen.com",
"description": "Simple, seasonal, healthy salads and grain bowls made in-house from scratch.",
"socials": {
"instagram": "https://www.instagram.com/sweetgreen/",
"twitter": "https://x.com/sweetgreen"
},
"logo": "https://img.logo.dev/sweetgreen.com?token=LOGO_DEV_PUBLISHABLE_KEY",
"brandmark": "https://img.logo.dev/brand/sweetgreen.com/…?token=LOGO_DEV_PUBLISHABLE_KEY",
"colors": [
{ "hex": "#e4ff55", "r": 228, "g": 255, "b": 85 },
{ "hex": "#0a4b2b", "r": 10, "g": 75, "b": 43 }
]
}Abridged. All fields are in the Brand API docs.
curl --header "Authorization: Bearer LOGO_DEV_SECRET_KEY" "https://api.logo.dev/search?q=notion"Response
[
{ "name": "Notion", "domain": "notion.com", "logo_url": "https://img.logo.dev/notion.com?token=…" },
{ "name": "Notion Capital", "domain": "notioncapital.com", "logo_url": "https://img.logo.dev/notioncapital.com?token=…" }
]This repo is the official Logo.dev shadcn/ui registry. Add production-ready logo components to your app with one command:
npx shadcn@latest add https://www.logo.dev/r/logo.json| Component | What you get |
|---|---|
logo |
A logo that never breaks. Five lookup types, retina srcSet, dark-mode variants, and monogram or initials fallbacks. |
logo-avatar |
A logo in a shadcn Avatar, with an initials fallback. For CRM rows and transaction feeds. |
brand-search |
Company autocomplete on the Search API, with a Next.js route that keeps your secret key on the server. |
logo-wall |
A customer logo grid from a list of domains, grey until hover. |
attribution |
The link free plans show in production. |
logo-lib |
The typed URL builder under all of the above. |
The CLI adds the key variables to .env.local. The components work in Radix and Base UI projects. You can also install from this repo, pinned to a branch, tag, or commit: npx shadcn@latest add logo-dev/logo-api/logo. Full guide: shadcn/ui components.
Developing the registry
pnpm install
pnpm test # URL builder and registry tests
pnpm typecheck
pnpm build # shadcn build → r/*.json (committed; CI checks it's in sync)
pnpm validate # shadcn registry validate
pnpm smoke # dry-run `shadcn add` of every item from the built r/
STYLE=base-nova pnpm smoke # the same, into a Base UI project
scripts/smoke-install.sh url https://www.logo.dev/r # through the live URL (runs daily in CI)Component sources live in registry/new-york/. An item that depends on another of our items names it in the GitHub form (logo-dev/logo-api/logo), never a bare name (that means the built-in shadcn item) or a www.logo.dev URL. components/ui/ holds vendored shadcn primitives used only for typechecking. Consumers get those from ui.shadcn.com.
| Build with | Spreadsheets and slides |
|---|---|
| Next.js · shadcn/ui · v0 · Lovable · Bolt | Google Sheets · Excel · PowerPoint |
Clearbit's Logo API shut down on December 8, 2025. If your app still points at logo.clearbit.com, its logos are broken.
We are the team that built the original Clearbit Logo API, and Clearbit and HubSpot recommend Logo.dev as the replacement. Swap the base URL and add a token. Your parameters keep working.
- https://logo.clearbit.com/stripe.com
+ https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEYFull guide: Migrating from Clearbit. Coming from Brandfetch? See that guide.
"We built logo enrichment at Clearbit because developers needed it. Logo.dev is what I wish we could have built. Comprehensive, fast, and they actually keep the logos updated. Clear upgrade."
Alex MacCaw, Founder, Clearbit
Commercial use on the free plan needs a visible link back. Personal projects and paid plans don't. Add this wherever you show logos:
<a href="https://logo.dev">Logos provided by Logo.dev</a><a href="https://logo.dev"><img src="https://raw.githubusercontent.com/logo-dev/logo-api/main/assets/powered-by-logo-dev.svg" alt="Powered by Logo.dev" /></a>Placement rules: Attribution.
Is it free? Yes. The free plan includes 500K logo requests a month. See pricing.
What happens when a logo isn't found?
You get a generated monogram. Pass fallback=404 to get a 404 and show your own fallback instead.
Can I use the logos in my README or docs? Yes. Every logo is an image URL, so it renders in Markdown. Add the attribution link on the free plan if the use is commercial.
How do I report a wrong logo? Open an issue or request an update. Most corrections ship within 24 hours.
- Documentation: API reference and guides
- Get an API key: free, no credit card
- Pricing: free and paid plans
- Dashboard: keys and usage
- Status: uptime and incidents
Found a wrong logo, hit a bug, or want a feature? Open an issue. We triage every one.
MIT © Logo.dev