Clearbit Logo API Is Dead: The 2026 Migration Guide for Developers

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:

DateWhat Shut Down
April 30, 2025Free Clearbit Platform, Weekly Visitor Report, TAM Calculator, Clearbit Connect
December 1, 2025Clearbit 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:

  1. Spot check a handful of domains in the browser by visiting the Logo Link URL directly
  2. Test your error handling with a nonsense domain to make sure your onError fallback still works
  3. Check email rendering by sending a test email through your provider
  4. 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 description

The 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.com references
  • 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

FeatureClearbit (Dead)Logo LinkLogo.devBrandfetchGoogle Favicons
StatusShut downActiveActiveActiveUnofficial
IntegrationURL in img tagURL in img tagURL in img tagAPI call + parseURL in img tag
AuthNonePublic client IDAPI key in URLSecret API keyNone
Frontend safeYesYesNo (key exposed)NoYes
DeliveryImage redirectGlobal CDNImage redirectJSON APIImage redirect
Response time~100ms~20ms~100-200ms~300-500ms~50ms
Image qualityMediumHighMediumHighVery low (favicon)
Additional dataNoneNone (API available)NoneColors, fontsNone
PricingFree (dead)Free tier availableFree tier + paidPaidFree (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.

Context at scale

Join 5,000+ businesses using Context.dev to enrich their products with structured web data.