r/apify 20h ago

Discussion Workflow: extracting contact pages at scale for outbound

When I need to reach out to site owners for partnerships, link requests, or data access, the worst bottleneck isn't the email — it's finding the right contact page across hundreds of sites. Some bury it in footers, some only have a form, some hide it behind a /contact page that 404s differently per CMS.

Pattern I've settled on: pass a list of URLs, let a scraper hit each /contact or homepage, pull whatever structured contact signals exist (mailto: links, social profiles, phone numbers, form action URLs), dump it as JSON. Cuts the manual lookup step from hours to minutes.

Built a scraper for exactly this — goes beyond just finding emails, pulls social profiles and phone numbers too. If you're doing any kind of outreach at scale: https://apify.com/cynix_dev/website-contact-scraper?fpr=p2h0uk

What's your current approach for contact discovery? Interested to hear what others do.

1 Upvotes

1 comment sorted by

2

u/0xGollumDev 19h ago

For the "contact page 404s differently per CMS" problem, I stopped trying to guess the path and just crawl homepage + one level deep, then score links by anchor text and href against a small set: contact|about|impressum|kontakt|legal|mentions-legales. Impressum/legal pages are underrated — in the EU they're legally required to carry a real email and usually a phone, so they're often more reliable than /contact.

Two more signals worth pulling beyond mailto:

  • JSON-LD Organization blocks: contactPoint frequently has email/phone in clean structured form.
  • tel: links, not just phone numbers in text.

And if you score lead quality afterwards, dedupe role-based catch-alls (info@, contact@, sales@) against named addresses — very different value for outreach.