Email Scraper & Validator
Pricing
$10.00 / 1,000 email results
Email Scraper & Validator
Crawl websites, extract email addresses, validate each with a third-party validation API, and output clean, scored results.
Pricing
$10.00 / 1,000 email results
Rating
0.0
(0)
Developer
Akash Kumar Naik
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Crawl websites, extract email addresses, validate each with a third-party validation API, and output clean, scored results.
What it does
- Crawls one or more start URLs with CheerioCrawler (proxy support, session pool, retries).
- Extracts emails from mailto links, visible text, JSON-LD, meta tags, and Cloudflare-protected emails.
- De-obfuscates common patterns like
name [at] domain [dot] com. - Normalizes and de-duplicates emails globally, keeping up to 5 source URLs per email.
- Validates each email via the configured validation API in batches.
- Filters by disposable, role account, free provider, and minimum score.
- Writes one row per unique email to the default dataset plus a run summary to the key-value store.
Input fields
| Field | Type | Default | Description |
|---|---|---|---|
| startUrls | requestListSources | - | Websites to crawl |
| emails | string[] | - | Validate-only mode, no crawling |
| maxPagesPerDomain | integer | 10 | Page cap per domain |
| maxDepth | integer | 2 | Crawl depth |
| prioritizeContactPages | boolean | true | Prefer contact/about/team/support pages |
| sameDomainOnly | boolean | true | Stay on same domain |
| validateEmails | boolean | true | Run validation |
| minScore | integer 0-100 | 0 | Minimum score filter |
| excludeDisposable | boolean | true | Drop disposable emails |
| excludeRoleAccounts | boolean | false | Drop role accounts |
| excludeFreeProviders | boolean | false | Drop free providers |
| validationApiUrl | string | https://email.lifestep.io | Validation API base URL |
| validationBatchSize | integer | 25 | Emails per API request |
| maxConcurrency | integer | 10 | Concurrent crawler requests |
| proxyConfiguration | proxy | - | Apify proxy settings |
| maxResults | integer | 0 | 0 = unlimited |
At least one of startUrls or emails is required.
Sample output
{"email": "contact@example.com","domain": "example.com","sourceUrls": ["https://example.com/contact"],"foundOn": "https://example.com/contact","validationStatus": "validated","syntaxValid": true,"hasMx": true,"mxHosts": ["mail.example.com"],"isDisposable": false,"isRoleAccount": true,"isFreeProvider": false,"suggestion": null,"score": 80,"verdict": "deliverable_likely","note": "MX records found; no SMTP probe was performed.","scrapedAt": "2026-01-01T00:00:00.000Z"}
Pricing
This Actor uses pay-per-event pricing.
| Event | Price |
|---|---|
| Email Result | $10.00 per 1,000 results |
You are charged once for each email result pushed to the dataset, at $0.01 per result. Crawling and validation work that produces no output row is not charged.
Use cases
- Lead list cleaning
- Contact enrichment for sales and outreach
- Validating user-submitted email lists
- Removing disposable and role accounts from mailing lists
Limitations
- Validation is heuristic (syntax + DNS/MX only). No SMTP probe is performed, so results cannot confirm that a mailbox exists or guarantee deliverability.
- Cloudflare and other protections may limit crawling.
- Respect robots.txt is enabled by default.
FAQ
Does this confirm a mailbox exists? No. The validation API checks syntax and DNS/MX records only. It does not probe SMTP.
Can I validate a list without crawling? Yes. Provide emails in the emails input field and leave startUrls empty.
What happens if the validation API is down? Emails are still output with validationStatus "unavailable" and a warning is logged. The run does not crash.
Keywords
email scraper, email extractor, email validator, contact email finder, email list cleaner