Website Contact Extractor β Email, Phone, Socials
Pricing
$5.00 / 1,000 domain contact-extracteds
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
Actor stats
0
Bookmarked
2
Total users
0
Monthly active users
25 days ago
Last modified
Categories
Share
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}What this actor does NOT do
- No LinkedIn. Deliberately excluded. LinkedIn's TOS and the
hiQ v. LinkedInchain 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.
