Contact Enricher avatar

Contact Enricher

Pricing

from $2.00 / 1,000 domain enricheds

Go to Apify Store
Contact Enricher

Contact Enricher

Crawls a company's website to extract emails, phones, socials, address and tech hints, infers the company email pattern, and optionally verifies emails via MX/catch-all checks.

Pricing

from $2.00 / 1,000 domain enricheds

Rating

0.0

(0)

Developer

Elliot Rose

Elliot Rose

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Given a list of company domains or URLs, crawls a handful of high-signal pages per site (home, contact, about, team, footer links, JSON-LD), extracts emails, phones, socials, address, company name and tech hints, infers the company's email pattern (e.g. {first}.{last}), optionally verifies emails via MX lookup + catch-all detection, and emits one normalised record per domain.

Input

FieldTypeDefaultDescription
domainsstring[](required)Domains or URLs to enrich, e.g. "acme.com" or "https://www.acme.com". urls is accepted as an alias.
maxPagesPerSiteinteger8Max pages crawled per domain (home + up to maxPagesPerSite - 1 internal links).
verifyEmailsbooleantrueRun MX + catch-all checks on every extracted/guessed email.
wantPersonNamesbooleanfalseInclude named individuals found on the site and generate up to 10 pattern-guessed personal emails. Off by default — business contact data only, per policy.
verifierProviderstring(none)Optional third-party verifier API name (see src/verify.py adapter).
verifierApiKeystring(none)API key for the third-party verifier, if used.
maxConcurrencyinteger5Domains processed in parallel.

Output (one dataset row per domain)

{
"domain": "acme.com",
"company_name": "Acme Corp",
"emails": [
{
"value": "info@acme.com",
"type": "generic",
"source": "observed",
"off_domain": false,
"mx_ok": true,
"smtp_status": "unknown",
"confidence": 0.9
},
{
"value": "jane.doe@acme.com",
"type": "named",
"source": "observed",
"off_domain": false,
"mx_ok": true,
"smtp_status": "unknown",
"confidence": 0.9
},
{
"value": "john.smith@acme.com",
"type": "named",
"source": "pattern",
"off_domain": false,
"mx_ok": true,
"smtp_status": "unknown",
"confidence": 0.6
}
],
"email_pattern": "{first}.{last}",
"phones": ["+15551234567"],
"socials": { "linkedin": "https://linkedin.com/company/acme" },
"address": "123 Main St, Springfield, IL, 62704, US",
"tech_hints": { "cms": "wordpress", "analytics": "google-analytics" },
"pages_crawled": 5,
"source_urls": [
"https://acme.com/",
"https://acme.com/contact",
"https://acme.com/about",
"https://acme.com/team"
],
"fetched_at": "2026-08-29T12:00:00+00:00"
}

A failed domain produces {"domain": "...", "error": "..."} instead, and is never charged.

When wantPersonNames is true, a person_names array is also included.

Pricing events (pay-per-event)

EventSuggested priceWhen
domain-enriched$0.002Once per successfully processed domain (one dataset row).
email-verified$0.004Per email that went through verify_email (only when verifyEmails is true).

Failed domains are never charged.

MCP

Exposed as an MCP tool enrich_company(domain), which maps to running this Actor with domains: [domain] and default options, returning the single resulting record.

Limitations

  • JS-only sites: the crawler is a plain HTTP client (httpx) with no headless browser — content injected client-side by JavaScript frameworks won't be seen.
  • SMTP probing is often blocked: outbound port 25 is frequently blocked from datacenter/cloud IPs, so catch-all detection and per-mailbox checks regularly come back inconclusive. In that case smtp_status is "unknown" (still usable — mx_ok and confidence are still populated from the MX lookup).
  • Only business contact data is emitted by default; named individuals and pattern-guessed personal emails require the explicit wantPersonNames flag.
  • Email-pattern inference and address/company-name selection are heuristic, not guaranteed correct — always treat guessed (source: "pattern") emails as lower confidence than observed ones.