Lead Gen / CRM / Contact Data
Website Contact Extractor for B2B Lead Enrichment
Turn company domains into CRM-ready contact rows with emails, phones, social profiles, source URLs, and practical QA fields.
What this pipeline does
This guide starts with a plain list of company domains and turns it into a lead enrichment table. The Website Contact Extractor checks public pages such as home, contact, about, imprint, legal, and team pages, then returns the contact details it found with the page that proved each result.
The useful part is not just finding an email. A good enrichment row keeps enough context for a sales or RevOps team to trust it: source URL, contact-page URL, phone fields, social profiles, address hints, and optional tech-stack signals.
Best first run
Start with five domains from a list you already know. Keep verification and AI enrichment off until the basic crawl is healthy.
{
"domains": ["example.com", "python.org"],
"maxWebsites": 5,
"maxPagesPerSite": 5,
"includeSubpages": true,
"detectTechStack": true,
"verifyEmails": false
}
Review the returned rows before scaling. If the actor returns no data for a domain, check whether the company publishes contact details at all before treating it as a crawler problem.
CRM fields to keep
{
"domain": "example.com",
"emails": ["sales@example.com"],
"phones_validated": [
{
"e164": "+14155550100",
"country": "US",
"valid": true
}
],
"social_profiles": {
"linkedin": "https://www.linkedin.com/company/example"
},
"contact_page_url": "https://example.com/contact",
"source_url": "https://example.com/contact"
}
For CRM import, map domain to the account, emails to candidate contacts, phones_validated to phone fields, and source_url to a QA field. That last field matters. It gives your team a direct way to check where the data came from.
When to verify emails
Run mailbox verification only on domains that produced useful contacts. Verification costs more than basic extraction, so the practical workflow is two-pass: first find contacts, then verify the smaller set you may actually email.
Use a lead_status or enrichment_status field in your CRM so the importer can separate clean rows from partial rows. Partial data is still useful when it contains a phone number, LinkedIn page, or contact form URL.
Deployment notes
Schedule the actor for stale accounts rather than every account every day. Weekly or monthly refreshes are usually enough for B2B lead enrichment. Keep a small manual sample in every batch so you can compare new output against pages you have already checked.