Give me a domain name. I'll give you the company's tech stack, social profiles, contact emails, WHOIS history, DNS records, and email provider — all from first principles, no Clearbit required.
The $99/Month Problem
Company enrichment APIs are everywhere. Clearbit, Apollo, ZoomInfo, Hunter.io. They charge $99-499/month. But most of that data is publicly available — in HTML, DNS records, WHOIS registration, and SSL certificates.
So I built my own. Zero external API calls. Just Node.js, DNS lookups, and clever HTML parsing.
What You Get From a Single Domain
enrichCompany("stripe.com") returns:
{
"company_name": "Stripe",
"technologies": ["React", "Next.js", "AWS", "Stripe", "Google Workspace"],
"social_profiles": {
"twitter": { "handle": "stripe" },
"linkedin": { "handle": "stripe" },
"github": { "handle": "stripe" }
},
"contact": { "emails": ["jane.diaz@stripe.com"] },
"domain_info": { "age": "30y 6m", "registrar": "Safenames Ltd" },
"dns": {
"mx": ["aspmx.l.google.com"],
"has_spf": true, "has_dmarc": true
}
}
6 data categories from 4 free sources.
Source 1: HTML (Tech Stack + Socials + Contacts)
Technology Detection
35+ technology patterns across 6 categories:
const TECH_PATTERNS = {
'React': [/__NEXT_DATA__/i, /react/i, /_next\\//i],
'Next.js': [/__NEXT_DATA__/i, /_next\\/static/i],
'WordPress': [/wp-content/i, /wp-includes/i],
'Shopify': [/cdn\\.shopify\\.com/i],
'Google Analytics': [/google-analytics\\.com/i, /gtag\\(/i],
'Cloudflare': [/cloudflare/i, /cf-ray/i],
'HubSpot': [/hubspot\\.com/i, /hs-scripts/i],
'Intercom': [/intercom\\.com/i],
// ... 35+ total
};
If Stripe's page loads a script from cdn.segment.com, we know they use Segment.
Social Profile Extraction
Regex patterns for 8 platforms catch links in headers, footers, and meta tags:
const SOCIAL_PATTERNS = {
'twitter': /https?:\\/\\/(www\\.)?(twitter|x)\\.com\\/([a-zA-Z0-9_]+)/gi,
'linkedin': /https?:\\/\\/(www\\.)?linkedin\\.com\\/(company|in)\\/([a-zA-Z0-9_-]+)/gi,
'github': /https?:\\/\\/(www\\.)?github\\.com\\/([a-zA-Z0-9_-]+)/gi,
// + facebook, instagram, youtube, tiktok, threads
};
Source 2: DNS Records
Node.js built-in dns module — zero npm packages:
import dns from 'dns';
import { promisify } from 'util';
const resolveMx = promisify(dns.resolveMx);
const resolveTxt = promisify(dns.resolveTxt);
Email Provider Detection from MX Records
This is my favorite trick. MX records reveal the email provider:
function detectEmailProvider(mxRecords) {
const mx = mxRecords.join(' ').toLowerCase();
if (mx.includes('google')) return 'Google Workspace';
if (mx.includes('outlook') || mx.includes('microsoft')) return 'Microsoft 365';
if (mx.includes('zoho')) return 'Zoho Mail';
if (mx.includes('protonmail')) return 'ProtonMail';
return 'Custom/Self-hosted';
}
Stripe's MX → aspmx.l.google.com → Google Workspace. Useful for B2B sales teams.
SPF & DMARC Detection
const txtRecords = await resolveTxt(domain);
const allTxt = txtRecords.flat().join(' ');
const has_spf = allTxt.includes('v=spf1');
const has_dmarc = allTxt.includes('v=DMARC1');
Companies with SPF + DMARC will receive your outreach. Without? Spam folder.
Source 3: WHOIS
Domain age is a useful sales signal. 30-year-old domain = established company. 6-month-old = fresh startup.
Source 4: HTTP Headers
cf-ray header → Cloudflare. server: nginx → Nginx. x-powered-by: Express → Node.js.
Putting It Together
All sources run concurrently:
async function enrichCompany(domain) {
const [html, dns, whois] = await Promise.allSettled([
fetchAndParseHTML(domain),
fetchDNSRecords(domain),
fetchWHOIS(domain),
]);
return { /* merged results */ };
}
Total enrichment time: 2-4 seconds per domain.
The Numbers
Tested on 200 domains:
- Tech detection accuracy: ~85% (vs BuiltWith)
- Social profile extraction: ~90%
- Email provider detection: ~95%
- Average response: 3.1 seconds
- Cost: $0.005 per domain
Price Comparison
| This API | Clearbit | Hunter.io | |
|---|---|---|---|
| Per enrichment | $0.005 | $0.099 | $0.010 |
| 10K leads/month | $50 | $990 | $100 |
| API key required | No | Yes | Yes |
| External API calls | Zero | N/A | N/A |
Same data categories, 20x cheaper than Clearbit.
Try It
🔗 Company Enrichment API on Apify
📦 Source on GitHub
One domain in, full company profile out. No API key, no subscription.
Also check out:
- Email Validator API — MX, SMTP, disposable detection
- Website Intelligence API — Deep tech detection
Built with Node.js, Cheerio, and the Apify SDK. Zero external API calls.
Top comments (0)