Website Email Scraper — Emails, Phones & Socials avatar

Website Email Scraper — Emails, Phones & Socials

Pricing

from $4.00 / 1,000 website scraped for contacts

Go to Apify Store
Website Email Scraper — Emails, Phones & Socials

Website Email Scraper — Emails, Phones & Socials

Extract emails, phone numbers & social profiles from any list of websites. Direct crawl of each site's contact pages — ranked emails with confidence, optional MX verification, payment-stack detection & 0-100 lead scoring. Paste 10,000 URLs, get one graded row per site. JSON/CSV/API.

Pricing

from $4.00 / 1,000 website scraped for contacts

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

11

Monthly active users

19 hours ago

Last modified

Share

Turn any list of websites into a contact database. Paste URLs or domains — the actor crawls each site's homepage and contact pages directly and returns every email, phone number, and social profile it finds, with a confidence grade and a 0–100 lead score on every row. JSON, CSV, Excel, or API out.

Why Use This Scraper?

  • ✅ Bulk-first — paste 10 or 10,000 websites in one run, one structured row per site
  • ✅ Ranked emails with a source + confidence grade on every row
  • ✅ Phone numbers and social profiles (LinkedIn, X/Twitter, Instagram, Facebook, YouTube, TikTok) from the same crawl at no extra cost
  • ✅ Optional email verification — syntax, MX record, disposable / role-based / free-provider flags
  • ✅ Optional payment-stack detection — know which leads actually take money online (Stripe, Shopify, PayPal, Paddle & more)
  • ✅ Built-in 0–100 lead score with explainable signals
  • ✅ Duplicate-proof billing — stripe.com, https://www.Stripe.com/ and STRIPE.COM collapse to one charged crawl
  • ✅ Drop-in compatible — accepts the startUrls input shape of other website-email actors unchanged

Overview

The Website Email Scraper is built for sales teams, lead-gen agencies, and data teams who have a list of company websites and need the contacts behind them — without visiting each site by hand.

The output is one row per website. Each row carries every email, phone, and social profile found on that site's public pages, plus grading fields (source, confidence, leadScore) so you can sort a large run by quality instead of eyeballing it.

Not every website publishes a contact email — that is a property of the web, not a bug. Rows for such sites still return phones and socials when present, and the onlyWithEmails toggle lets you emit (and pay for) only the rows where an email was found.

Supported Inputs

Accepted website formats

FormatExample
Bare domainstripe.com
Full URLhttps://www.stripe.com/
URL with pathhttps://stripe.com/about (crawled from its domain)

Copy-pasteable input

{
"websites": [
"apify.com",
"stripe.com",
"charitywater.org"
]
}

Paste a list

Have the sites in a spreadsheet column or a text file? Paste the whole blob into inputText — newline, comma, or semicolon separated, mixed formats welcome. Duplicates (with/without www, http, trailing slash, different casing) are detected and billed once.

Migrating from another email actor?

The actor also accepts the startUrls field (plain strings or { "url": "..." } objects), so the input of any competing website-email scraper works here unchanged.

Unsupported inputs

  • ❌ Pages behind a login wall or paywall
  • ❌ Social profile URLs as the target site (use the socials output field instead — pointing the crawler at facebook.com pages yields nothing useful)
  • ❌ Email discovery by company name alone — this actor takes websites; for name-to-domain discovery and person-level lookups use Email Finder & Verifier

Use Cases

AudienceUse case
Sales / SDR teamsTurn a scraped or purchased list of company websites into outreach-ready emails and phones
Lead-gen agenciesDeliver enriched contact lists to clients without manual site visits
MarketersBuild niche outreach lists (local businesses, ecommerce brands, SaaS tools) with deliverability flags
Data / RevOps teamsEnrich CRM records that have a website but no contact details
Founders & indie hackersQualify prospect lists by who actually takes payments online before spending outreach effort

How It Works

How It Works

  1. Input — paste websites (or a raw text blob) into the input; duplicates collapse automatically
  2. Crawl — each site's homepage plus common contact, about, and team pages are fetched directly
  3. Extract — emails, phone numbers, and social profile links are harvested and de-duplicated; role addresses (info@, sales@) are ranked ahead of noise
  4. Grade — every row gets a source, a confidence grade, and a 0–100 lead score; optional MX verification and payment-stack detection run in the same pass
  5. Output — one row per website in the dataset, exportable as JSON, CSV, Excel, or via API

Input Configuration

Input fields

FieldTypeRequiredNotes
websitesarray<string>yes (or inputText)Websites to scrape, one URL or domain per entry
inputTextstringoptionalPaste a blob of URLs/domains — newline, comma, or semicolon separated
onlyWithEmailsbooleanoptionalEmit only rows with at least one email — you pay only for hits. Default false
verifyEmailsbooleanoptionalValidate each found email (syntax + MX + disposable/role/free flags). Billed per email. Default false
maxVerifiedEmailsPerSiteintegeroptionalCeiling on verified (billed) emails per site; the rest return unverified
qualifyByPaymentbooleanoptionalDetect payment processors on the pages already fetched. Free. Default false
hunterApiKeystringoptionalYour own Hunter.io key enables a paid fallback when the site scrape finds nothing
maxItemsintegeroptionalHard cap on websites processed. Free plans are capped at 25
maxConcurrencyintegeroptionalParallel crawls, 1–50. Default 10
proxyobjectoptionalLeave empty — built-in residential proxy is included

The startUrls field (strings or { "url": ... } objects) is also accepted and merged into websites.

Common scenarios

1. Bulk list, pay only for sites where an email was found

{
"inputText": "stripe.com, notion.so, charitywater.org, basecamp.com",
"onlyWithEmails": true
}

2. Verified, deliverability-graded emails (bounded spend)

{
"websites": ["apify.com", "stripe.com", "charitywater.org"],
"verifyEmails": true,
"maxVerifiedEmailsPerSite": 3
}

3. Monetization-qualified leads

{
"websites": ["charitywater.org", "patagonia.com", "moz.com"],
"qualifyByPayment": true,
"onlyWithEmails": false
}

Output Overview

Each dataset item is one website row containing:

  • Identitywebsite (as you entered it), domain (normalized), resolvedWebsite
  • Emailsemail (best), emails (ranked list), emailCount, plus source (site-scrape / hunter / none) and confidence (high / medium / low)
  • Phonesphone (first), phones, phoneCount
  • Socialssocials keyed by network (linkedin / twitter / instagram / facebook / youtube / tiktok), socialCount
  • Verification (when verifyEmails is on) — emailVerifications per address, validEmails, validEmailCount, bestValidEmail
  • Payment qualification (when qualifyByPayment is on) — takesPayments, paymentProcessors, stripeLiveKey, paymentConfidence
  • ScoringleadScore (0–100), leadSignals (which signals fired)

Sites that publish no email still emit a row (unless onlyWithEmails is set) — often with phones and socials that make the lead workable anyway.

Output Samples

Full-signal row (verification + payment detection on)

{
"website": "charitywater.org",
"domain": "charitywater.org",
"resolvedWebsite": "https://charitywater.org",
"email": "info@charitywater.org",
"emails": ["info@charitywater.org", "team@charitywater.org"],
"emailCount": 2,
"phone": "6466882323",
"phones": ["6466882323", "9293674827"],
"phoneCount": 2,
"socials": {
"twitter": ["https://twitter.com/charitywater"],
"facebook": ["https://facebook.com/charitywater"],
"instagram": ["https://instagram.com/charitywater"],
"youtube": ["https://youtube.com/user/charitywater"],
"linkedin": ["https://linkedin.com/company/charity-water"]
},
"socialCount": 5,
"source": "site-scrape",
"confidence": "high",
"emailVerifications": [
{
"email": "info@charitywater.org",
"syntaxValid": true,
"mxFound": true,
"isDisposable": false,
"isRoleBased": true,
"isFreeProvider": false,
"verdict": "risky"
}
/* one entry per verified email */
],
"takesPayments": true,
"paymentProcessors": ["stripe", "shopify", "paypal"],
"stripeLiveKey": "pk_live_…",
"paymentConfidence": "high",
"leadScore": 69,
"leadSignals": ["emailPresent", "emailDomainMatch", "emailProviderBusiness", "phonePresent", "websitePresent", "socialAny"],
"scrapedAt": "2026-08-08T14:06:46.631Z"
}

Row where the site publishes no email

{
"website": "lagovistafamilydentistry.com",
"domain": "lagovistafamilydentistry.com",
"emails": [],
"emailCount": 0,
"phone": "5122773311",
"phones": ["5122773311", "5123797704"],
"phoneCount": 2,
"socials": {},
"source": "none",
"confidence": "low",
"leadScore": 20,
"leadSignals": ["phonePresent", "websitePresent"]
}

Key Output Fields

Identity

  • website, domain, resolvedWebsite, scrapedAt

Emails & Verification

  • email, emails[], emailCount, source, confidence
  • emailVerifications[]syntaxValid, mxFound, isDisposable, isRoleBased, isFreeProvider, verdict (valid / risky / invalid)
  • validEmails[], validEmailCount, bestValidEmail

Phones & Socials

  • phone, phones[], phoneCount
  • socials.{linkedin,twitter,instagram,facebook,youtube,tiktok}[], socialCount

Payment Qualification

  • takesPayments, paymentProcessors[], stripeLiveKey, paymentConfidence

Lead Scoring

  • leadScore (0–100), leadSignals[]

FAQ

Which pages does the actor fetch per website?

The homepage plus common contact-bearing paths (contact, about, team and similar). With qualifyByPayment on, checkout-related paths (pricing, cart, shop) are also probed so checkout-only payment processors are caught.

Will every website return an email?

No. Many sites — especially large brands — publish no address anywhere and route everything through a form. Those rows still return phones and socials when present. If you only want (and only want to pay for) rows with an email, set onlyWithEmails: true.

What do the verification verdicts mean?

valid = syntax OK, the domain accepts mail, and the address isn't disposable, role-based, or on a free provider. risky = deliverable but role-based (info@, team@) or on a free provider — fine for many outreach flows, flagged so you can decide. invalid = failed syntax or MX. Verification is DNS/list-based; it does not do live SMTP mailbox probing.

I have input formatted for another website-email actor — will it work here?

Yes. The actor accepts startUrls (strings or {"url": ...} objects) alongside its own websites field, so you can paste the same input you used elsewhere.

Do duplicate entries get billed twice?

No. Entries are normalized (scheme, www., path, casing stripped) before billing, so stripe.com and https://www.Stripe.com/ count once.

Can it scrape emails behind a login?

No. Only publicly reachable pages are fetched — no authenticated endpoints, no paywalled content.

What about JavaScript-heavy sites?

The crawler reads server-rendered HTML. Sites that render every byte client-side may yield fewer contacts; in practice most business sites expose contact details in the initial HTML.

Do I need my own proxies?

No — runs are routed through the actor's built-in residential proxy at no extra cost. You can override with your own proxy configuration if you prefer.

Support

Additional Services

Need something beyond the standard output? I build and maintain custom actors and data pipelines. Happy to help with:

  • Person-level contact discovery (names, titles, LinkedIn profiles) on top of these rows
  • Scheduled monitoring runs with change detection
  • Custom export shapes or direct delivery to your CRM / webhook

Drop me a line at muhamed.didovic@gmail.com.

Explore More Scrapers

If you found this useful, you might also like:

Full list at apify.com/memo23.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/website-email-scraper).

Purpose: bulk-crawl a list of websites for contact data — one row per site with ranked emails, phones, social profiles, optional MX verification, optional payment-stack detection, and a 0–100 lead score.

Minimal input:

{ "websites": ["apify.com"], "maxItems": 10 }

Output: one dataset row per website — website, domain, resolvedWebsite, email, emails[], emailCount, phone, phones[], phoneCount, socials {linkedin, twitter, instagram, facebook, youtube, tiktok}, socialCount, source, confidence, leadScore, leadSignals[], plus emailVerifications[] / validEmails[] when verifyEmails is on and takesPayments / paymentProcessors[] when qualifyByPayment is on.

Behaviors an agent should know:

  • Always set maxItems — an uncapped run processes every entry supplied.
  • Input is deduplicated by normalized domain before billing; startUrls (strings or {url} objects) and inputText blobs are accepted and merged into websites.
  • Billing: $0.004 per website row emitted (website-scraped); with verifyEmails on, $0.001 per email verified (emails-verified). onlyWithEmails: true means rows without emails are neither emitted nor charged. qualifyByPayment is free.
  • Free (non-paying) accounts are capped at 25 websites per run.
  • No login-gated content; JS-only sites may yield fewer contacts; sites with no published email return emails: [] with source: "none".

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by any of the websites it is pointed at. All trademarks, brand names, and logos mentioned or encountered belong to their respective owners.

The scraper accesses only publicly available web pages — no authenticated endpoints, paid features, or content behind a login wall. Users are responsible for ensuring that their use of the extracted data complies with the target websites' Terms of Service, applicable data-protection and anti-spam law (GDPR, CCPA, CAN-SPAM, PECR, etc.), and any contractual obligations of their own organization. Contact data should be used responsibly and lawfully.


SEO Keywords

website email scraper, email scraper, scrape emails from website, email extractor, bulk email finder, contact scraper, website contact extractor, email crawler, contact information scraper, lead generation scraper, b2b lead generation data, email list building, CRM enrichment, phone number scraper, social media links scraper, email verification MX check, ecommerce leads Stripe detection, sales prospecting data, cold outreach email list, Apify email scraper, email finder API