Website Contact Enricher: Emails, Phones, Socials per Domain
Pricing
$5.00 / 1,000 enriched domains
Website Contact Enricher: Emails, Phones, Socials per Domain
One clean lead row per company domain: role and personal emails (MX-checked), phones in E.164, LinkedIn and 8 more socials, address, contact/about/careers pages, contact form, tech stack, ecommerce platform, email provider and domain age. Reads up to 20 pages per site.
Pricing
$5.00 / 1,000 enriched domains
Rating
0.0
(0)
Developer
Angad Jangir
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Security
Limited permissionsShare
Website Contact Enricher: emails, phones and socials per domain
Give it a list of company domains. Get back one finished lead row per company: the best email to write to, every published email tagged role or personal and MX-checked, phones in E.164, LinkedIn and 8 more social profiles, postal address, contact / about / careers page links, whether there is a contact form, the tech stack, the ecommerce platform, the email provider and the domain's age.
No more de-duplicating ten messy page-level records per website. One domain in, one clean row out, ready for your CRM.
Who uses it
- Sales and lead-gen teams turning a list of target accounts (from a trade show, a directory, Google Maps or a CSV) into contactable leads.
- Agencies qualifying prospects: "Shopify stores on Google Workspace with a contact form and a LinkedIn page".
- Data and RevOps teams filling empty fields in a CRM (HubSpot, Salesforce, Pipedrive, Attio) on a schedule.
- AI agents that need a company's contact details in one tool call (see MCP below).
Why this one
| Page-by-page contact scrapers | Website Contact Enricher | |
|---|---|---|
| Output | One record per crawled page; you merge them yourself | One record per domain, already merged |
| Best email to use | Not chosen | primaryEmail: own-domain role mailbox first (info@, contact@, sales@ ...), never privacy@/abuse@ when a better one exists |
| Email quality | Raw strings, including logo@2x.png, user@example.com, Sentry/Wix keys | Junk removed; each email typed role / personal, mxValid from live MX records, sourceUrl |
| Hidden emails | Often missed | name [at] domain [dot] com, (at)/(dot), Cloudflare email protection, HTML entities, mailto lists |
| Phones | Any digit run in the text | Click-to-call links, schema.org and text numbers next to "phone/call/tel"; validated with libphonenumber, E.164, country and line type (mobile, toll-free ...), fax numbers dropped |
| Socials | Share buttons and post links mixed in | Company profiles only, normalised: LinkedIn company page, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub, Pinterest, WhatsApp |
| Which pages | Crawls whatever it finds | Goes straight to contact, impressum, about, team, careers and privacy pages (from the site's own links, then /contact and /about) |
| Company data | No | Company name, legal name, description, logo, favicon, language, country (with source), address |
| Firmographics | No | Tech stack (400+ technologies), ecommerce platform, email provider from MX, domain registration date and age (RDAP) |
| Price | Per page: about $0.002 x 5-10 pages = $10-20 per 1,000 sites | $3 per 1,000 domains, flat |
Input
| Field | Default | What it does |
|---|---|---|
domains | 2 examples | Domains, URLs or even email addresses. Duplicates and www. merge into one row per company. |
maxPagesPerDomain | 8 | Pages per company, homepage included (1-20). |
maxItems | 1000 | Stop after this many company rows. |
includePersonalEmails | true | Off = keep only role mailboxes (info@, sales@ ...). |
checkMx | true | Check each email domain's MX records and fill mxValid. |
includeTechStack | true | Detect CMS, ecommerce, analytics, pixels, chat, CDN, CRM ... |
includeDomainAge | true | Registration date and age from RDAP. |
includeFailedDomains | true | Keep a row (status unreachable/blocked) for sites that could not be read. |
{"domains": ["allbirds.com", "https://sproutsocial.com/contact-us/", "jane@zerodha.com"],"maxPagesPerDomain": 5,"includePersonalEmails": false}
Output: one row per domain (real example)
Shortened from a real run (techStack cut to 6 of 29 entries):
{"domain": "sproutsocial.com","input": "sproutsocial.com","finalUrl": "https://sproutsocial.com/","status": "ok","error": null,"companyName": "Sprout Social","legalName": "Sprout Social, Inc.","description": "Maximize your social ROI with Sprout Social, trusted by 30k+ brands. Power everything from publishing and engagement to analytics and influencer marketing. Try 30 days free.","logoUrl": "https://brandfolder.sproutsocial.com/VXTUTVL1/at/8vwz9b7w83rhgfc8xvm8t8/lgo_sprout_lockup.png","faviconUrl": "https://media.sproutsocial.com/uploads/favicon.ico","language": "en-US","country": "US","countrySource": "address","primaryEmail": "info@sproutsocial.com","primaryPhone": "+18668783231","emails": [{ "email": "info@sproutsocial.com", "type": "role", "sourceUrl": "https://sproutsocial.com/", "mxValid": true },{ "email": "pr@sproutsocial.com", "type": "role", "sourceUrl": "https://sproutsocial.com/contact-us/", "mxValid": true },{ "email": "support@sproutsocial.com", "type": "role", "sourceUrl": "https://sproutsocial.com/legal/privacy-policy/", "mxValid": true }],"phones": [{ "raw": "+1-866-878-3231", "e164": "+18668783231", "country": "US", "type": "toll_free", "sourceUrl": "https://sproutsocial.com/contact-us/" }],"socials": {"linkedin": "https://www.linkedin.com/company/sprout-social-inc-","twitter": "https://x.com/SproutSocial","facebook": "https://www.facebook.com/SproutSocialInc","instagram": "https://www.instagram.com/sproutsocial","youtube": "https://www.youtube.com/user/SproutSocial","tiktok": "https://www.tiktok.com/@sproutsocial","github": null,"pinterest": "https://www.pinterest.com/sproutsocial","whatsapp": null},"address": { "full": "131 S. Dearborn St., Ste. 700, Chicago, IL, 60603, USA", "street": "131 S. Dearborn St., Ste. 700", "city": "Chicago", "region": "IL", "postalCode": "60603", "country": "US" },"contactPageUrl": "https://sproutsocial.com/contact-us/","aboutPageUrl": "https://sproutsocial.com/about/","careersPageUrl": "https://sproutsocial.com/careers/","hasContactForm": false,"techStack": [{ "name": "Next.js", "category": "JavaScript framework" },{ "name": "React", "category": "JavaScript framework" },{ "name": "Amazon CloudFront", "category": "CDN" },{ "name": "Amazon Web Services", "category": "Hosting" },{ "name": "Adobe Experience Platform Launch", "category": "Tag manager" },{ "name": "Salesforce", "category": "CRM" }],"ecommercePlatform": null,"emailProvider": "Google Workspace","domainCreatedAt": "2009-09-22T04:35:18.000Z","domainAgeYears": 17.1,"pagesCrawled": 5,"crawledUrls": ["https://sproutsocial.com/", "https://sproutsocial.com/contact-us/", "https://sproutsocial.com/about/", "https://sproutsocial.com/careers/", "https://sproutsocial.com/legal/privacy-policy/"],"scrapedAt": "2026-11-06T01:33:57.612Z"}
Every field is always present; it is null (or []) when the site does not publish it.
status:ok,unreachable(DNS, timeout, server error) orblocked(bot protection, or robots.txt does not allow the homepage). Blocked and unreachable rows still carryemailProviderand the domain age.ecommercePlatform: Shopify / Shopify Plus, WooCommerce, Magento, BigCommerce, PrestaShop, OpenCart, Salesforce Commerce Cloud, Shopware, Wix, Squarespace, Webflow and more.emailProvider: Google Workspace, Microsoft 365, Zoho Mail, Proton Mail, GoDaddy, Titan, Mimecast, Proofpoint ...,Self-hosted, orOther.countrySource:address,domain(country-code domain such as .de or .in),phoneorlanguage.
The Leads table view shows domain, company, email, phone, LinkedIn, ecommerce platform, email provider, country and domain age. A SUMMARY record in the key-value store gives counts (ok / unreachable / blocked, with email, with phone, with LinkedIn), failures and warnings.
Pricing
$3 per 1,000 domains ($0.003 per company row), charged per row saved, however many pages were read for it. Turn includeFailedDomains off to pay only for sites that could be read. Platform usage is small: plain HTTP requests, no browser.
Use it with your tools
- Google Sheets: export the dataset as CSV or connect the Apify integration for Google Sheets; one row per company maps straight onto a sheet.
- Make, Zapier, n8n: trigger a run with new domains from a form, a CRM or a sheet, then push each row to HubSpot, Salesforce, Pipedrive, Airtable or Slack.
- Schedules and webhooks: re-enrich your account list every month and get a webhook when the run is done.
- API:
POST https://api.apify.com/v2/acts/<this-actor>/run-sync-get-dataset-itemswith{"domains": [...]}returns the rows directly. - MCP for AI agents: add this Actor to the Apify MCP server (
https://mcp.apify.com) and Claude, ChatGPT or Cursor can call it as a tool: "find the contact email and LinkedIn of these 20 companies".
How it works
- Reads robots.txt and the homepage (https, then www., then http).
- Finds the contact, impressum, about, team, careers and privacy pages from the site's own links (any language: Kontakt, Contacto, Über uns ...), tries
/contactand/aboutwhen none is linked, and stays on the company's own domain. - Reads them politely: one page at a time per site with a pause between pages, at most 5 sites in parallel, 15 s timeout, one retry.
- Merges what every page shows into one row, then adds MX, tech-stack and RDAP data.
Limits
- Sites that render all content with JavaScript, or sit behind bot protection (Cloudflare challenge, 403), give little or nothing and are marked
blocked. The Actor never tries to bypass a protection. - It reads only what the website itself publishes. It does not guess email patterns (first.last@) or buy data from third parties.
- Country is a best guess;
countrySourcetells you how strong it is. - RDAP dates are not published by every registry (some country-code domains), so
domainCreatedAtcan benull.
FAQ
Is this legal? The Actor reads public pages the way a visitor's browser does, obeys robots.txt, and collects only business contact details that each company chose to publish on its own website. It does not log in, solve captchas or get around blocks.
What about GDPR and other privacy laws? Role mailboxes (info@, sales@) are company contact points. Personal addresses (jane.doe@) are personal data in the EU and UK even when published. Set includePersonalEmails to false to keep role mailboxes only. You are responsible for having a lawful basis for any outreach, honouring opt-outs and following anti-spam rules (GDPR, ePrivacy, CAN-SPAM, India's DPDP Act).
Does mxValid mean the mailbox exists? It means the email's domain has mail servers and can receive mail. No email is sent and no mailbox is probed.
Why did a site give no email? Many companies publish only a contact form (see hasContactForm) or load their contact page with JavaScript. Try a higher maxPagesPerDomain, or use the contactPageUrl the row gives you.
Can I paste URLs or emails instead of domains? Yes. https://acme.com/en/contact, www.acme.com and jane@acme.com all become one row for acme.com.
More Actors by angadseth
- GeM Tenders Scraper (India Government e-Marketplace Bids): Get live GeM bids and reverse auctions from India's Government e-Marketplace
- India eProcurement Tenders Scraper (CPPP + 30 State Portals): Live government tenders from India's central eProcure (CPPP), central PSU, defence and 30+ state NIC eProcurement portals in one run.
- Apple App Store Scraper: apps, ratings and reviews: Get Apple App Store apps, ratings and customer reviews from many countries in one run
- ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday + 5 more: Get every open job from a company's own careers board
- Bluesky Scraper: Posts, Profiles, Followers and Feeds: Scrape Bluesky without a login
- Website Screenshot & PDF: full page, mobile, element, WebP: Screenshots (PNG, JPEG, WebP) and PDFs of any list of URLs.
- Remote Jobs Aggregator: RemoteOK, Jobicy, Arbeitnow + 2 more: Remote jobs from RemoteOK, Jobicy, Arbeitnow, Working Nomads and 4 Day Week in one clean feed.
- PDF & Document Text Extractor: PDF, DOCX, PPTX, XLSX to Text: Turn public document URLs (PDF, DOCX, PPTX, XLSX, CSV, HTML, TXT) into clean text