Blog

Get the Latest

News, tips and tricks

Open-Source Email Finder

Since launching Big Picture, we've been fortunate to land meetings with some really busy people, including executives at huge companies and founders who are building the next big thing.

For some of them, we had an "in." Somebody knew the right person and happily made the introduction.

But we weren't so lucky with others. We wanted to get in touch, but didn't have mutual connections. Nor did we have their email address, so contacting them directly wasn't an option.

How do we contact them?

Our first attempt at getting in touch was to try and send an email to the company's general inbox.

We would either fill out a form on the Contact Us page of the company's website or send a message to the general info@company... email if it was available.

I think only one or two companies actually got back to us. That method wasn't getting us anywhere.

On the rare occurrence we were able to find someone's actual email on the company website, our chances of getting in touch drastically increased.

We noticed that when emailing that person directly, they almost always opened the email and responded about 10% of the time.

So the key is finding the person's email address. What are some other methods to do this?

Email finding services

We then began looking into different strategies to acquire email addresses and discovered there are a few services that can do this. They generally provide a few free searches per month and afterwards charge a monthly fee.

That was a great starting point for us, but we quickly reached the limits of the service's free plan.

Being a bootstrapped startup and always trying to keep costs down, we were hesitant to pay for the service's premium plan. Plus I had acquired a rather large list of leads, and the cost to find emails for the list would be pretty expensive.

Being an engineer, I was curious. How are they actually finding these emails? What is involved tech wise?

After a bit of searching, I discovered it's actually really easy to build your own email finding program.

Let's build an email finder

I often work with Node.js these days and happened to come across a module called email-existence.

Basically it checks to see if an email exists by attempting to send an email to the supplied address.

Technically speaking, it tries to make a connection and if connected (the email exists) it cuts the stream before any data is sent (the email).

Awesome! We have a way to check if an email exists!

Next, if you think about it, most companies have the same email format for all of their employees. Usually something like:

  • john@company.com
  • john.smith@company.com
  • jsmith@company.com

So conceptually, if you could take a first / last name and a company domain then go through a list of all possible formats, there's a strong chance of finding that person's email.

With a bit of code, we had hacked together our own email finder within a few hours.

We've been using it internally for awhile now and has helped us find thousands of emails.

After several friends asked for the code, we figured it was a good idea to open source it. So we added a simple UI to make it easier to work with and now here's what it looks like!

Email finder screenshot

The code is on Github and you check out a live demo here. Note: it's hosted on a free Heroku instance, so it may not be available if it gets heavy traffic.

The caveat

This method of finding emails works great and is extremely accurate, but after using it a bit we found there is one issue.

When you check to see if an email exists you are more or less trying to send an email, but canceling before the actual email is sent. The problem is that the receiving email provider will detect this and after a while its spam filters will blacklist your IP address.

I learned this one the hard way and can no longer run this project from my apartment.

But there's an easy solution. Rotate your IP address.

The easiest way to do this is to use a proxy or to run the code on a hosting provider. This is pretty much what we've been doing. We run it against a list of contacts until it starts to fail, then move to a new IP address.

I can imagine a more elaborate setup that does this automatically, but we haven't had a chance to do that yet.

So the method isn't perfect, but it works. It has literally saved us thousands of dollars by enabling us to find email addresses ourselves.

We hope you find it useful!