Website Contact Extractor — Email, Phone, Socials avatar

Website Contact Extractor — Email, Phone, Socials

Pricing

$5.00 / 1,000 domain contact-extracteds

Go to Apify Store
Website Contact Extractor — Email, Phone, Socials

Website Contact Extractor — Email, Phone, Socials

One row per input domain. Visits the homepage plus up to 5 standard contact pages (/contact, /about, /team, /imprint, /privacy). Surfaces emails (optionally MX-verified), phone numbers (E.164 + raw), social links, mailing addresses, and embedded platforms like Calendly, Hubspot, Mailchimp.

Pricing

$5.00 / 1,000 domain contact-extracteds

Rating

0.0

(0)

Developer

vøiddo

vøiddo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

cover

Website Contact Extractor

One row per domain. Emails, phones, social handles, and embedded platforms — pulled from the homepage and five standard contact pages (/contact, /about, /team, /imprint, /privacy). Emails are MX-verified by default. No headless browser, no cookies, no login.

What you get

{
"domain": "stripe.com",
"origin": "https://stripe.com",
"pagesProbed": 6,
"pagesOk": 6,
"emails": [
{ "email": "dpo@stripe.com", "role": "legal", "mxValid": true },
{ "email": "privacy@stripe.com", "role": "legal", "mxValid": true },
{ "email": "complaints-in@stripe.com", "role": null, "mxValid": true }
],
"phones": ["+14155551212"],
"socials": {
"twitter": ["https://twitter.com/stripe"],
"github": ["https://github.com/stripe"],
"youtube": ["https://youtube.com/@stripe"],
"facebook": ["https://facebook.com/StripePayments"],
"instagram": ["https://instagram.com/stripe"]
},
"platforms": ["google-analytics", "stripe-checkout"]
}

How to use

Input. A list of domains or URLs.

  • acme.com → crawls the homepage plus the five default contact pages.
  • https://acme.com/team → crawls only that one page.
  • extraPaths: ["/legal", "/kontakt"] → adds locale-specific paths to the default set for every domain.

Output. Apify dataset, one row per domain. Schema above.

Verification. verifyEmails: true runs a DNS MX lookup on every extracted email's domain. No SMTP probing — just MX-record presence. Fast (~50ms per unique domain), no rate-limit risk.

Proxy. Off by default; turn on useResidentialProxy only for sites that refuse datacenter IPs.

v0.2 — what's new

Role classification. Every email is tagged with a role inferred from the local part: ceo, press, security, legal, billing, careers, sales, support, info. info@, hello@, contact@ fall under info; careers@, jobs@, hr@ under careers; etc. Unknown locals get role: null. Filter role == "sales" to surface BD contacts across a portfolio without manual triage.

Strict same-domain. Set strictSameDomain: true to drop any email whose host doesn't match the input domain (or a subdomain of it). This removes SDK noise — e.g. on stripe.com you'd otherwise see noreply@sentry.io because of the embedded Sentry init script.

Flat email rows for CSV export. Set emitFlatEmails: true to additionally emit one row per email shaped

{domain, email, role, mxValid}
. Export to CSV from the Apify console → you get a usable email list directly, no Python post-processing. Billing still charges once per domain — flat rows are derived views, not paid data.

What this actor does NOT do

  • No LinkedIn. Deliberately excluded. LinkedIn's TOS and the hiQ v. LinkedIn chain of litigation make it unsuitable for an open Apify Store actor. Use a separate first-party LinkedIn-aware workflow.
  • No SMTP probing. MX-record presence is the only verification. SMTP RCPT TO: probing trips spam-score listings on the source IP — bad ROI.
  • No JavaScript rendering. Sites that ship contact info only via JS bundles (rare for contact pages) will surface as empty.

Pricing

PAY_PER_EVENT · $0.005 per domain_extracted · 200 domains = $1.

Source

Each domain's public HTTP responses on /, /contact, /about, /team, /imprint, /privacy, plus any extraPaths. Parsing is regex + light HTML stripping; deobfuscates the common (at) / [dot] email tricks before extraction. Phone numbers are normalized to E.164 best-effort.