Website Emails Scraper avatar

Website Emails Scraper

Pricing

$3.60 / 1,000 scraped emails

Go to Apify Store
Website Emails Scraper

Website Emails Scraper

Find public contact email addresses from the website URLs you submit. Get one unique, normalized email per dataset row with the source and seed URLs attached.

Pricing

$3.60 / 1,000 scraped emails

Rating

4.6

(3)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

27

Bookmarked

1.2K

Total users

71

Monthly active users

5 hours

Issues response

20 hours ago

Last modified

Share

✉️ Find public contact emails from website pages

For sales teams, lead researchers, and developers who already have public website URLs, Website Emails Scraper finds public contact email addresses. It returns one clean row for each unique, normalized email, with the source page and submitted seed URL. This helps you review contact data without opening every page by hand.

📬 See clean email rows with their source pages

Each saved row has an email address, the page where it was first found, and the submitted seed URL. The email is accepted, normalized, and unique within the run. The Actor returns email addresses only, not phone numbers or nearby page text.

🚀 Crawl a small set of pages first

Quick start

  1. Open the Input tab and add public website URLs.
  2. Leave the run-wide and per-site email limits empty to return all available results until the source is exhausted. Set a limit when you want a smaller first run.
  3. Keep the default Apify Proxy settings, or choose a direct connection in Proxy configuration.
  4. Run the Actor and open the dataset from the Output tab.

What happens in a run

The Actor checks each seed and a limited set of relevant same-site pages, such as contact, about, and team pages. A malformed or unreachable seed, or a seed with no accepted email, does not stop other valid seeds from running. Repeated normalized emails are skipped after the first saved match, so later matches do not create another row.

⚙️ Input

Add one or more public website URLs. This example is copied from the public input of a successful current-beta default-input run.

Input example

{
"urls": [
{
"url": "https://www.w3.org/contact/"
},
{
"url": "https://www.apache.org/foundation/contact"
},
{
"url": "https://www.ietf.org/contact/"
},
{
"url": "https://www.freebsd.org/administration/"
},
{
"url": "https://www.openbsd.org/mail.html"
}
],
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyCountry": "US"
}
}

Input fields

FieldTypeWhat it does
urlsarray of objectsRequired list of public website seeds. Each accepted email becomes its own dataset row.
urls[].urlstringPublic website URL to check for contact email addresses.
urls[].userDataobjectOptional settings for one seed.
urls[].userData.maxNbEmailsToScrapeintegerOptional maximum accepted emails from one seed. Leave it empty to return all available results until the source is exhausted.
maxNbEmailsToScrapeintegerOptional maximum accepted emails for the whole run. Leave it empty to return all available results until the source is exhausted.
proxyConfigurationobjectOptional Apify proxy settings for the seed and relevant contact pages. The default uses Apify Proxy with the US country; set useApifyProxy to false for a direct connection.

Input rules

Use a positive integer when you set either email limit. Leave either limit empty to return all available results until the source is exhausted. The Actor can continue with valid seeds when another seed is malformed or unreachable.

🧾 Output

The Output tab exposes results, a link to the default dataset. Each dataset row has the same shape.

Output fields

FieldTypeWhat it does
emailstringOne accepted, normalized email address. It appears at most once per run.
urlstringPage URL where the first accepted match was found.
seedUrlstringSubmitted website URL that produced the row.

Output example

This complete row came from a successful current-beta run. It shows a clean email with no phone number or nearby page text.

{
"url": "https://www.carnivalpainting.com/contact.html",
"seedUrl": "https://www.carnivalpainting.com/contact.html",
"email": "brian.beltran@carnivalpainting.com"
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged one event for each accepted, unique email address saved to the default dataset. See the Apify pricing panel for current rates.

Buyer-facing event

Email address

One accepted, unique email address is saved to your dataset.

🔌 Integrations

Review rows in the Apify Console, read the default dataset with the Apify API, or export the dataset. This short guide shows a connected Actor workflow:

❓ FAQ

Will the Actor return phone numbers or nearby page text?

No. It saves only accepted, normalized email addresses. Phone numbers and adjacent page text are not output rows.

What happens when the same email appears on more than one page?

The Actor saves the first eligible occurrence of a normalized address. Later matches are ignored, so the saved row keeps the first source page and seed URL. Later matches do not create another row or email-address event.

How far does it crawl?

It checks each submitted seed and a limited set of relevant same-site pages, such as contact, about, and team pages. It does not promise a full-site crawl.

Can I limit the number of emails?

Yes. Set a positive run-wide limit, a positive per-site limit, or both. Leave either limit empty to return all available results until the source is exhausted.

What if a seed is invalid, unreachable, or has no public email?

That seed can finish without an email row while other valid seeds continue. Only accepted email addresses are saved.

Does it access private pages or verify mailboxes?

No. It checks public pages only. It does not use login-required or unpublished contacts, probe mailboxes with SMTP, or look up contacts in an off-site database.

Can I use a direct connection?

Yes. Keep the default Apify Proxy settings or set useApifyProxy to false in proxyConfiguration.

What do url and seedUrl mean?

url is the page where the first accepted email match was found. seedUrl is the website URL you submitted that led to the row.


📝 Actor Release Notes

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡



Made with ❤️ by Maxime Dupré