Domain Contact Enricher: Emails & Phones avatar

Domain Contact Enricher: Emails & Phones

Pricing

from $3.30 / 1,000 enriched companies

Go to Apify Store
Domain Contact Enricher: Emails & Phones

Domain Contact Enricher: Emails & Phones

Turn company domains into contactable records. Returns role emails, phones, social profiles, postal addresses, company name, 90+ technology signals, the ATS a company uses, and live MX/SPF/DMARC email infrastructure. One row per domain, and every value carries the page it came from.

Pricing

from $3.30 / 1,000 enriched companies

Rating

0.0

(0)

Developer

Axiora Solutions

Axiora Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Domain Contact Enricher — Email Finder & Company Enrichment

Domain Contact Enricher is an Apify email finder and company enrichment Actor that turns a plain list of company domains into a contactable lead list — one row per domain with e-mail addresses, phone numbers, social profiles, 90+ technology signals, the applicant tracking system the company uses, and live MX/SPF/DMARC e-mail infrastructure. Every value records the exact source page it was found on, alongside confidence labels and detection evidence, so you can audit a row instead of trusting it. No API key, no login, nothing to configure — paste your domains and click Start.

What you get

  • emails[] — published addresses with confidence, isRoleAccount and the exact foundOn page URL.
  • phones[] — E.164-range numbers with tel: links ranked first, each with its source page.
  • socialProfiles and linkedinUrl — LinkedIn, GitHub, YouTube, X and more, deduplicated.
  • company — legal name, description, logo, founding date, employee count, VAT/tax ID and postal addresses.
  • technologyIds[] / technologies[] — 90+ tech signals across 14 categories, each with the evidence that fired it.
  • atsProvider / emailInfrastructure — the ATS in use plus a ready-to-paste scraper input, and live MX/provider/SPF/DMARC data with contentHash for change detection.

Honest coverage note: contact details are only returned when the site publishes them. Modern sites often route contact through forms, images or client-side JavaScript, so an e-mail per domain is not guaranteed. The coverage block in the run summary reports the real hit rate on your list before you scale.

Quick start

  1. Open the Actor on Apify and paste your domains into Company domains. A bare domain (apify.com), a full URL or an e-mail address all work; the input is prefilled with a working example.
  2. Leave Pages per domain at 4 and Find contact and imprint pages enabled. Those defaults reach the contact, about and imprint pages on most sites.
  3. Click Start — no API key or login is needed. When the run finishes, switch between the Contacts, Every e-mail and Technology & hiring dataset tabs, or export to JSON, CSV, Excel or Google Sheets.

Minimal input:

{ "domains": ["apify.com", "stripe.com"] }

Example output

One dataset row:

{
"ok": true,
"errorCode": null,
"requestedInput": "apify.com",
"domain": "apify.com",
"websiteUrl": "https://apify.com/",
"redirectedToDomain": null,
"httpStatus": 200,
"companyName": "Apify",
"company": {
"name": "Apify",
"legalName": "Apify Technologies s.r.o.",
"description": "Full-stack web scraping and data extraction platform.",
"logoUrl": "https://apify.com/og-image.png",
"foundingDate": "2015",
"employeeCount": null,
"industry": null,
"vatId": null,
"addresses": [
{
"street": "Vodickova 704/36",
"locality": "Prague",
"region": null,
"postalCode": "110 00",
"country": "Czechia",
"formatted": "Vodickova 704/36, Prague, 110 00, Czechia"
}
],
"sameAs": ["https://github.com/apify"]
},
"primaryEmail": "hello@apify.com",
"emailCount": 2,
"emails": [
{
"email": "hello@apify.com",
"emailDomain": "apify.com",
"isRoleAccount": true,
"isOnSiteDomain": true,
"confidence": "high",
"foundOn": "https://apify.com/contact"
}
],
"primaryPhone": null,
"phoneCount": 0,
"phones": [],
"linkedinUrl": "https://www.linkedin.com/company/apify",
"socialProfiles": {
"linkedin": "https://www.linkedin.com/company/apify",
"github": "https://github.com/apify",
"youtube": "https://www.youtube.com/@apify"
},
"socialProfileCount": 3,
"technologyCount": 7,
"technologyIds": ["cloudflare", "google-tag-manager", "hubspot", "intercom", "nextjs", "react", "sentry"],
"technologies": [
{ "id": "nextjs", "name": "Next.js", "category": "framework", "evidence": "html: __NEXT_DATA__" },
{ "id": "cloudflare", "name": "Cloudflare", "category": "infrastructure", "evidence": "headers: cf-ray" }
],
"atsDetected": [
{
"provider": "greenhouse",
"name": "Greenhouse",
"boardToken": "apify",
"boardUrl": "https://boards.greenhouse.io/apify",
"atsJobScraperInput": "greenhouse:apify"
}
],
"atsProvider": "greenhouse",
"atsJobScraperInput": "greenhouse:apify",
"emailInfrastructure": {
"mxHosts": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"],
"mailProvider": "Google Workspace",
"hasSpf": true,
"hasDmarc": true,
"spfIncludes": ["_spf.google.com"],
"resolved": true
},
"pagesCrawled": [
{ "url": "https://apify.com/", "kind": "homepage", "status": 200, "bytes": 142331, "title": "Apify" },
{ "url": "https://apify.com/contact", "kind": "discovered", "status": 200, "bytes": 51220, "title": "Contact us" }
],
"pageCount": 2,
"contentHash": "5b1f7c2e9a3d4061",
"scrapedAt": "2026-10-02T12:00:00.000Z"
}

What this contact enricher returns

  • 📧 E-mails with provenance, not guesses — confidence: high means a mailto: link or a role account (info@, sales@, careers@) on the company's own domain. medium is a plain-text match on the company domain. low is a third-party address (agency, CDN, partner). You decide what to trust. No address is ever generated from a name pattern.
  • ☎️ Phones that survive validation — only 8–15 digit numbers inside the ITU E.164 range, with tel: links ranked first. Dates, version strings and asset hashes are rejected.
  • 🏢 Company identity from structured data — legal name, description, logo, founding date, employee count, VAT/tax ID and postal addresses, read from the site's own JSON-LD and OpenGraph markup.
  • 🧱 90+ technology signals in 14 categories — e-commerce, CMS, framework, hosting, analytics, marketing, support, payments, security, privacy, reviews and more. Each hit ships its evidence string.
  • 🎯 Hiring-platform detection — finds Greenhouse, Ashby, Lever, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR or Rippling and returns the board URL plus a ready-to-paste input for the ATS Job Scraper.
  • 📬 E-mail infrastructure via live DNS — MX records in priority order, the resolved mail provider (Google Workspace, Microsoft 365, Zoho, Proofpoint, Mimecast…), and whether SPF and DMARC are published. A missing DMARC record is both a security finding and a sales trigger.
  • 🧾 Full audit trail — pagesCrawled lists every URL read with status, bytes and title. contentHash lets a scheduled run detect website changes without storing any HTML.
  • 🤖 Agent-ready — the main input is an array, no field is a credential, and the output schema is fully documented, so an autonomous agent can call this without a human.

Running on Apify adds scheduling, run history, webhooks, monitoring, the API and SDKs, and one-click export to JSON, CSV, Excel, Google Sheets and 20+ integrations.

How to use it

  1. Put your domains in Company domains. A bare domain, a full URL or an e-mail address all work.
  2. Set Pages per domain. 1 reads only the homepage; 4 is the default and usually enough; 8–12 digs into deep imprint pages.
  3. Leave Find contact and imprint pages on. The Actor scores homepage links by URL and anchor text and visits the best candidates — /contact, /about, /team, /impressum, /legal, /support.
  4. Toggle the enrichment blocks you need. They are independent and do not change the price, which is per company.
  5. Click Start, then switch between the Contacts, Every e-mail and Technology & hiring dataset tabs.

How do I get more e-mails per company?

Raise Pages per domain to 8 and add known paths to Always try these paths (for example /contact-us, /en/imprint, /company/contact). German, Austrian and Swiss sites are legally required to publish an imprint, so /impressum has a very high hit rate there.

Example input

{
"domains": ["apify.com", "stripe.com", "https://www.ramp.com"],
"maxPagesPerDomain": 4,
"discoverContactPages": true,
"extraPaths": ["/contact", "/impressum"],
"includeCompanyProfile": true,
"includeTechnologies": true,
"includeAtsDetection": true,
"includeDnsSignals": true,
"maxEmailsPerDomain": 15,
"respectRobotsTxt": true
}

How much does it cost to enrich company domains?

Pricing is pay per event with a single event:

EventWhat triggers itBilled
Enriched companyA domain was fetched and a company row was writtenper company
Actor startOnce per run, platform feeper run

Domains that cannot be fetched are free. A dead domain, a 403, a DNS failure or a timeout produces an ok: false row and is never charged — you only pay for companies you actually received data for.

The price is per company, not per page, so turning on every enrichment block costs exactly the same as turning them all off. 1,000 domains is 1,000 billed events. Compute, bandwidth and storage are included; there is no separate platform-usage charge on top.

Set Max cost per run in the run options for a hard ceiling. Higher Apify plans receive progressively lower per-company pricing through Apify Store tier discounts.

Evaluating? Run 5 domains first and look at the coverage block in the run summary — it reports how many companies yielded an e-mail, a phone and an ATS. That tells you the real hit rate on your list before you scale it.

Use cases

  • Outbound lead enrichment — take a domain list from any source and make it contactable in one run.
  • ICP and segmentation — filter by technologyIds to find every prospect on Shopify, HubSpot, Next.js or Stripe.
  • Hiring-signal prospecting — atsProvider tells you who is hiring and on which platform; chain into the ATS Job Scraper for the actual roles.
  • E-mail deliverability audits — list every domain in a portfolio without DMARC.
  • CRM hygiene — re-run monthly and diff contentHash to catch rebrands, acquisitions (redirectedToDomain) and dead sites.
  • Agent tool — a clean, credential-free tool call for an autonomous research agent.
ActorUse it for
ATS Job ScraperPaste atsJobScraperInput and get every open role at the companies you just enriched
Shopify Product & Variant ScraperFor every prospect detected as Shopify, pull their full catalogue and pricing
Sitemap & Indexability AuditTechnical SEO state of the same domains, for agency pitches

Frequently asked questions

Does this find personal e-mail addresses of employees?

No, and that is deliberate. This Actor reads only what a company publishes on its own website, which in practice means role accounts and office numbers. It does not guess firstname.lastname@ patterns, does not query third-party people databases, and does not scrape social networks for individuals. If a site publishes a named person's address on its own contact page, that address will appear — flagged by confidence — because the company chose to publish it.

The Actor fetches publicly served pages and honours robots.txt by default. Business contact details published by a company on its own website are the least sensitive category of this data, but you remain responsible for your lawful basis for processing and for your outreach — GDPR, CAN-SPAM, PECR and equivalents apply to how you use the output. Nothing here is legal advice.

Why does a company have no e-mail at all?

Common and expected. Many companies route all contact through a form, put the address in an image, or render it only after JavaScript runs. This Actor uses plain HTTP and does not execute JavaScript, which is what makes it fast and cheap. Check pagesCrawled to confirm the contact page was actually read, then raise Pages per domain or add the exact path.

Does it run JavaScript or use a browser?

No. Every request is plain HTTP, which is why a run costs a fraction of a browser-based crawl. For sites that only render contacts client-side, expect lower coverage — the coverage block in the run summary quantifies it honestly rather than hiding it.

What does confidence actually mean?

high — the address was in a mailto: link, or it is a role account on the company's own domain. medium — plain-text match on the company's own domain. low — a different domain entirely, so it may belong to an agency, a hosting provider or a partner. Filter to high and medium for outbound.

Why is emailInfrastructure useful?

mailProvider is a reliable company-size and stack signal. hasDmarc: false means the domain is spoofable, which is a genuine finding for security vendors and a credible opening line for outbound. These come from live DNS, not from the page.

Should I enable the proxy?

Usually not. Most sites answer plain requests fine, and running without a proxy is faster and costs you nothing extra. Turn on datacenter proxy rotation if you hit ACCESS_DENIED on many domains. Residential groups also work but Apify bills them per gigabyte, so only use them when you must.

Can I run this on a schedule?

Yes. Add a Schedule, then diff contentHash to find changed sites, redirectedToDomain to catch acquisitions, and atsProvider to spot companies that just started hiring.

Something looks wrong — how do I report it?

Open the Issues tab on this Actor page with the domain and the field you expected. A false-positive e-mail or technology detection is treated as a bug and gets a narrower rule.


Runnable examples and how-to guides for these Actors: github.com/batow133/axiora-apify-actors