two weeks into building my cold outreach pipeline, i've now scraped over 570 agency websites across 43 countries trying to extract contact emails. the results are wildly inconsistent by region, and i figured some of you might find the data interesting.
the method
dead simple python script: requests + regex. for each agency i try 3-4 URL paths (homepage, /contact, /contact-us, /en/contact) and extract anything matching an email pattern. then filter out false positives (sentry, cloudflare, schema.org, image filenames, generic placeholders).
total time to scrape one agency: about 3 seconds. total time to find agencies to scrape: that's the slow part.
hit rates by region (emails found / agencies attempted)
the biggest surprises
gmail addresses are everywhere in developing markets. not as a negative — agencies using info@agency.com vs agency@gmail.com didn't correlate with response quality at all.
/contact-us works better than /contact in english-speaking countries. non-english countries often use localized paths (/contacto, /kontakt, /en/contact).
about 15% of "emails" i extract are actually image filenames or CSS class names that happen to match the regex pattern. filtering these out is critical.
the best emails come from team/about pages, not contact pages. founders' direct emails on team pages have a much higher open rate than generic info@ addresses.
some countries have almost zero scrape-able agencies (laos, myanmar smaller cities) while others are saturated (melbourne alone has 50+ agencies with visible emails).
the filter list that saves hours
after scraping 570+ sites, my false positive filter has grown to 25+ patterns: sentry, cloudflare, googleapis, schema.org, .png, .jpg, .webp, hr@, jobs@, careers@, example.com, and a dozen more. without this filter, about 30% of "emails" would be garbage.
what i'd do differently
i started by guessing agency URLs from search results. that wasted hours — guessed URLs return 0 emails about 80% of the time. now i always websearch first for the real URL, then scrape. much higher hit rate.
if you're building any kind of outreach pipeline, the scraping part is actually the easiest part. finding the RIGHT agencies to scrape and writing emails they'll actually open — that's where the real work is.
the whole scraping + sending pipeline runs on python, cron, and a $0/mo linux server. happy to share the approach if anyone wants details.
The global accessibility angle is genuinely interesting data — the regional differences in "email in footer" culture are real.
A funny inversion I've noticed in the same exercise: the companies HARDEST to scrape are outbound agencies themselves. They know exactly what happens to a public mailbox, so it's forms and Calendly links all the way down. The industries EASIEST to scrape (local services, traditional B2B) are often the worst cold email targets — accessible ≠ receptive.
Which suggests a filter for anyone copying this approach: score prospects by fit first, accessibility second. An easy-to-find email at a bad-fit company is a bounce-risk with extra steps. 300 verified good-fit addresses beat 5,000 accessible ones.