Website Email Scraper - Role Mailboxes from Domains
Pricing
from $1.60 / 1,000 processed websites
Website Email Scraper - Role Mailboxes from Domains
Scrape shared role mailboxes (info@, sales@, support@) from company websites and domain lists. One row per email with the page it was found on. Personal-looking addresses dropped; $2/1,000 sites with an email, others free.
Pricing
from $1.60 / 1,000 processed websites
Rating
0.0
(0)
Developer
Yukai Lin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
34 minutes ago
Last modified
Categories
Share
Website Email Scraper — Role Mailboxes from Domains
What does Website Email Scraper do?
Get the shared company mailboxes (info@, sales@, support@, office@...) that businesses publish on their own public websites. Paste a list of company websites or domains into Company websites or domains; you get one Dataset row per mailbox with the domain, the mailbox type and the page it was found on, ready for a CRM or outreach import. The first-run form contains two public example sites; replace them with your own list.
How to use
- Enter one website or domain per line, e.g.
acme.comorhttps://www.acme.com/contact. - Keep the defaults: Role mailboxes only on, Which results are charged? = email only, Output format = one row per email, Skip pages robots.txt disallows on, Find websites for company names off.
- Start the Actor and open the Role mailboxes view:
domain,email,emailType,emailFoundOn,charged,errorType. The full Dataset keeps the engine's other columns (phone, social profiles, source record...).
Input example
The same values as the form defaults:
{"domains":["dauntbooks.co.uk","hofbraeuhaus.de"],"roleEmailsOnly":true,"requiredContact":"email","outputMode":"emailRows","respectRobotsTxt":true,"findWebsitesForNames":false}
Other inputs
This is a focused form for the existing Website Email Extractor engine (contact-extractor). The form only changes defaults and order; it does not restrict what the engine accepts. Other valid engine inputs remain available through advanced JSON and follow the engine's own behavior and price: startUrls, datasetId (e.g. Google Maps results), rows from a sheet or CRM, findWebsitesForNames: true to look company names up, roleEmailsOnly: false to keep personal-looking addresses, requiredContact: "any" to charge websites with only a phone or social profile, and outputMode: "sites" for one row per website.
Output example
A website with two role mailboxes gives two rows; only the first is charged (illustrative values, shown in the Role mailboxes view):
| domain | emailType | emailFoundOn | charged | errorType | |
|---|---|---|---|---|---|
| acme.com | info@acme.com | role | https://acme.com/contact | true | |
| acme.com | sales@acme.com | role | https://acme.com/contact | false | |
| false | invalid_input |
The last row is a company-name line (Acme Bakery) with name lookup off: free, and its input and error columns in the full Dataset say why.
Pricing
- A website where at least one role mailbox is found on its own pages is charged once (
site-processed): $0.002 per website on Free/Bronze ($2 per 1,000), $0.0018 on Silver, $0.0016 on Gold and above. In one-row-per-email output only its first row showscharged: true. The price is the same however many pages are read. - Free rows (
charged: false): websites with only a phone number, a social profile or personal-looking addresses (dropped by Role mailboxes only), websites with nothing found, websites whose home page robots.txt disallows for our crawler (robots_disallowed), sign-in pages (login_required), unreachable websites, and lines that are not a website or domain, such as a company name (invalid_input).
Set Max cost per run in Apify before a large list.
Limitations
- Only public pages of the websites you list are read (home page plus likely contact, imprint and about pages). Every request identifies itself as TidyTools; the Actor never logs in, never solves CAPTCHAs or bot checks and respects Retry-After.
- Personal-looking addresses (e.g.
anna.meier@...) are removed before output and billing while Role mailboxes only is on. The Actor does not open person or social profile pages and does not guess or generate email addresses. - robots.txt: with Skip pages robots.txt disallows on (the default here), pages robots.txt disallows for our crawler (TidyToolsContacts) are skipped. If you turn it off in advanced JSON, the engine reads the websites you list even where robots.txt disallows automated crawlers.
- A company name with a comma (
Acme Bakery, Austin TX) is read as two lines, each a freeinvalid_inputrow. - You are responsible for how you use the results: follow the data-protection and anti-spam laws that apply to you and the people you contact (for example GDPR, CAN-SPAM, CASL) and respect each website's terms. A shared mailbox can still reach a person; keep only what you need and honour opt-out requests.
FAQ
Can I enter company names instead of domains? Not by default: a company-name line is a free invalid_input row. Set findWebsitesForNames: true in advanced JSON to let the engine look up verified websites; no verified website gives a free company_not_found row.
Why is only one row per website charged? Billing is per website, not per email: a website with several role mailboxes costs one site-processed event.
Can I get personal emails too? Set roleEmailsOnly: false in advanced JSON; the engine then returns every business email published on the website.