It All Started With An Idea
Open-source tool · Local business lead discovery

Business Discovery Engine: local business lists from public data

The engine finds local businesses in public directories, visits their websites for contact details and social links, and writes each batch to Google Sheets as it runs. It works from public data only.

Business Discovery Engine on desktop
Business Discovery Engine on a phone
Tool
Business Discovery Engine v6.1
Built
Feb 2026
Code
Public on GitHub
Stack
Python, Google Sheets API, DNS MX lookups, WHOIS
Data
Public sources only

The idea

Building a list of small businesses for outreach usually means buying data from a broker. The lists are often stale and say little about each business.

We wanted a list built from what businesses publish themselves, with each record showing where its data came from.

The work

How we built it, step by step

  1. Planned the coverageVersion 6.1 rotates through 54 cities in 5 states (AZ, NV, OH, ID, WA) and 65 business categories.
  2. Pulled from 4 public sourcesDiscovery draws on Yellow Pages, Yelp, BBB and Google Maps listings.
  3. Found each websiteIt searches DuckDuckGo and Google for the business site, then crawls the homepage and the contact, about and team pages.
  4. Extracted contact details9 extraction methods pull contact details from those pages. It infers likely email patterns such as first.last@ and checks that the domain accepts mail through MX records.
  5. Added social links and domain ageIt records Facebook, Instagram, LinkedIn and X profiles and looks up domain age through WHOIS.
  6. Streamed results to Google SheetsEach batch is pushed to Google Sheets as it finishes, with one tab per state and a live dashboard.

What it does

  • Round-robin discovery across 54 cities and 65 categories
  • Yellow Pages, Yelp, BBB and Google Maps sources
  • Website crawl for contact pages
  • Email pattern inference with MX checks
  • Social profile links
  • WHOIS domain age
  • Live Google Sheets output

How people find it

  • Hosted page on ahmeego.com
  • Public Python source on GitHub
  • CLI with Google Sheets service-account output
Questions

Questions people ask about this work

How do I build a list of local businesses by city and category?

Pull listings from public directories for each city and category, then remove duplicates and add website details. The engine does this across 54 cities and 65 categories and writes the results to Google Sheets.

How do I find a small business's contact page or email?

Find the business website, then check the homepage, contact, about and team pages. The engine crawls those pages with 9 extraction methods and records what each business publishes.

How do I check if an email domain can receive mail?

Look up the domain's MX records. If there are none, the domain can't receive email. The engine runs this check on every domain it finds.

Services in this project