Email Extractor: Website Emails, Phones & Socials, Verified avatar

Email Extractor: Website Emails, Phones & Socials, Verified

Pricing

from $2.50 / 1,000 domain with contacts

Go to Apify Store
Email Extractor: Website Emails, Phones & Socials, Verified

Email Extractor: Website Emails, Phones & Socials, Verified

Email extractor for websites and domains: extract emails from website lists, plus phone numbers, social media links and address. A website email scraper where every email is SMTP-verified. $2.50 per 1,000 domains with contacts.

Pricing

from $2.50 / 1,000 domain with contacts

Rating

0.0

(0)

Developer

PNDA

PNDA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Email Extractor: extract emails, phone numbers and social media links from any website, SMTP-verified

Email Extractor turns a list of websites or domains into a clean contact list: emails, phone numbers, social media links (Facebook, Instagram, LinkedIn, X/Twitter, TikTok, YouTube, Pinterest), company name and address, with one row per domain. Every email is verified with a live SMTP mailbox check before you get it, so you know which addresses are deliverable.

It is a domain email extractor, a website email scraper and a contact details scraper in one Actor, and you pay per domain where contacts are found, never per page crawled.

Why this email extractor

Email Extractor (this Actor)Typical website email scraper
Real SMTP verification of every emailIncluded (deliverable / risky / undeliverable / unknown, catch-all, role account)None, or format / MX check only, or a paid add-on
BillingPer domain with contacts. A domain with nothing found is freePer page crawled (a 20-page site = 20 charges) or per row
OutputOne row per domain, emails ranked (site's own domain first)One row per page, to deduplicate yourself
Junk filteringImage names, tracking IDs, placeholders, theme-vendor and plugin addresses removedOften left in
Obfuscated emailsname [at] domain.com, @, %40, Cloudflare email protection decodedPartial
Phone formatE.164 (+14155550123) when the country is knownRaw text

What it extracts

  • Emails: mailto: links, plain text, obfuscated forms ([at], (at), @, %40) and Cloudflare-protected emails. Emails on the website's own domain come first, then free mailboxes (gmail...), then others.
  • SMTP verification of each email: deliverable, risky, undeliverable or unknown, with a catch-all flag and a role account flag (info@, contact@, sales@...).
  • Phone numbers: tel: links and numbers in the page text, normalised to E.164 when the country is known (address on the site, country domain, or your default country).
  • Social media links: Facebook, Instagram, LinkedIn (company or profile), X / Twitter, TikTok, YouTube, Pinterest. Share buttons and the website builder's own accounts are ignored.
  • schema.org data: Organization / LocalBusiness email, telephone, address and sameAs profiles.
  • Company name and postal address when the site publishes them.

How it works

For each domain, the Actor reads up to 5 pages: the homepage, then the contact, legal (impressum, mentions légales, legal notice) and about pages found through the homepage links or the site's sitemap.xml. It stops early as soon as an email, a phone and a social link are found, so most sites take 1 to 3 pages.

Pages are fetched with plain HTTP first. Two optional fallbacks, billed only when actually used:

  • JavaScript-only sites (React, Vue, some Wix pages) are opened in a real browser (useBrowser, on by default).
  • Protected sites behind an anti-bot wall such as Cloudflare's "Just a moment..." page are unblocked (unblockProtectedSites, off by default). Without it, those domains come back with status blocked, free.

Input

{
"urls": ["acme.com", "https://www.example-bakery.co.uk/contact", "contact@another-shop.fr"],
"verifyEmails": true,
"useBrowser": true,
"unblockProtectedSites": false,
"maxPagesPerDomain": 5,
"defaultCountry": "US"
}
  • urls: 1 to 10,000 website URLs, bare domains or even emails. www.acme.com, acme.com/contact and https://acme.com are the same domain: processed and billed once.
  • defaultCountry: optional two-letter code used to format local phone numbers.

Output (one row per domain)

{
"status": "ok",
"input": "acme.com",
"domain": "acme.com",
"url": "https://www.acme.com/",
"companyName": "Acme Inc.",
"primaryEmail": "jane@acme.com",
"emails": ["jane@acme.com", "info@acme.com"],
"emailDetails": [
{ "email": "jane@acme.com", "ownDomain": true, "verdict": "deliverable", "catchAll": false, "roleAccount": false, "reason": "Mailbox exists", "charged": true },
{ "email": "info@acme.com", "ownDomain": true, "verdict": "risky", "catchAll": true, "roleAccount": true, "reason": "Catch-all domain: the server accepts any address", "charged": false }
],
"phones": ["+14155550123"],
"facebook": "https://www.facebook.com/acme",
"instagram": "https://www.instagram.com/acme",
"linkedin": "https://www.linkedin.com/company/acme",
"twitter": "https://x.com/acme",
"tiktok": null,
"youtube": "https://www.youtube.com/@acme",
"pinterest": null,
"socialLinks": ["https://www.facebook.com/acme", "..."],
"address": "1 Main St, 94105, San Francisco, US",
"pagesRead": ["https://www.acme.com/", "https://www.acme.com/contact"],
"fetchedWith": ["http"],
"fromCache": false,
"charged": { "domain": true, "verifiedEmails": 1, "browserPages": 0, "unlockerPages": 0 }
}

status is ok (contacts found), no-contacts, blocked (anti-bot wall), unreachable (DNS, TLS, timeout) or error. Only ok rows are charged. Undeliverable emails stay in emailDetails but are removed from emails. Export as JSON, CSV or Excel, or plug the dataset into Make, Zapier, n8n or Google Sheets.

Pricing (pay per event)

EventPriceWhen
Domain with contacts$2.50 / 1,000 domainsA domain where at least one email, phone or social link is found. A domain with nothing found is free.
Verified email$1.20 / 1,000 emailsOnly final SMTP answers: deliverable or undeliverable. Risky, catch-all and unknown are free. Up to 5 emails verified per domain.
Browser page$2 / 1,000 pagesOnly pages that needed a real browser (JavaScript-only sites).
Unblocked page$6 / 1,000 pagesOnly when "Unblock protected sites" is on and a page was actually unblocked.
Actor start$0.005 per run

From October 24, 2026: a catch-all email published on the website (risky, catchAll: true) is charged $0.60 / 1,000, half the price of a verified email; other risky and unknown emails stay free.

Example: 1,000 small-business websites, 70% with contacts and 1.5 verified emails each on average: 700 × $0.0025 + 1,050 × $0.0012 = about $3.00, with SMTP verification included.

The Actor checks your maximum cost per run before every paid step: when it is reached, the remaining domains are listed in one budget-too-low row and are not charged.

Works with a free Apify account too. Free-plan accounts can use every feature at the same per-result prices, paid from their monthly Apify credit. The only limits are your credit and your maximum cost per run.

Results are kept for 30 days: running the same domain again within that window returns the stored result instantly, at the same price.

Use cases

  • Lead generation: turn a list of company websites into verified B2B emails and phone numbers.
  • Enrich a CRM: add social media links, phones and verified emails to accounts you already have.
  • Local business outreach: combine with a Google Maps search to get the websites, then extract and verify their contacts.
  • Influencer and partner research: collect Instagram, TikTok and YouTube profiles of brands from their websites.
  • Clean your data: find which published addresses actually accept mail before you send anything.

FAQ

Does it work with a free Apify account? Yes, it works with a free Apify account too, at the same prices: you pay only for domains where contacts are found, from your monthly Apify credit.

How is this different from an email extractor online or a Chrome extension? It runs in the cloud on thousands of domains at once, reads the contact and legal pages for you, and verifies every email with a real SMTP check.

Does it scrape the whole website? No. It reads at most 5 pages per domain (homepage, contact, legal, about), the pages where businesses publish their contact details. That keeps runs fast and cheap.

Why is an email "risky" or "unknown"? Catch-all servers accept every address, so a single mailbox cannot be confirmed (risky, catchAll: true). Some mail servers do not answer clearly or rate-limit checks (unknown). Neither is charged.

Can I use it from n8n, Make or Zapier? Yes, through the Apify integrations or the API: send a list of URLs, read the dataset.

Is it a Hunter.io alternative? For domain-level contacts published on a website, yes: you get emails, phones and social media links with verification included, billed per domain.

  • Email Finder: No email on the site? Find a named person's work email from first name, last name and company domain.
  • Email Verifier: Already have an email list from elsewhere? Bulk-verify it before sending, $0.95 per 1,000.
  • Google Maps API & Scraper: No list of websites yet? Pull local businesses by keyword and city, with their websites, then extract their contacts here.
  • Shopify & WooCommerce Stores Database: Want e-commerce leads? Filter Shopify and WooCommerce stores by country, category and apps, then extract their contacts here.
  • LinkedIn Scraper & People Search: Need the decision-maker, not the generic inbox? Find people by job title and company.