Company Enrichment & Lead Finder: Emails, Phones
Pricing
from $3.00 / 1,000 domain enricheds
Company Enrichment & Lead Finder: Emails, Phones
Company enrichment API: turn domains into one row each with business emails, phones (E.164), socials, company name, address, tech stack, email provider (MX/SPF/DMARC), SSL and domain age. $3 per 1,000 enriched domains, $2.50 per 1,000 failed.
Pricing
from $3.00 / 1,000 domain enricheds
Rating
0.0
(0)
Developer
John Wilkinson
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Company Enrichment by Domain: Emails, Phones, Tech Stack, DNS
Domain in, company profile out. Send company domains (or URLs) and get one clean JSON/CSV row per domain with business emails, phone numbers, social links, tech stack, email provider, SSL and domain age. A low-cost company enrichment API, website email extractor, tech stack detector and domain age and email-provider checker in one Actor, for lead generation, CRM cleanup and sales intelligence. $3 per 1,000 enriched domains; unreachable or robots-blocked domains are $2.50 per 1,000.
Give it a list of company domains and get back one clean row per domain with:
- 📧 Business emails from the company's own site (mailto links, Cloudflare-protected emails,
info [at] acme [dot] com-style obfuscation, with junk, placeholder and image-filename false positives filtered out) - 📞 Phone numbers normalized to E.164 (
+14155552671) - 🔗 Social links: LinkedIn, X/Twitter, Facebook, Instagram, YouTube, GitHub, TikTok
- 🏢 Company name and postal address (JSON-LD, microdata,
<address>) - 🧰 Tech stack (Wappalyzer-style detection of 7,600+ technologies: CMS, ecommerce, analytics, CDN, frameworks, chat widgets…)
- ✉️ DNS & email provider: MX, SPF, DMARC policy, nameservers, and the email provider (Google Workspace, Microsoft 365, Zoho, Proofpoint…)
- 🔒 SSL certificate: issuer, validity and days until expiry
- 📅 Domain registration (WHOIS via RDAP): registration date, domain age, registrar and expiry
How it works: plain HTTP requests, no browser. It reads only the target's own pages (home, contact, about, imprint/Impressum, team), respects robots.txt, and rate-limits itself to about 1 request per second per site.
- Use it when you have a list of company domains and want the contact details, tech stack and domain/DNS facts those companies publish themselves.
- Use something else when you need firmographics such as revenue, headcount or industry, a lookup from a company name to its website, or data about people (a people database, LinkedIn profiles).
Use cases
- Lead generation and enrichment: turn a domain list from a CRM, a spreadsheet or another scraper into contactable leads.
- Sales intelligence: find companies that use Shopify, HubSpot or WordPress, or that run Google Workspace vs. Microsoft 365.
- Data cleaning: check that domains are alive, find out how old they are, and catch expiring SSL certificates.
- Security and IT audits: check DMARC/SPF posture across many domains.
Input
| Field | Default | Description |
|---|---|---|
domains | (required; the form prefills three sample domains) | Domains or URLs (stripe.com, https://www.notion.so/about). Duplicates are merged. |
extras | all four | Optional blocks to add, at no extra charge: techStack, dns (MX/SPF/DMARC/NS and email provider), ssl (issuer and expiry), rdap (registration date) |
defaultPhoneCountry | auto | Country (select) used to read local phone numbers without a + prefix as E.164 |
maxPagesPerDomain | 4 | Home page plus up to N-1 contact/about/imprint pages (max 20) |
respectRobotsTxt | true | Skip disallowed pages |
Example input
{"domains": ["apify.com", "stripe.com", "https://basecamp.com/about"],"maxPagesPerDomain": 4,"defaultPhoneCountry": "US"}
Output (one row per domain)
status is one of success, partial (the site was reached but a sub-lookup failed; details are in error), failed, blocked_by_robots, or invalid_input.
{"input": "apify.com","domain": "apify.com","finalUrl": "https://apify.com/","status": "success","error": null,"companyName": "Apify","description": "Apify is a platform for web scraping and automation…","logo": "https://apify.com/img/apify-logo.png","emails": ["hello@apify.com","support@apify.com"],"phones": [],"socials": {"github": ["https://github.com/apify"],"linkedin": ["https://www.linkedin.com/company/apify"],"x": ["https://x.com/apify"],"tiktok": ["https://www.tiktok.com/@apifytech","https://www.tiktok.com/@apifyoffice"]},"address": {"full": "Na P\u0159\u00edkop\u011b 959/27, Prague, 11000, CZ","street": "Na P\u0159\u00edkop\u011b 959/27","city": "Prague","postalCode": "11000","country": "CZ","source": "json-ld"},"pagesCrawled": ["https://apify.com/","https://apify.com/contact","https://apify.com/contact-sales"],"scrapedAt": "2026-10-25T19:21:15.066Z","techStack": [{"name": "Algolia","categories": ["Search engines"],"confidence": 100,"website": "https://www.algolia.com"},{"name": "Amazon CloudFront","categories": ["CDN"],"confidence": 100,"website": "https://aws.amazon.com/cloudfront/"},{"name": "Amazon S3","categories": ["CDN"],"confidence": 100,"website": "https://aws.amazon.com/s3/"}],"dns": {"mx": [{"priority": 1,"exchange": "aspmx.l.google.com"},{"priority": 5,"exchange": "alt1.aspmx.l.google.com"}],"spf": "v=spf1 a mx include:_spf.google.com include:mailgun.org include:amazonses.com include:19497222.spf05.hubspotemail.net -all","dmarc": "v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:dmarc-reports@apify.com; ri=604800","dmarcPolicy": "reject","emailProvider": "Google Workspace","nameservers": ["ns-1225.awsdns-25.org","ns-1928.awsdns-49.co.uk"],"a": ["18.65.238.33"]},"ssl": {"issuer": "Amazon","subject": "*.apify.com","validFrom": "2026-07-03T00:00:00.000Z","validTo": "2027-01-16T23:59:59.000Z","daysRemaining": 83,"altNames": ["*.apify.com","apifier.com"],"protocol": "TLSv1.3","authorized": true},"rdap": {"registered": "2009-06-02T17:14:10Z","expires": "2035-06-02T17:14:10Z","lastChanged": "2026-05-16T16:53:04Z","registrar": "Amazon Registrar, Inc.","ageYears": 17.4,"status": ["client transfer prohibited"],"rdapUrl": "https://rdap.verisign.com/com/v1/domain/apify.com"}}
Download results as JSON, CSV, Excel or HTML, or call the Actor through the Apify API, its MCP server, Make, Zapier or n8n.
Pricing (pay per event)
No subscription; you pay only for the events below.
| Event | Price |
|---|---|
| Actor start (per GB of run memory; runs use 1 GB) | $0.0092 |
Domain enriched (success or partial) | $0.003 ($3 per 1,000) |
| Failed domain (unreachable or robots-blocked) | $0.0025 |
You pay for work done, success or failure. Every domain is charged once: "domain enriched" when its site is reached, or "failed domain" when it is unreachable or blocked by robots.txt. Invalid entries and duplicates are skipped and not charged (the first 100 invalid entries are listed, then one summary row). Each domain is saved and charged as soon as it finishes, and new domains start only while your maximum cost per run can cover them. Set that maximum in Apify to cap spend; the run stops cleanly when it is reached. Example: 1 domain = $0.0122; 1,000 enriched domains in one run = about $3.01, so batch many domains per run. Each page request is capped at 20 s.
Call it from code
curl -X POST "https://api.apify.com/v2/acts/jcwilk~company-website-enrichment/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' -d '{"domains":["stripe.com","apify.com"]}'
FAQ
Is this a Clearbit / Apollo / BuiltWith alternative? For data a company publishes on its own website and in public DNS/TLS/RDAP records, yes, with no subscription (from $3 per 1,000 domains). It doesn't have a people database or private firmographics such as revenue or headcount.
Does it scrape LinkedIn, Google or other third-party sites? No. It only visits the company's own website, plus public DNS, TLS and RDAP infrastructure.
Why are there no emails for some big companies? Many large sites use contact forms instead of publishing addresses. The Actor never guesses or generates emails. Off-site addresses are kept only when the site links them explicitly with mailto:.
Is it GDPR-compliant? It collects business contact details that companies publish on their own websites. If you process personal data, such as named employee emails, you are responsible for having a lawful basis (for example legitimate interest) and for honoring opt-outs. Respect anti-spam laws such as CAN-SPAM and ePrivacy.
Why is the domain registration date empty for .io, .de and some other TLDs? Those registries don't run a public RDAP server. The Actor uses the official IANA RDAP bootstrap and skips unsupported TLDs without failing the row.
How accurate is tech detection? It uses the open-source webappanalyzer fingerprints on the HTML, headers, cookies, meta tags, scripts and DOM of up to 2 pages. It doesn't execute JavaScript, so technologies that are only visible at runtime may be missed. Low-confidence matches (under 50) are dropped.
What about sites that block bots or are JavaScript-only? The Actor reads the HTML the server sends and does not run a browser. A site that is rendered only by JavaScript returns just what its server-rendered HTML contains. A site that disallows all crawling in robots.txt returns blocked_by_robots and is charged as a failed domain ($0.0025).
How fast is it? Domains are processed about 20 at a time, at roughly 1 request per second per site, so a small batch finishes in seconds and large batches scale with the number of domains. It runs in 1 GB of memory.
Data sources
Tech fingerprints: enthec/webappanalyzer (GPL-3.0), shipped as separate data files. The Actor's code is MIT.