The Clearbit Logo API is gone. If you're reading this, you're probably staring at broken <img> tags, a deprecation warning you ignored too long, or a backlog ticket that finally made it to the top. Since December 1, 2025, every call to logo.clearbit.com returns nothing useful, and HubSpot has made it clear there's no coming back.
This guide covers exactly what you need to do in 2026: evaluate your options, pick the right replacement, and migrate your code, whether you're running a React dashboard, a Python enrichment pipeline, or a simple HTML email template.
Why Clearbit Killed the Logo API
Clearbit was acquired by HubSpot in late 2023. Over the following two years, HubSpot systematically retired Clearbit's free tools to consolidate everything under their Breeze Intelligence platform. The Logo API was the last to go.
Here's the full timeline:
| Date | What Shut Down |
|---|---|
| April 30, 2025 | Free Clearbit Platform, Weekly Visitor Report, TAM Calculator, Clearbit Connect |
| December 1, 2025 | Clearbit Logo API (logo.clearbit.com) |
The old endpoint was beautifully simple: https://logo.clearbit.com/stripe.com returned a logo image directly. No auth, no JSON parsing, no SDK. You could drop it into an <img> tag and forget about it.
That simplicity is exactly what made the shutdown painful. Thousands of apps had Clearbit URLs hardcoded in templates, components, and email HTML. If you haven't migrated yet, those are all broken images now.
The Alternatives Landscape in 2026
There are several services competing to replace Clearbit's Logo API. Here's an honest breakdown:
Logo.dev
Clearbit officially recommended Logo.dev as their successor. It works similarly to the old Clearbit endpoint: you construct a URL and get an image back. The catch? It requires an API key baked into the URL, which means exposing your key in client-side code. Logo.dev offers a free tier with limited requests and paid plans for higher volume.
Downsides: API key exposed in frontend code. Limited to logos only. Smaller coverage database.
Brandfetch
Brandfetch offers a comprehensive brand API with logos, colors, fonts, and guidelines. It's well-designed and has solid coverage. However, it's primarily an API-first product, meaning you need server-side calls to fetch logos, then serve them to your frontend.
Downsides: No CDN delivery mode. Higher price point. Requires server-side integration for every logo fetch.
Google Favicons
Some developers use https://www.google.com/s2/favicons?domain=example.com as a quick hack. It's free and requires no auth, but the images are low-resolution favicons (16x16 or 32x32), not actual brand logos. Fine for a browser extension, not for a production app.
Downsides: Low resolution. Not actual logos. No reliability guarantees. Google could shut it down anytime.
Logo Link by Context.dev
Logo Link is the closest thing to what Clearbit used to offer, but better. It's a CDN-based logo delivery service that works exactly like the old Clearbit pattern: construct a URL, drop it in an <img> tag, get a logo. The key difference is that it uses a public client ID instead of a secret API key, making it safe to use directly in frontend code.
<img src="https://logos.context.dev?publicClientId=your_id&domain=stripe.com" />No API calls. No backend proxy. No SDK. Logos served from a global CDN with 20ms average response times.
Why Logo Link Is the Best Clearbit Replacement
If you used Clearbit's Logo API for what most developers used it for, displaying company logos in a UI, Logo Link is the most natural migration path. Here's why:
1. Same Integration Pattern
Clearbit worked by constructing a URL and putting it in an <img> tag. Logo Link works the same way. The migration is literally a find-and-replace on your URL pattern.
Before (Clearbit):
<img src="https://logo.clearbit.com/stripe.com" alt="Stripe" />After (Logo Link):
<img src="https://logos.context.dev?publicClientId=your_id&domain=stripe.com" alt="Stripe" />2. Frontend Safe
Logo.dev and Brandfetch require secret API keys, which means you either expose your key in client-side code (bad) or build a backend proxy to fetch logos (extra work). Logo Link uses a public client ID that's designed to be embedded in frontend code. No secrets to leak.
3. Global CDN Delivery
Logos are served from edge locations worldwide. You're not waiting for an API server to process a request and return JSON. The image comes straight from the CDN, cached and optimized. Average delivery time is 20ms.
4. Always Current
Logo Link automatically fetches and updates logos. When a company rebrands, the new logo shows up without you changing a single line of code. No cache invalidation, no manual updates, no stale assets.
5. Beyond Just Logos
If you need more than logos, Context.dev's full API gives you brand colors, fonts, social profiles, screenshots, and more, all from a single platform. You can start with Logo Link for your frontend and expand to the full API when you need deeper brand data.
Step-by-Step Migration Guide
Step 1: Sign Up and Get Your Public Client ID
Create a free account at context.dev/signup. From the Logo Link dashboard, grab your publicClientId. No credit card required.
Step 2: Find All Clearbit References
Search your codebase for any reference to the old endpoint:
grep -r "logo.clearbit.com" --include="*.{ts,tsx,js,jsx,html,py,rb,go}" .Common places to check:
- React/Vue/Angular components
- Email templates (HTML, MJML, etc.)
- Server-side rendering logic
- Database seed files or fixtures
- Documentation and README files
Step 3: Replace the URLs
For simple HTML or template-based usage, it's a direct URL swap:
- <img src="https://logo.clearbit.com/${domain}" alt="Logo" />
+ <img src="https://logos.context.dev?publicClientId=your_id&domain=${domain}" alt="Logo" />For React components:
// Before
function CompanyLogo({ domain }: { domain: string }) {
return (
<img
src={`https://logo.clearbit.com/${domain}`}
alt={`${domain} logo`}
onError={(e) => {
e.currentTarget.src = '/placeholder-logo.png';
}}
/>
);
}
// After
const LOGO_LINK_ID = process.env.NEXT_PUBLIC_CONTEXT_DEV_CLIENT_ID;
function CompanyLogo({ domain }: { domain: string }) {
return (
<img
src={`https://logos.context.dev?publicClientId=${LOGO_LINK_ID}&domain=${domain}`}
alt={`${domain} logo`}
onError={(e) => {
e.currentTarget.src = '/placeholder-logo.png';
}}
/>
);
}For Python (email generation, reports, etc.):
# Before
def get_logo_url(domain: str) -> str:
return f"https://logo.clearbit.com/{domain}"
# After
LOGO_LINK_ID = os.environ["CONTEXT_DEV_CLIENT_ID"]
def get_logo_url(domain: str) -> str:
return f"https://logos.context.dev?publicClientId={LOGO_LINK_ID}&domain={domain}"For Go:
// Before
func getLogoURL(domain string) string {
return fmt.Sprintf("https://logo.clearbit.com/%s", domain)
}
// After
func getLogoURL(domain string) string {
clientID := os.Getenv("CONTEXT_DEV_CLIENT_ID")
return fmt.Sprintf("https://logos.context.dev?publicClientId=%s&domain=%s", clientID, domain)
}Step 4: Handle Email Templates
Email templates are the sneakiest place where Clearbit URLs hide. Since email clients don't execute JavaScript, you need the logo URL to resolve to an actual image, which is exactly what Logo Link does.
<!-- Before -->
<td>
<img src="https://logo.clearbit.com/{{company_domain}}" width="40" height="40" alt="Company Logo" />
</td>
<!-- After -->
<td>
<img src="https://logos.context.dev?publicClientId=your_id&domain={{company_domain}}" width="40" height="40" alt="Company Logo" />
</td>This works in every major email client (Gmail, Outlook, Apple Mail) because Logo Link returns an actual image from a CDN URL, just like Clearbit used to.
Step 5: Test and Deploy
Before pushing to production:
- Spot check a handful of domains in the browser by visiting the Logo Link URL directly
- Test your error handling with a nonsense domain to make sure your
onErrorfallback still works - Check email rendering by sending a test email through your provider
- Monitor 404 rates after deploying to catch any edge cases
Need More Than Logos? Use the Full API
Logo Link covers the most common Clearbit use case: displaying logos in a UI. But if your integration went deeper, or if you want to build richer experiences, Context.dev's full Brand API returns structured JSON with everything:
import ContextDev from 'context.dev';
const client = new ContextDev({
bearerToken: process.env.CONTEXT_DEV_API_KEY,
});
const result = await client.brand.retrieve({ domain: 'stripe.com' });
// result.brand.logos → Multiple logo variants (icon, wordmark, light, dark)
// result.brand.colors → Brand color palette
// result.brand.socials → Social media links
// result.brand.title → Company name
// result.brand.description → Company descriptionThe full API requires a secret API key and should be called from your server. It's ideal for:
- Onboarding flows that auto-populate company info from a domain
- CRM enrichment pipelines that store brand data in your database
- Programmatic theming where you style your app with a customer's brand colors
- Data pipelines that need structured brand data at scale
Official SDKs are available for TypeScript, Python, and Ruby.
Migration Checklist
Use this checklist to make sure you haven't missed anything:
- Sign up at context.dev/signup and get your public client ID
- Search codebase for all
logo.clearbit.comreferences - Replace URLs in frontend components
- Replace URLs in email templates
- Replace URLs in server-side code (reports, PDFs, etc.)
- Update environment variables with your new client ID
- Test with a variety of domains (popular brands, obscure startups, international companies)
- Test error handling with invalid domains
- Deploy to staging and verify everything renders
- Deploy to production and monitor for broken images
- Remove old Clearbit references from documentation and READMEs
Comparison Table: All Alternatives at a Glance
| Feature | Clearbit (Dead) | Logo Link | Logo.dev | Brandfetch | Google Favicons |
|---|---|---|---|---|---|
| Status | Shut down | Active | Active | Active | Unofficial |
| Integration | URL in img tag | URL in img tag | URL in img tag | API call + parse | URL in img tag |
| Auth | None | Public client ID | API key in URL | Secret API key | None |
| Frontend safe | Yes | Yes | No (key exposed) | No | Yes |
| Delivery | Image redirect | Global CDN | Image redirect | JSON API | Image redirect |
| Response time | ~100ms | ~20ms | ~100-200ms | ~300-500ms | ~50ms |
| Image quality | Medium | High | Medium | High | Very low (favicon) |
| Additional data | None | None (API available) | None | Colors, fonts | None |
| Pricing | Free (dead) | Free tier available | Free tier + paid | Paid | Free (unofficial) |
Frequently Asked Questions
Is logo.clearbit.com coming back?
No. HubSpot has fully retired the endpoint as part of their Breeze Intelligence strategy. There are no plans to bring it back.
Can I just use Google favicons instead?
You can, but you'll get 16x16 or 32x32 pixel favicons, not actual logos. It's fine for internal tools where quality doesn't matter. For anything customer-facing, you need a real logo API.
Do I need to change anything if I'm using Clearbit's paid enrichment API?
Clearbit's enrichment features have been absorbed into HubSpot's Breeze Intelligence. If you're on a paid plan, check with HubSpot about your migration path. This guide specifically covers the free Logo API.
How much does Logo Link cost?
Logo Link has a free tier that's generous enough for most small-to-medium projects. Check context.dev/pricing for current plans. There's no credit card required to get started.
Can I cache Logo Link URLs?
Logo Link URLs are served from a CDN and are already optimized for performance. You can use standard browser caching and CDN headers. However, unlike the full API, Logo Link does not permit storing or re-hosting the images, they must be served through the Logo Link URL so logos stay up to date.
The Clearbit Logo API had a good run, but it's done. The good news is that the replacement is better than the original. Sign up for Context.dev, grab your public client ID, and update your <img> tags. Most migrations take less than an hour.