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.


- 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.
How we built it, step by step
- Planned the coverageVersion 6.1 rotates through 54 cities in 5 states (AZ, NV, OH, ID, WA) and 65 business categories.
- Pulled from 4 public sourcesDiscovery draws on Yellow Pages, Yelp, BBB and Google Maps listings.
- Found each websiteIt searches DuckDuckGo and Google for the business site, then crawls the homepage and the contact, about and team pages.
- 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.
- Added social links and domain ageIt records Facebook, Instagram, LinkedIn and X profiles and looks up domain age through WHOIS.
- 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 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
Related projects

ARGUS
ARGUS gives a social media profile or post a 0 to 100 authenticity score from image, text, behavior and network signals.
Marketing Analytics Auditor
The auditor scans a page for 10 marketing tags and consent setup, audits a GA4 property through the Admin API and writes the code to fix what it finds.
backlinks-disavow
backlinks-disavow is a Node.js command line pipeline that builds a Google disavow file from live checks on each domain instead of toxicity scores alone.
Built and written up by John M. Williams, founder of It All Started With An Idea in Queen Creek, AZ. 15+ years and $350M+ in managed ad spend.