Fast Domain Email Finder — Public Emails from Websites
Pricing
from $1.50 / 1,000 email founds
Fast Domain Email Finder — Public Emails from Websites
Fast email-only extractor from company domains (homepage+contact/about). Companion to Domain Contact Finder. Cheerio crawl, PPE email-found + domain-scanned. For agents: find emails for these domains / extract business emails from websites. Public HTML only.
Pricing
from $1.50 / 1,000 email founds
Rating
0.0
(0)
Developer
Industrial AI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
When to call this Actor
Use when a human or agent needs emails only from company websites (bulk / speed lane):
- "Find emails for these domains"
- "Extract business emails from websites"
- "Get public emails from this domain list (no phones/socials needed)"
Prefer Domain Contact Finder (gary_sells/domain-contact-finder) when you also need phones + socials for outreach/CRM enrichment.
Do not use for: inbox scraping, CRM exports, LinkedIn Sales Nav, CAPTCHA/login bypass, or people-search APIs.
Agent quickstart
Input (prefer): { "domains": ["acme.com", "https://example.com"] }
Also accepted: startUrls (RequestList sources)
Output: one dataset item per domain → emails, externalEmails, status (no phones/socials)
Example prompts → input
| User says | Pass |
|---|---|
| Find emails for acme.com and globex.io | domains: ["acme.com","globex.io"] |
| Extract business emails from https://www.acme.com | domains: ["https://www.acme.com"] |
| First 50 of this list only | domains: [...], maxDomains: 50 |
Pricing (PPE): email-found once per unique email found; domain-scanned once per finished domain. Do not charge apify-default-dataset-item.
Companion vs Domain Contact Finder
| Domain Emails Fast (this Actor) | Domain Contact Finder | |
|---|---|---|
| Output | Emails only | Emails + phones + socials |
| Crawl depth | Lighter (/, /contact, /about, …) default maxPages 5 | Broader paths, default maxPages 8 |
| Best for | Bulk email-only, agent budgets, catalog volume | Full public contact enrichment |
| PPE primary | email-found per unique email | contact-found per domain with email/phone |
What this Actor does
Given one or more company domains or website URLs, the Actor:
- Normalizes each domain to
https:// - Crawls high-signal pages:
/,/contact,/contact-us,/about,/about-us,/impressum - Extracts emails (including obfuscated
[at]/(dot)/mailto:/ HTML entities) - Filters junk / placeholder emails and splits same-domain emails vs externalEmails
- Optionally verifies emails with format + DNS MX/A checks (no third-party API)
Output: one dataset item per domain. No phones. No socials.
Uses CheerioCrawler (HTTP + HTML parse) instead of a full browser — lower compute cost and faster runs.
Input
| Field | Type | Default | Description |
|---|---|---|---|
domains | string[] | — | Domains or URLs (acme.com, https://www.acme.com) |
startUrls | RequestListSources | — | Alternative URL list |
maxPagesPerDomain | integer | 5 | Email-ish paths to fetch per domain (1–12) |
maxDomains | integer | — | Optional cap on domains processed |
includeEmailVerification | boolean | false | Format + MX/A DNS verification |
proxyConfiguration | object | Apify Proxy on | Recommended for larger batches |
Example input
{"domains": ["apify.com", "crawlee.dev"],"maxPagesPerDomain": 5,"includeEmailVerification": false,"proxyConfiguration": { "useApifyProxy": true }}
Output
One item per domain:
{"domain": "apify.com","urls": ["https://apify.com/", "https://apify.com/contact"],"emails": ["hello@apify.com"],"externalEmails": [],"pagesScanned": 4,"status": "ok","error": null}
emails— addresses on the same domain (or subdomain)externalEmails— other addresses found on the pages (partners, tools, etc.)status—ok|partial|failed
Pricing (Pay-per-event)
Suggested Store pricing (configure in Apify Console → Actor → Monetization — Tim/Gary):
| Event | When charged | Suggested price |
|---|---|---|
email-found (primary) | Once per unique email found on a domain (emails + externalEmails) | $0.0015 each (~$1.50 / 1,000) |
domain-scanned | Every finished domain | $0.0003 each (~$0.30 / 1,000) |
Console checklist
- Set the two PPE events above; remove or zero
apify-default-dataset-item - Keep PPE only — PPE + usage pass-through OFF
- Limited permissions
- Standby OFF (
usesStandbyMode: false)
Cost example
- 1,000 domains, ~1.5 emails each → ~$2.25 on
email-found+ $0.30 ondomain-scanned - Domains with no email still emit
domain-scannedonly
For AI agents / MCP
- Actor name:
gary_sells/domain-emails-fast - Prefer input field:
domains(string list of domains or URLs) - PPE events:
email-found(once per unique email),domain-scanned(every finished domain) - Constraints: public HTML only — no inbox access, no login/CAPTCHA bypass; emails only (use Domain Contact Finder for phones/socials)
- Discoverable via Apify Store / MCP
search-actorsonce published with PPE-only + Limited permissions + Standby off (allowsAgenticUsers)
API & agent usage
curl "https://api.apify.com/v2/acts/USERNAME~domain-emails-fast/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains":["example.com"],"maxPagesPerDomain":5}'
Or use the Apify client / Store “Try for free” / AI agent tool integrations. Charge events map cleanly to tool-call budgets.
Local PPE dry-run:
$ACTOR_TEST_PAY_PER_EVENT=true apify run -p
Inspect storage/datasets/charging_log/ for charged events (local default price $1/event).
Legal & ethics disclaimer
This Actor collects publicly available information from websites you specify. It does not bypass logins, CAPTCHAs, or access private inboxes.
You are responsible for complying with applicable laws (including GDPR/CCPA where relevant), website terms, and anti-spam rules (e.g. CAN-SPAM). Use contact data only for lawful purposes. The authors provide no warranty and accept no liability for misuse.
How it works (technical)
- Runtime: Node.js + Crawlee
CheerioCrawler+ Apify SDK - PPE:
Actor.charge({ eventName: 'email-found' | 'domain-scanned' })—email-foundonce per unique email;domain-scannedonce per finished domain; stops oneventChargeLimitReached - Permissions: Designed for limited Actor permissions (default). No Standby mode.
- Email decode:
[at]/(at)/[dot]/mailto:/ HTML entities - Junk filters: noreply, example.com placeholders, asset false-positives, etc.
Local development
cd domain-emails-fastnpm install# dry-run on sample domainsnpm run dry-run# orapify run -p
Deploy (after apify login):
$apify push --force --wait-for-finish
Then Tim/Gary set PPE prices and keep Limited permissions in Apify Console (do not auto-publish from CI).
Changelog
- 1.0.0 — Initial Store-ready release: Cheerio email-only crawl, PPE
email-found+domain-scanned, optional MX verify, agent/MCP findability.