Website Contact Enrichment — Emails, Phones & Socials
Pricing
$30.00 / 1,000 domain enricheds
Website Contact Enrichment — Emails, Phones & Socials
Turn a list of websites into contactable companies. Crawls the pages that matter and returns the best email to write to, plus phones, social profiles, named people and mail signals (MX, SPF, DMARC). Charged only when a record carries a real contact.
Pricing
$30.00 / 1,000 domain enricheds
Rating
0.0
(0)
Developer
Logical Vivacity
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Website Contact Enrichment — Emails, Phones, Socials & Decision Makers from a Domain
Paste a list of websites. Get back one finished contact record per company — with the single address you should actually write to.
Most contact scrapers hand you a pile of strings: every mailto: on the page, every number that looked like a phone, the tracking pixel's domain and a logo@2x.png. Then you do the real work — deciding which of those is a mailbox a human reads.
This Actor does that part. One domain in, one record out: the emails that are real, labelled by what kind of mailbox they are, the phone numbers in E.164, the postal address, the social profiles, the people the site names, whether the domain can even receive mail — and bestEmail, the one address to use.
You pay per enriched domain. A website that publishes no contact at all costs nothing.
Try it in 30 seconds
Put these in Websites and hit Start:
stripe.comsipgate.de
One US SaaS, one German company with an Impressum. No configuration, two finished records.
What you get per domain
{"domain": "sipgate.de","website": "https://sipgate.de","companyName": "sipgate","description": "Cloud-Telefonanlage, Contact Center und AI…","logoUrl": "https://sipgate.de/og-image.png","country": "Germany","language": "de","bestEmail": "info@sipgate.de", // the one address to write to"bestEmailType": "general","confidence": 94, // 0-100, how sure we are it's live"emails": [{ "email": "info@sipgate.de","type": "general", // general | sales | support | careers | personal"source": "https://sipgate.de", // the page it came from"pageType": "home" }],"phones": ["+4921163553355", "+492116355550"], // E.164 where it parses"address": "Gladbacher Straße 74 40219 Düsseldorf","socials": {"linkedin": "https://www.linkedin.com/company/sipgate-gmbh","facebook": "https://www.facebook.com/sipgate","instagram": "https://www.instagram.com/sipgate","youtube": "https://www.youtube.com/@sipgate"},"people": [{ "name": "Till Lienhoop", "role": "Geschäftsführer", "email": null }],"mailSignals": { // can this domain receive mail at all?"hasMx": true,"mailProvider": "google","hasSpf": true,"hasDmarc": true},"pagesScanned": 8,"status": "ok","scrapedAt": "2026-09-17T21:40:02+00:00"}
Export as JSON, CSV, Excel, XML or HTML, or pull it straight from the API.
Who uses this
Outbound sales teams — you bought a list of 5,000 domains and it has no email column. Run it through this and you get one contactable address per company, with a confidence score you can filter on before you spend a send.
Agencies and freelancers building prospect lists — local businesses, agencies and shops publish a contact address and a phone number and nothing else. This reads both, plus the owner's name from the about page.
CRM and data teams enriching accounts — company name, tagline, logo, country, address and social profiles arrive in the same record as the contacts, so one run fills a whole account row.
Recruiters and partnerships — people gives you who the site names and what they do, so you know whether the company even has a Head of anything before you write.
Anyone cleaning an old list — mailSignals.hasMx tells you whether a domain can still receive mail. A domain with no MX record is a bounce you don't have to pay for.
What makes it different
It picks the address for you. bestEmail is chosen, not just listed: a mailbox on the company's own domain beats a Gmail, a general or sales mailbox beats a support or careers queue, and an address found on the contact page beats one found in a privacy policy. That single field is the product.
Junk is filtered before you see it. example.com, yourdomain.com, the error-tracker's address, the template placeholder ihre@firma.de, the CDN's, sprite@2x.png, hex-string addresses from analytics scripts — all dropped. What's left is what a person could write to.
Emails come with an origin and a type. Every address carries the URL it was found on and a label — general, sales, support, careers or a named person — so you can route a sales pitch away from a careers inbox.
Obfuscated addresses still get read. hello [at] acme [dot] com, entity-encoded and JSON-embedded addresses are decoded like any other.
Phone numbers you can dial. Normalised to E.164 using the country the site itself suggests, deduplicated, with years, prices and order numbers rejected rather than shipped as phone numbers.
Mail signals nobody else returns. MX provider, SPF and DMARC for the domain, from live DNS. Useful for deliverability and brutally effective at spotting dead domains.
It only reads pages that carry contacts. The homepage, then contact, about, team, imprint/Impressum, support, careers and legal — picked from the site's own navigation and capped by you. Not a whole-site crawl, so a run stays fast and cheap.
Empty is free. A site with no email and no phone is reported with a reason and costs nothing.
Settings that matter
| Setting | What it does |
|---|---|
| Websites | Domains or URLs, one per line. acme.com, www.acme.com and https://acme.com/pricing all mean the same company |
| Maximum pages per website | How deep to look. 8 finds almost everything; 3 is a fast, cheap pass |
| Find named people | Reads team and about pages for names, roles and personal addresses |
| Include social profiles | LinkedIn, X, Facebook, Instagram, YouTube, TikTok |
| Only keep websites with an email address | Skips — and never charges for — companies that publish a phone but no email |
Connection handling, pacing, retries and blocking are managed for you — there's nothing to configure and no proxy to set up.
Automate it
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~website-contact-enrichment/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{ "websites": ["stripe.com", "sipgate.de", "katzsdelicatessen.com"],"maxPagesPerSite": 8,"findPeople": true,"includeSocials": true,"requireEmail": true }'
Works with Make, Zapier, n8n, Google Sheets and the Apify API, and as an MCP tool for AI agents. Point it at the new domains in your CRM on a schedule and the contact column fills itself.
Results you can trust
Every website you submit comes back with a row, so nothing fails silently:
status | Meaning |
|---|---|
ok | At least one real contact was found — charged |
no_contacts | The site was read fine but publishes no email or phone (or no email, when Only keep websites with an email address is on) — not charged |
error | The input wasn't a website, or the site was unreachable during the run — not charged |
note says in plain English what happened on every row.
FAQ
What exactly is confidence?
A 0-100 read on whether bestEmail will reach the company: it goes up for an address on the company's own domain, found on a contact or imprint page, on a domain whose DNS accepts mail, backed by a phone number, address and LinkedIn profile — and sharply down when the domain has no MX record at all.
Do you guess or generate email addresses?
No. Every address in the output was published somewhere on the company's own website, and source tells you which page. Nothing is pattern-guessed.
Do you verify that the mailbox exists? Not per mailbox. We check the domain: whether it has MX records, who runs the mailbox, and whether SPF and DMARC are set. That catches dead domains, not full inboxes.
Why did a well-known company come back with no contacts? Plenty of companies publish only a contact form. That's a real answer about that company, and you aren't charged for it.
Can I feed it URLs with paths, or messy rows from a CRM export? Yes. Anything that contains a domain is reduced to that domain, and duplicates in one run are read once.
Does it handle non-English sites?
Yes — Kontakt, Impressum, Über uns, Chi siamo, Nosotros and their neighbours are all recognised, and language and country come back on the record.
How many pages does it read? The homepage plus up to your Maximum pages per website, chosen by relevance. It never crawls a whole site.
Will it find personal addresses for individual staff?
Where the site publishes them — many imprint and team pages do. It never invents firstname.lastname@ combinations.
Can I run 10,000 domains? Yes. Work runs in parallel with polite per-site pacing, and you can cap spend with the run's maximum charge limit.
Terms of Use
This Actor reads pages a company publishes openly on its own website, plus public DNS records for that domain. You are responsible for using the results lawfully: contact data about individuals is personal data, and obligations under the GDPR, ePrivacy rules, CAN-SPAM, CASL and any other marketing, telemarketing and data-protection rules in your jurisdiction and your recipients' fall on you, including lawful basis, disclosure and opt-out handling. Do not use the results to send unsolicited mail where that is unlawful. Websites are returned as they were published and may be incomplete, outdated or changed after your run — verify before acting on a result. This Actor is provided "as is", without warranty of accuracy, deliverability or fitness for a particular purpose, and is not affiliated with, endorsed by, or sponsored by any company, mailbox provider or social network whose public pages or profiles appear in your results.
Found a site where the contact page is obviously there but came back empty? Open an issue on the Actor's Issues tab with the domain.