How to enrich email lists with company and contact details using Clearbit APIs

You’ve got a list of email addresses, but not much else. Maybe you’re hunting for leads, or trying to personalize outreach. Either way, you need more context—like company names, job titles, or even LinkedIn profiles. That’s where tools like Clearbit come in. Their APIs can fill in the blanks, turning a plain email list into something actually useful.

This guide is for anyone who wants to enrich email lists the right way, without getting bogged down in marketing fluff or over-complicated setups. We’ll walk through the practical steps, show you what works (and what doesn’t), and share some real-world tips to keep things smooth.


1. Know What You’re Trying to Get

Before you start plugging in APIs, decide what "enrichment" actually means for you. Some folks just want company names. Others want everything: job titles, social profiles, funding info, you name it.

Ask yourself: - What do I really need? More data isn’t always better. Every extra field is more stuff to clean, store, and keep private. - Will I actually use this info? If you’re not going to personalize emails by job title, don’t bother adding it.

Pro tip: Start with the basics (company domain, company name, maybe job title). You can always enrich more later.


2. Get Access to Clearbit APIs

You’ll need a Clearbit API key. Here’s how you do it: 1. Sign up for a Clearbit account. They offer a free trial, but serious usage will cost you. 2. Head to your dashboard and find your API key. Guard it like you would a password—if it leaks, someone else can rack up charges on your account.

What does Clearbit offer? - Person API: Returns details about a person based on their email. - Company API: Looks up info about a company by domain. - Enrichment API: Combines both, but you’ll usually start with the Person API for emails.

Heads up: If you’re thinking about bulk enrichment, know that Clearbit doesn’t love it when folks hammer their APIs with massive lists. Their terms of service (and rate limits) are worth a quick read.


3. Prep Your Email List

Don’t just feed your raw list into the API. A little prep saves headaches: - Clean up duplicates and obvious junk (like test@ or noreply@ addresses). - Validate email formats. Use a regex or a tool like NeverBounce or ZeroBounce. - Decide on batch size. Clearbit rate limits will slow you down if you try to enrich 50,000 emails overnight.

Example: csv email alice@example.com bob@company.com carol@startup.co

Stick to CSV or plain text for sanity’s sake.


4. Make Your First Enrichment Request

Let’s get practical. Here’s how you’d look up info on a single email using Clearbit’s Person API.

Example in Python:

python import requests

CLEARBIT_API_KEY = 'your_api_key'

def enrich_email(email): response = requests.get( 'https://person.clearbit.com/v2/people/find', params={'email': email}, auth=(CLEARBIT_API_KEY, '') ) if response.status_code == 200: return response.json() elif response.status_code == 404: return None # No match found else: raise Exception(f"Error: {response.status_code} - {response.text}")

result = enrich_email('alice@example.com') if result: print(result['name']['fullName'], result.get('employment', {}).get('name')) else: print("No details found for this email.")

What you get back: - Name, location, LinkedIn, Twitter - Company info (name, domain, industry, size) - Title, seniority, and more (if they can find it)

What you don’t get: If an email isn’t publicly tied to a person, you’ll get nothing. Don’t expect magic.


5. Scale Up: Enriching a Whole List

Looping over a list is simple, but you need to be careful about: - Rate limits: Clearbit’s free tier is stingy. Even paid plans limit requests per minute. - Cost: Each lookup costs money. Blasting thousands of unknown emails can get expensive, fast. - Failures: Not every email will return data. Plan for blanks.

Example: Batch enrichment with delays

python import time import csv

emails = [] with open('emails.csv') as f: reader = csv.DictReader(f) for row in reader: emails.append(row['email'])

results = [] for email in emails: try: data = enrich_email(email) results.append({'email': email, 'data': data}) except Exception as e: results.append({'email': email, 'data': None, 'error': str(e)}) time.sleep(1.5) # Respect rate limits

Save results to a new CSV

with open('enriched_emails.csv', 'w', newline='') as f: writer = csv.DictWriter(f, fieldnames=['email', 'data']) writer.writeheader() for row in results: writer.writerow(row)

Pro tips: - If you’re hitting lots of 404s, clean your list more or lower your expectations. - Don’t try to parallelize requests unless you really know what you’re doing (and have the rate limits to match).


6. Get Company Details (Even When Person Data Fails)

Sometimes you don’t find a contact, but you can still get company info by looking up the domain.

How to use the Company API:

python def enrich_company(domain): response = requests.get( f'https://company.clearbit.com/v2/companies/find', params={'domain': domain}, auth=(CLEARBIT_API_KEY, '') ) if response.status_code == 200: return response.json() else: return None

company = enrich_company('example.com') if company: print(company['name'], company['metrics']['employees'])

How to get the domain from an email: python def get_domain(email): return email.split('@')[-1]

When to use this: If you can’t find a person, use the domain part of the email to look up the company. At least you’ll know who they work for (most of the time).


7. Make the Data Useful

Now you’ve got a pile of enriched data. Don’t let it rot in a spreadsheet.

  • Decide what to keep: Most people don’t need 50 columns of data. Pick what matters (company name, job title, LinkedIn URL).
  • Respect privacy: Don’t get creepy. Just because you have someone’s Twitter doesn’t mean you should use it.
  • Integrate with your tools: Use Zapier, Airtable, or your CRM’s import to actually use the data.

Pro tip: Keep a “source” column so you know which entries were enriched versus which were just guessed.


8. What Works, What Doesn’t, and What to Ignore

What works well:

  • Enriching B2B emails with company domains (e.g., bob@company.com).
  • Getting company info even if personal data is missing.
  • Filling in the basics for personalization.

What doesn’t:

  • Personal emails (Gmail, Yahoo) rarely return much.
  • Catch-all or generic addresses (info@, sales@) are usually dead ends.
  • Enriching huge lists cheaply—Clearbit is not a budget tool.

Ignore:

  • “Confidence scores” that promise too much. If the data looks off, it probably is.
  • Over-enrichment. More data is more risk, more cost, and more hassle.

9. Alternatives, Gotchas, and Final Thoughts

Alternatives: There are other enrichment tools (like Hunter, Apollo, or ZoomInfo). They have pros and cons, but Clearbit is developer-friendly and has decent coverage for B2B.

Gotchas: - Clearbit can change pricing or limits. Don’t build your whole workflow around an API you don’t control. - Legal stuff: If you’re in the EU or handling personal data, read up on GDPR. - Not all data is fresh. Some entries are out of date—double check before firing off that “Congrats on your new job” email.


Keep It Simple and Iterate

Don’t overthink it. Start by enriching a small sample. See if the info actually helps you. If it does, scale up. If not, tweak your approach or try a different tool. Complicated enrichment setups usually just create more work. Stick to the basics, focus on what’s useful, and keep your process as simple as possible. That’s how you turn a boring email list into something you can actually use.