Website Emails Scraper
Pricing
$3.60 / 1,000 scraped emails
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é
Maintained by CommunityActor stats
27
Bookmarked
1.2K
Total users
71
Monthly active users
5 hours
Issues response
20 hours ago
Last modified
Categories
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.
- Collect public contact emails from submitted sites with Website Email Scraper.
- Save one row for each address with One row per unique email.
- Check a seed and a bounded set of related pages with Shallow website email scraping by default.
- Skip repeat addresses and repeat charges with Duplicate-safe website email scraping.
- Test a short seed list before a larger crawl with Start website email scraping with a small seed list.
📬 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
- Open the Input tab and add public website URLs.
- 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.
- Keep the default Apify Proxy settings, or choose a direct connection in
Proxy configuration. - 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
| Field | Type | What it does |
|---|---|---|
urls | array of objects | Required list of public website seeds. Each accepted email becomes its own dataset row. |
urls[].url | string | Public website URL to check for contact email addresses. |
urls[].userData | object | Optional settings for one seed. |
urls[].userData.maxNbEmailsToScrape | integer | Optional maximum accepted emails from one seed. Leave it empty to return all available results until the source is exhausted. |
maxNbEmailsToScrape | integer | Optional maximum accepted emails for the whole run. Leave it empty to return all available results until the source is exhausted. |
proxyConfiguration | object | Optional 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
| Field | Type | What it does |
|---|---|---|
email | string | One accepted, normalized email address. It appears at most once per run. |
url | string | Page URL where the first accepted match was found. |
seedUrl | string | Submitted 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 🫡
🔗 Related Actors
- Website URL Crawler & Link Extractor to find public page URLs that can become email-crawl seeds.
- Product Hunt Scraper to collect product websites and launch pages before checking them for public contact emails.
- Tiny Startups Scraper to collect startup websites and optional public emails for follow-up crawling.
- Uneed Scraper to collect product websites and public contact data for email-crawl seeds.
- Email MX Verifier to check syntax and MX records after you collect email addresses.
Made with ❤️ by Maxime Dupré