finding verified email addresses for marketing agencies is the hardest part of cold outreach. here's my process for building a list of 798 contacts across 54 countries.
step 1: identify target agencies
search google for digital marketing agency [city] [country]. the first 2-3 pages give you 10-20 agency websites per city.
target cities with established agency scenes: london, sydney, new york, toronto, mumbai, singapore, dubai.
step 2: find emails on their websites
check these pages in order:
-
/contactor/contact-us -
/aboutor/team - homepage footer
use this regex to extract emails from page source:
import re
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
emails = re.findall(pattern, page_text)
step 3: filter garbage
raw regex catches image filenames and tracking pixels. filter out:
- anything containing .png, .jpg, .svg, .avif
- sentry, cloudflare, googleapis domains
- generic no-reply addresses
def is_valid_email(email):
junk = ['.png','.jpg','.avif','.svg','sentry','cloudflare','googleapis']
return not any(j in email.lower() for j in junk)
step 4: verify with a site scan
before emailing, scan their website for SEO issues. this gives you personalization data:
- missing alt text on images
- no meta descriptions
- broken heading hierarchy
- missing schema markup
referencing specific issues in your pitch gets 3-5x more replies than generic templates.
step 5: organize by geography
group contacts by country and city. this lets you:
- customize timezone-aware sending
- reference local market knowledge
- batch by region for A/B testing
the result
using this process over 2 weekends, i built:
- 798 verified agency contacts
- coverage across 54 countries
- email + website + city for each entry
get the data
- free 50-agency sample — verify quality before buying
- SEO scanner chrome extension — scan sites for personalization ($9)
- managed outreach service — we handle everything
Top comments (0)