Bulk Website Contact & Email Finder avatar

Bulk Website Contact & Email Finder

Pricing

from $3.50 / 1,000 website contact records

Go to Apify Store
Bulk Website Contact & Email Finder

Bulk Website Contact & Email Finder

Extract verified emails, phone numbers & social profiles from a list of websites — with decision-maker email ranking. Predictable pay-per-website pricing, no charge for empty results.

Pricing

from $3.50 / 1,000 website contact records

Rating

0.0

(0)

Developer

Gerson Cesar

Gerson Cesar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Turn a list of websites into a ready-to-use B2B prospect list. Paste your domains, and this contact and email scraper crawls each site's homepage plus its contact and about pages to return ranked emails, phone numbers, and social profiles — with decision-maker emails (CEO, founder, owner) ranked first and optional MX email verification built in. You pay a predictable price per website, never per page and never for empty results.

Built for agencies, SDRs, recruiters, and founders running cold outreach and lead enrichment at scale, this email finder uses pure-HTTP crawling (no headless browser), so it is fast, cheap, and reliable across thousands of domains.


What does the Bulk Website Contact & Email Finder do?

The Bulk Website Contact & Email Finder takes a list of websites or domains and scans each one's most contact-rich pages (home, /contact, /about, and similar) to extract business emails, phone numbers, and social media profiles. It ranks likely decision-maker emails above generic info@ or hello@ addresses, optionally verifies email deliverability via MX checks, and charges you a flat rate per website that returns a contact — so your cost is predictable and you are never billed for empty results.


Why use this contact & email scraper?

  • Cold outreach lists in minutes — agencies and SDRs paste a list of target company domains and get back clean, deduplicated contact records ready to import into a CRM or sequencer.
  • Lead enrichment at scale — already have a list of company websites? Enrich it with emails, phones, and LinkedIn/Twitter profiles so your reps never start a conversation cold.
  • Find the decision maker, not the help desk — recruiters and founders get CEO/founder/owner emails ranked first, so outreach lands with the person who can actually say yes.
  • Cleaner deliverability, fewer bounces — optional built-in MX verification flags risky and invalid addresses before you ever load them into a sending tool, protecting your domain reputation.
  • Predictable, founder-friendly pricing — pay only for websites that return a real contact (~$5 per 1,000 sites). No per-page surprises, no charges for dead domains, no monthly subscription lock-in.

How to extract contacts from websites

  1. Click "Try for free" (or open the Actor in your Apify Console).
  2. Add your websites — paste your domains into startUrls, one per line, or bulk-paste a CSV of URLs.
  3. Choose what to extract — keep emails, phones, and socials on (defaults), and decide whether to enable decision-maker ranking and email verification.
  4. Set the depth — adjust maxPagesPerDomain if you want to scan more candidate pages per site (home, contact, about, etc.).
  5. Click "Start" and let the Actor crawl every domain in parallel.
  6. Download your results in JSON, CSV, HTML, or Excel — or pull them automatically via the Apify API into n8n, Make, Zapier, or Google Sheets.

Input

FieldKeyTypeDefaultDescription
Websites to scanstartUrlsarray of URLs (required)Websites/domains to scan. Supports bulk paste or CSV of URLs.
Max pages per domainmaxPagesPerDomaininteger (1–20)5How many candidate pages (home, /contact, /about, …) to scan per domain.
Extract emailsextractEmailsbooleantrueExtract email addresses.
Extract phonesextractPhonesbooleantrueExtract phone numbers from tel:/callto: links.
Extract socialsextractSocialsbooleantrueExtract social media profiles.
Verify emailsverifyEmailsbooleanfalseRun an MX deliverability check. Billed as the email-verified add-on event.
Rank decision makerrankDecisionMakerbooleantrueRank likely decision-maker emails first.
Max concurrencymaxConcurrencyinteger10How many domains to crawl in parallel.
Proxy configurationproxyConfigurationproxy objectApify proxy onProxy settings used for crawling.

Input example

{
"startUrls": [{ "url": "https://apify.com" }, { "url": "https://example.com" }],
"maxPagesPerDomain": 5,
"verifyEmails": false,
"rankDecisionMaker": true
}

Output

Each scanned domain produces one structured dataset item like the one below:

{
"domain": "apify.com",
"sourceUrls": ["https://apify.com", "https://apify.com/contact", "https://apify.com/contact-us"],
"emails": [
{ "email": "hello@apify.com", "type": "role", "score": 0.15, "verification": null }
],
"phones": [],
"socials": [
{ "platform": "linkedin", "url": "https://linkedin.com/company/apify" },
{ "platform": "twitter", "url": "https://x.com/apify" },
{ "platform": "tiktok", "url": "https://tiktok.com/@apifytech" }
],
"scrapedAt": "2026-06-15T06:16:25.355Z",
"pagesCrawled": 3
}

You can download the results in JSON, CSV, HTML, or Excel.


Output data fields

FieldTypeDescription
domainstringNormalized domain that was scanned.
sourceUrlsstring[]Pages crawled for this domain.
emailsarrayList of emails found for the domain (see sub-fields below).
emails[].emailstringThe email address.
emails[].typerole | personal | otherWhether the address is a role inbox (info@, sales@), a personal address, or other.
emails[].scorenumber (0–1)Decision-maker likelihood — higher means more likely to be a decision maker. Used for ranking.
emails[].verificationvalid | invalid | risky | unknown | nullMX deliverability result. null unless Verify emails was enabled.
phonesstring[]Normalized phone numbers found in tel:/callto: links.
socialsarraySocial media profiles found for the domain.
socials[].platformlinkedin | twitter | facebook | instagram | youtube | tiktokThe social network.
socials[].urlstringURL of the social profile.
scrapedAtstring (ISO 8601)Timestamp when the domain was scraped.
pagesCrawlednumberHow many pages were actually crawled for this domain.

How much does it cost to find website contacts?

This Actor uses Pay Per Event pricing — you are billed only for results you actually get, with no monthly subscription.

EventPriceWhen it's charged
contact-record-extracted$0.005 per website (≈ $5 per 1,000 websites)Charged once for every website that returns at least one contact. Empty results are never charged.
email-verified$0.002 per email verifiedCharged only when Verify emails is enabled, once per email checked.

Concrete examples

  • Scanning 1,000 websites costs about $5.
  • Adding verification for the ~3,000 emails found across those sites adds about $6.

Because empty results are never billed and you pay per website (not per page), your cost stays predictable no matter how deep each site is crawled.


Tips & advanced options

  • Bulk-load with CSV — paste a CSV or a newline-separated list of URLs directly into startUrls to queue thousands of domains in one run.
  • Crawl deeper on big sites — raise maxPagesPerDomain (up to 20) for large corporate sites where contact details live a few clicks past the homepage.
  • Enable verifyEmails for cleaner lists — turn on MX verification before importing into a sending tool to filter out invalid and risky addresses and protect your sender reputation.
  • Keep decision-maker ranking on — with rankDecisionMaker enabled, the highest-scoring (most likely founder/owner/CEO) email appears first in each record, so your outreach targets the right person automatically.
  • Tune concurrency for speed — increase maxConcurrency to crawl more domains in parallel on large lists; lower it if you want a gentler crawl footprint.
  • Use a proxy for strict sites — keep proxyConfiguration on Apify Proxy (default) so sites that block datacenter traffic still return contacts reliably.

Is scraping website contact data legal? This Actor only collects information that businesses publish publicly on their own websites — the same data a visitor sees on a contact or about page. You are responsible for how you use the results. When the data includes personal information about individuals (for example a named person's email), regulations such as the GDPR (EU) and LGPD (Brazil) may apply. Make sure you have a lawful basis for processing and reaching out, honor opt-out and unsubscribe requests, and comply with anti-spam laws (such as CAN-SPAM and the GDPR/LGPD) in the recipient's jurisdiction before sending outreach.

Why are some fields null or empty? The verification field is null unless you enabled Verify emails. Empty arrays (for example "phones": []) simply mean that type of contact was not published on the pages that were crawled.

I got fewer results than expected — what can I do? Some sites place contact details behind forms, images, or JavaScript-rendered content, or on pages this crawler did not visit. Try raising maxPagesPerDomain, confirming the domains are correct and reachable, and keeping Apify Proxy enabled so strict sites still respond.

Support & contact Found a bug or have a feature request? Open an issue on the Actor's Issues tab in Apify Console, or contact us through the Actor page. We typically respond within one business day.