Website Email Extractor & Contact Finder: Email, Phone, Social avatar

Website Email Extractor & Contact Finder: Email, Phone, Social

Pricing

from $1.60 / 1,000 website with contacts

Go to Apify Store
Website Email Extractor & Contact Finder: Email, Phone, Social

Website Email Extractor & Contact Finder: Email, Phone, Social

Enrich domains with emails (free MX/syntax validity check), phones, LinkedIn/X/Facebook/Instagram, company name, description, address and tech stack. One deduplicated row per company. $2 per 1,000 sites with contacts; empty sites free.

Pricing

from $1.60 / 1,000 website with contacts

Rating

0.0

(0)

Developer

DataDesk

DataDesk

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Website Email Extractor & Contact Finder: Emails, Phones, Social Links (+ Company Data)

Enrich a list of domains with contact data. Paste company domains and get one clean, deduplicated row per company: emails (each with a free validity check), phone numbers, LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub and WhatsApp, plus company name, description, address and tech hints (CMS, e-commerce, CRM, analytics, chat). Good for B2B lead generation, CRM enrichment, sales prospecting and AI agents.

Email finder and extractor from websites · extraer correos y teléfonos de sitios web · extrair e-mails e telefones de sites.

Quick start: paste domains, click Run (all fields optional)

{
"websites": ["stripe.com", "https://www.python.org", "basecamp.com"],
"maxPagesPerWebsite": 6,
"validateEmails": true
}

With an empty input it enriches 5 sample domains in a few seconds.

Output example (real run, 2026-10-21, calendly.com, shortened)

{
"domain": "calendly.com",
"companyName": "Calendly",
"companyDescription": "Calendly connects and simplifies all of the work around meetings, from scheduling, payments, and meeting prep to notetaking, contact management, and follow-up.",
"primaryEmail": "andrija.djuric@calendly.com",
"emails": [
"andrija.djuric@calendly.com",
"callie@calendly.com",
"jennifer.garcia@calendly.com",
"thomas.nguyen@calendly.com"
],
"emailChecks": [
{
"email": "andrija.djuric@calendly.com",
"status": "deliverable_domain",
"syntaxValid": true,
"domainHasMx": true,
"mxHost": "aspmx.l.google.com",
"isRoleBased": false,
"isDisposable": false,
"matchesWebsiteDomain": true,
"isFreeProvider": false
},
"... one entry per email"
],
"phones": [],
"linkedin": [
"https://www.linkedin.com/company/calendly",
"https://www.linkedin.com/company/calendly/life/lifeatcalendly"
],
"twitter": [
"https://x.com/calendly"
],
"facebook": [
"https://www.facebook.com/Calendly"
],
"instagram": [
"https://www.instagram.com/calendly"
],
"youtube": [
"https://www.youtube.com/c/Calendly"
],
"techHints": [
"Cloudflare",
"Google Tag Manager"
],
"language": "en",
"pagesCount": 6
}

What does it extract?

FieldDescription
companyName, companyDescription, address, logo, language, foundingDate, employeesHintFrom schema.org Organization data, Open Graph and meta tags
emails, primaryEmailCompany-domain emails first. The primary email prefers a valid contact inbox (info@, contact@, hello@, sales@). No-reply addresses are excluded
emailChecksPer email: status (deliverable_domain = domain has MX servers, no_mx_a_record_only), mxHost, isRoleBased, isDisposable, isFreeProvider, matchesWebsiteDomain
phones, primaryPhoneNormalized to digits (E.164 style when the site gives the international prefix)
linkedin, twitter, facebook, instagram, youtube, tiktok, github, whatsappProfile URLs (share buttons ignored)
techHintse.g. WordPress, Shopify, HubSpot, Intercom, Google Analytics, Stripe, Next.js, Cloudflare (about 45 signatures)
pagesVisited, pagesCount, errorAudit trail

The email check is a signal, not a guarantee: it confirms the address is well formed and that its domain accepts mail. It does not open an SMTP connection to the mailbox, because that is unreliable and gets IPs blocked.

Honest, simple pricing

  • $2.00 per 1,000 websites with contacts ($0.002 per website), whatever the number of pages, emails or socials.
  • Websites where nothing is found are free. Dead domains, blocked sites, timeouts and duplicates cost $0.
  • No start fee, no per-page fee, no per-email fee, no proxy or browser surcharges. 10,000 enriched websites cost $20, and you know the maximum before you run.

Built to fix what users complain about elsewhere

Common complaint about other contact scrapersWhat this Actor does
"Says $2 per 1,000 but charged me $71" / "$20 per 1,000 links, not $2"One flat event per website with contacts. No per-page, proxy or browser events.
"It just keeps running" / "crawling takes much longer"Page cap per site (default 6) and a per-site time limit (default 60 s).
"A single website crawl yielded 1,800 results" / messy outputExactly one row per company with flat fields and deduplicated lists.
"Duplicate originalStartUrl" / paying twiceInputs are deduplicated by domain (www/http/https), and sites that redirect to the same domain are only charged once.
"I can't get company phone numbers"Phones from tel: links, page text and schema.org structured data.
Emails of unknown qualityFree syntax + MX/DNS check for every email, role-based/disposable/free-provider flags. Emails on non-existent domains are removed.

Ready-made presets

PresetInput
SaaS lead enrichment (default depth, email validation on){"websites": ["hubspot.com", "intercom.com", "calendly.com"], "maxPagesPerWebsite": 6, "validateEmails": true}
Fast scan (homepage + 1 page, no email check){"websites": [...], "maxPagesPerWebsite": 2, "validateEmails": false}
Deep crawl with audit rows (free rows for sites with nothing found){"websites": [...], "maxPagesPerWebsite": 15, "includeWebsitesWithoutContacts": true}

Workflow: domain → company + contacts (with Company Data Enrichment)

Website Contact Finder and Company Data Enrichment are built to be used together on the same list of domains. Join their outputs on domain:

StepActorGives youPrice
1Company Data EnrichmentWho the company is: industry, HQ, employees, revenue, CEO, legal entity (LEI), SEC data$3 / 1,000 companies found
2Website Contact FinderHow to reach them: emails with MX check, phones, social profiles, tech stack$2 / 1,000 sites with contacts

Real output for hubspot.com from both Actors (runs on 2026-10-21, shortened):

Contacts (Website Contact Finder):

{
"domain": "hubspot.com",
"companyName": "HubSpot",
"primaryEmail": null,
"primaryPhone": "+16178125820",
"phonesTotal": 58,
"linkedin": [
"https://www.linkedin.com/company/hubspot",
"... 17 more (company + people pages)"
],
"twitter": [
"https://x.com/HubSpot",
"..."
],
"facebook": [
"https://www.facebook.com/hubspot"
],
"techHints": [
"Cloudflare",
"Google Analytics",
"HubSpot"
]
}

Company (Company Data Enrichment):

{
"name": "HubSpot",
"industries": [
"software industry",
"software as a service",
"..."
],
"foundedDate": "2006-01-01",
"headquarters": [
"Cambridge"
],
"employees": 8246,
"revenue": 2630000000,
"revenueCurrency": "United States dollar",
"ceo": [
"Yamini Rangan"
],
"tickers": [
"HUBS"
],
"registry": {
"lei": "529900BLNVEW0MVKJB37",
"legalName": "HUBSPOT, INC."
},
"sec": {
"cik": "0001404655",
"sicDescription": "Services-Prepackaged Software"
}
}

No-code: run both on the same domain list (or chain them with an Apify integration / webhook on "run succeeded"), export both datasets and merge on domain.

API (Python):

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
domains = ["hubspot.com", "calendly.com", "stripe.com"]
companies = client.actor("datadesk-io/company-data-enrichment").call(run_input={"companies": domains})
contacts = client.actor("datadesk-io/website-contact-finder").call(run_input={"websites": domains})
by_domain = {r["domain"]: r for r in client.dataset(contacts["defaultDatasetId"]).iterate_items()}
for c in client.dataset(companies["defaultDatasetId"]).iterate_items():
lead = {**c, "contacts": by_domain.get(c.get("domain"))}
print(lead["name"], lead.get("employees"), (lead["contacts"] or {}).get("primaryEmail"))

AI agents (MCP): load both tools in one MCP server:

https://mcp.apify.com/?tools=datadesk-io/company-data-enrichment,datadesk-io/website-contact-finder

Then ask, for example: "For hubspot.com, calendly.com and stripe.com, get industry, employee count and CEO, then the best contact email (deliverable domains only) and LinkedIn page, and give me one table." The agent calls Company Data Enrichment with {"companies": [...]} and Website Contact Finder with {"websites": [...]}, then joins the results on domain. Use maxCompanies / maxWebsites to cap the cost of each call.

How it works

For each domain it loads the homepage and then the most relevant pages on the same site: contact, about, imprint/Impressum, team, support, legal (English, Spanish, Portuguese and German). It uses fast HTTP with no browser, so 1,000 domains take minutes.

Limits

  • Sites that show contacts only through JavaScript, or that block bots (Cloudflare challenges), may return fewer contacts. They are free when nothing is found.
  • It only collects data that the company publishes on its own website. No guessing of email patterns and no third-party databases.

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server. Add it to Claude (Desktop/Code), ChatGPT, Cursor, VS Code or any MCP client:

https://mcp.apify.com/?tools=datadesk-io/website-contact-finder

Sign in with your Apify account (OAuth) or pass Authorization: Bearer <APIFY_TOKEN>. Local stdio config:

{"mcpServers": {"leads": {"command": "npx", "args": ["-y", "@apify/actors-mcp-server", "--tools", "datadesk-io/website-contact-finder"], "env": {"APIFY_TOKEN": "<token>"}}}}

The agent sees the input schema, runs the Actor and reads the dataset. Every input is optional and every output field is documented. Tip: set maxWebsites to cap the cost of a single tool call.

Example prompt:

Enrich basecamp.com, notion.so and linear.app: give me the best contact email (only deliverable domains), phone, LinkedIn page and the tech they use.

Plain REST: POST https://api.apify.com/v2/acts/datadesk-io~website-contact-finder/run-sync-get-dataset-items?token=... with the JSON input as the body.

FAQ

Is this legal? It collects contact details that companies publish on their own websites. You are responsible for using personal data (for example named employee emails) in line with the GDPR, CAN-SPAM and other rules that apply to you. Make, Zapier, n8n? Yes, through the Apify integrations and API. Missing a field or a site that fails? Open an issue in the Issues tab.