Website Contact Scraper: Emails, Phones & WhatsApp avatar

Website Contact Scraper: Emails, Phones & WhatsApp

Pricing

Pay per usage

Go to Apify Store
Website Contact Scraper: Emails, Phones & WhatsApp

Website Contact Scraper: Emails, Phones & WhatsApp

Extract emails (MX-checked), phone numbers (E.164, validated) and 16 social/messaging profiles incl. WhatsApp & Telegram from any company website. One clean, de-duplicated row per site. Respects robots.txt. Free during launch: you pay only Apify platform usage.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Unadhi

Unadhi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 minutes ago

Last modified

Categories

Share

Contact Details Scraper: Emails, Phones, WhatsApp & Telegram at Half Price

Give it a list of company websites. For each site you get one clean, de-duplicated row with every public email, phone number and social or messaging profile we can find, plus the page each one was found on.

Price: Free during launch: you pay only Apify platform usage. You pay only for pages we actually fetch and read. Blocked, failed, robots.txt-disallowed and terms-of-service-blocked sites are free.

Enricher mode: point it at the dataset from any Apify run, for example a Google Maps scrape (compass/crawler-google-places), or paste a plain list of domains. It visits each business website once and copies title, placeId, address and other fields into sourceItems, so you can join the results back to your list.

Privacy by default: only shared role mailboxes (info@, sales@, support@, careers@, branch shops) are returned. Addresses that identify one person (ravi.k@, ceo@, hr.priya@) and staff LinkedIn profiles are dropped and only counted unless you switch them on (see "DPDP / GDPR notice" below).

Why it's better

This Actor
Output1 row per website, merged across all pages visited. No duplicate rows to clean up.
Duplicate inputszoho.com, https://zoho.com/ and www.zoho.com count as one site, so you never pay twice
EmailsChecked against the domain's mail servers (free MX check → mxValid), labelled role (info@, sales@) or personal, and marked sameDomain. Template addresses like yourname@… and you@yourbusiness.com are dropped
PhonesNormalised to E.164 (+919848022338) and checked for validity. Obvious placeholder numbers (+1 234 567 8910) are dropped. tel: links are preferred
WhatsAppClick-to-chat links (wa.me, api.whatsapp.com/send?phone=) become real phone numbers with a ready wa.me link
NetworksLinkedIn (company pages; staff profiles go in a separate linkedinPeople field), X/Twitter, Facebook, Instagram, YouTube, TikTok, Pinterest, GitHub, Threads, Telegram, WhatsApp, Discord, Snapchat, Reddit
CrawlHomepage first, then the most contact-like pages (contact, about, impressum, support). Usually 3–4 pages per site are enough
Politeness and legalityFollows robots.txt the RFC 9309 way, uses an honest bot User-Agent, and reads each site's terms of service. Sites whose terms forbid scraping/crawling, and platform pages (Facebook, Instagram, LinkedIn, marketplaces) that Maps often lists as a "website", are skipped for free. No proxies, no logins, no bypassing blocks
EnricherInput from an Apify dataset ID (auto-detects website / url / domain fields; Google Maps links are ignored), a plain domain list, or start URLs. Branches that share one website are crawled and charged once
Spend limitPages are reserved before crawling, so the run stops cleanly at your max-charge limit instead of doing unpaid work

Input

Enrich a Google Maps (or any) dataset:

{ "datasetId": "<dataset ID of your Google Maps run>", "maxPagesPerSite": 4, "defaultCountry": "IN" }

Or a list of sites:

{
"urls": ["kimshospitals.com", "https://www.fmsdental.com"],
"startUrls": [{ "url": "https://www.zoho.com" }, { "url": "basecamp.com" }],
"maxPagesPerSite": 4,
"checkEmailMx": true,
"defaultCountry": "IN"
}

Output (one row per site, shortened)

{
"domain": "tanishq.co.in",
"status": "ok",
"pagesScraped": 4,
"emails": [],
"phones": [
{ "phone": "+9118002660123", "source": "tel-link", "valid": true, "country": "IN" },
{ "phone": "+918147349242", "source": "text", "whatsapp": "https://wa.me/918147349242" }
],
"socials": { "instagram": [{ "url": "https://www.instagram.com/tanishqjewellery", "foundOn": "https://www.tanishq.co.in" }],
"whatsapp": [{ "url": "https://api.whatsapp.com/send?phone=8147349242", "foundOn": "https://www.tanishq.co.in" }] },
"counts": { "emails": 0, "phones": 3, "socialProfiles": 4, "whatsapp": 1, "telegram": 0 }
}

status is one of ok, blocked-by-robots (the site asks bots not to crawl), blocked-by-terms (the site's terms forbid scraping; the clause is quoted in error), blocked-by-tos-list (platform page such as Facebook), blocked-by-site (HTTP 401/403/429), rate-limited or failed. None of the non-ok statuses cost anything. Rows also carry personalEmailsDropped, personProfilesDropped and, in enricher mode, sourceItems.

Measured on 20 real company websites (29 Sep 2026)

  • 14 of 20 sites returned data. That's every site that allowed crawling: 14 of 14, with 0 errors. 2 sites disallow all bots in robots.txt and 4 block automated clients (HTTP 403). All 6 were reported and not charged.
  • Of those 14: at least one email on 10, a phone on 6, a social profile on 13, WhatsApp on 2. In total 18 emails (all passed the MX check), 13 phones and 67 company social profiles.
  • 3.8 pages per site on average. The median site took 1.7 s at 10 sites in parallel.

Measured in enricher mode (29 Sep 2026, a 31-item Google-Maps-format dataset of Hyderabad businesses)

  • 31 items → 29 with a website → 27 unique sites (2 branches shared a website, so they were charged once).
  • 20 sites returned data. We skipped Facebook and Instagram "websites" (2), 1 site whose terms forbid harvesting, 2 sites that answered 403 to our bot and 2 that were unreachable, all for free.
  • 65 pages → 32 role emails on 10 sites, 171 phone numbers on 15 sites and 101 social profiles. 18 personal emails were dropped by the privacy default.

DPDP / GDPR notice (please read)

  • Work emails and phone numbers of identifiable people are personal data under India's Digital Personal Data Protection Act 2023 and the EU/UK GDPR. The DPDP exemption for publicly available data covers only data the person themself made public; "it is on a website" is not automatically enough.
  • That is why the defaults are includePersonalEmails: false and includePersonProfiles: false. Turn them on only if you have a lawful basis (e.g. a documented legitimate-interest assessment under GDPR), give people notice, honour opt-out/erasure requests promptly, and keep the foundOn source URL of every contact.
  • Role mailboxes can still reach a person. Keep outreach relevant, identify yourself, include an opt-out, and follow CAN-SPAM, TRAI (no unsolicited commercial SMS/calls in India) and WhatsApp's own policies.
  • You, as the user who runs the Actor and decides what to do with the output, are responsible for compliance. This notice is general information, not legal advice.
  • The Actor never logs in, never bypasses blocks and never collects data behind a login.

Pricing

Free during launch: you pay only Apify platform usage.