Every company publishes its contact page. Almost nobody structures it.
Sales teams buy contact databases that were stale before the CSV finished exporting. Meanwhile, the company's own site states its email, phone and social handles outright — it just isn't shaped like a table.
The Website Contact Extractor takes seed URLs, does a light same-domain crawl (home, contact, about, footer links), and returns one consolidated row per domain.
{
"startUrls": ["https://example.io", "https://competitor.com"]
}
{
"domain": "example.io",
"emails": "hello@example.io, support@example.io",
"phones": "+44 20 7946 0000",
"socials": "linkedin.com/company/example-io",
"pagesVisited": "7"
}
Where it earns its keep
List enrichment: hand it 500 domains from a directory and get outreach-ready rows. Vendor verification: does the supplier's site list a real phone and a company social presence? Local services mapping: every plumber in a region, with actual contact channels instead of form-link URLs.
The honest limit: it extracts what sites publish. If a domain hides everything behind a form, you'll get empty fields — which is itself a useful signal about how that company treats inbound contact.
Try it: website contact scraper on Apify — one consolidated contact row per domain.