Website Email & Contact Scraper
Pricing
from $4.00 / 1,000 website with emails founds
Website Email & Contact Scraper
Crawl any list of websites and get their emails, phone numbers and social profiles, sorted by inbox type (editorial, general, person, support) with the page each one was found on.
Pricing
from $4.00 / 1,000 website with emails founds
Rating
0.0
(0)
Developer
Avocado Code
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Give it a list of websites and get back every email address, phone number and social profile on them. Each email comes with the exact page it was found on and a label telling you what kind of inbox it is.
Built for people who need to reach the right inbox at a company, like link builders, PR teams, partnership managers and sales teams. A plain list of addresses isn't enough for that.
What you get for each website
- Emails, sorted so the most useful inboxes come first:
editorial_partnerships_ads: editor@, press@, partnerships@, advertise@, marketing@, writeforus@ …general: info@, contact@, admin@person: named people such as john@, john.smith@, j.smith@support: support@other: everything else (hello@, sales@, jobs@ …), returned only in "All emails" mode
- The page each email was found on, so you can check it in one click
sameDomainflag, which separates the site's own inboxes from agency, parent-company or partner addresses shown on the same page- Phone numbers, validated with Google's libphonenumber and normalised to international format, so you don't get random digits from URLs or article IDs
- Social profiles: LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub, Bluesky, Threads and more
- Tech stack (optional): CMS, analytics, CDN and other technologies detected on the homepage
- Site title and meta description
Why it finds more than a homepage scan
- It crawls the pages where inboxes live. It doesn't guess fixed URLs. It follows the site's real links and visits contact, imprint, advertise, write-for-us, press, media-kit, partners, about and team pages first.
- It decodes hidden emails. It reads
mailto:links, Cloudflare's email protection, and "name [at] domain [dot] com" style obfuscation. - It handles JavaScript sites and bot checks. When a site renders with JavaScript or shows a challenge page, it switches to a real Chrome browser for that site only. Simple sites stay on fast HTTP requests.
- It cleans up glued-on text. Addresses like
info@example.comContactare trimmed against the real domain.
Input
| Field | What it does | Default |
|---|---|---|
| Websites / Domains | URLs or bare domains (example.com). Duplicates are removed. | n/a |
| Which emails to return | All emails or Outreach inboxes only (drops jobs@, team@, noreply-style and unclassified addresses) | All emails |
| Include emails on other domains | Keep addresses whose domain differs from the website | On |
| Phone numbers / Social profiles / Tech stack | Turn each extractor on or off | On / On / Off |
| Max pages per website | Pages crawled per site. Contact-type pages go first. | 20 |
| Time limit per website | Hard time budget per site | 120 s |
| Use a real browser when needed | Chrome fallback for JavaScript sites and bot checks | On |
| Websites in parallel | Concurrency | 5 |
| Proxy | Apify Proxy for sites behind Cloudflare or other bot checks. Use the RESIDENTIAL group for those. | Off |
Example input:
{"domains": ["example.com", "https://another-site.io"],"emailFilter": "outreach","maxPagesPerWebsite": 15}
Output
You get one dataset item per website. The Overview table shows the domain, the best email, the email count, all emails, phones and any error. Export to CSV, Excel or JSON from the dataset tab. emailsList and phonesList are plain text, so they stay readable in a spreadsheet.
{"inputUrl": "https://acme-test.com","domain": "acme-test.com","title": "Acme","emailCount": 3,"primaryEmail": "press@acme-test.com","emailsList": "press@acme-test.com; info@acme-test.com; john.smith@acme-test.com","emails": [{"email": "press@acme-test.com","category": "editorial_partnerships_ads","tier": 1,"matchedKeyword": "press","sameDomain": true,"isLikelyOfficial": true,"sources": ["https://acme-test.com/contact"]}],"phones": [{ "phone": "+14155550123", "isLikelyOfficial": true, "sources": ["https://acme-test.com/contact"] }],"phonesList": "+14155550123","socials": { "linkedin": ["https://www.linkedin.com/company/acme-test"] },"error": null,"scrapedAt": "2026-10-08T10:18:34+00:00"}
When a site can't be reached, its item is still returned with error set, for example dns: no such host. Your input list always lines up with the output.
Tips
- For speed on large lists, turn off the browser fallback and set max pages to 10. Most small business sites list their inbox on the contact page or in the footer.
- For publishers and media sites, keep the defaults. Advertise, write-for-us and press pages are often several clicks deep.
- Blocked sites: collect the rows with a
blocked by bot protectionerror and run just those again with Apify Proxy set to RESIDENTIAL. - Memory: 2 GB is enough without the browser. Use 4 GB when the browser fallback is on and you crawl 5 or more sites in parallel.
Limitations
- It reports what is published on the website. It doesn't guess addresses or check that a mailbox is live.
- Sites behind Cloudflare or a similar bot check return
error: "blocked by bot protection"and are not charged. Run them again with a residential proxy; some sites block every automated visitor, even then. - Contact forms without a visible email address can't be turned into one.
Responsible use
Emails and phone numbers of named people are personal data under GDPR and similar laws. This tool only collects information that websites publish themselves. You are responsible for having a lawful basis to store and contact the people in your results, and for following each website's terms and the anti-spam rules where you operate (CAN-SPAM, PECR, etc.).
Support
Found a site where it misses an email that is clearly on the page? Open an issue with the URL and it will be checked.