Email Finder
Find contact email addresses associated with a domain. CronDB discovers emails from website content, DNS records, social profiles, and public directories.

Endpoint
GET /v1/email-finder
Request
Headers
| Header | Value |
|---|---|
| Authorization | Bearer cdb_your_api_key |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain to find emails for |
Example Request
curl -H "Authorization: Bearer cdb_your_api_key_here" \
"https://api.crondb.com/v1/email-finder?domain=stripe.com"
Python
import requests
response = requests.get(
"https://api.crondb.com/v1/email-finder",
params={"domain": "stripe.com"},
headers={"Authorization": "Bearer cdb_your_api_key_here"},
)
data = response.json()
for email in data["emails"]:
print(f"{email['address']} — {email['confidence']} confidence")
Node.js
const response = await fetch(
"https://api.crondb.com/v1/email-finder?domain=stripe.com",
{ headers: { Authorization: "Bearer cdb_your_api_key_here" } }
);
const data = await response.json();
data.emails.forEach((e) => console.log(`${e.address} — ${e.confidence}`));
Ruby
require 'net/http'
require 'json'
uri = URI("https://api.crondb.com/v1/email-finder?domain=stripe.com")
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer cdb_your_api_key_here'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
data['emails'].each { |e| puts "#{e['address']} — #{e['confidence']}" }
Response
{
"domain": "stripe.com",
"emails": [
{
"address": "sales@stripe.com",
"type": "generic",
"confidence": "verified",
"source": "website"
},
{
"address": "support@stripe.com",
"type": "generic",
"confidence": "verified",
"source": "website"
},
{
"address": "press@stripe.com",
"type": "generic",
"confidence": "likely",
"source": "dns"
}
],
"total": 3,
"mx_provider": "Google Workspace"
}
Response Fields
| Field | Type | Description |
|---|---|---|
domain | string | The queried domain |
emails | array | Array of email objects |
total | integer | Number of emails found |
mx_provider | string | Detected email provider |
Email Object Fields
| Field | Type | Description |
|---|---|---|
address | string | The email address |
type | string | personal or generic |
confidence | string | verified, likely, or unverified |
source | string | Where the email was found |
Confidence Levels
| Level | Description |
|---|---|
verified | MX and SMTP checks passed; email is deliverable |
likely | Found on the domain but not SMTP-verified |
unverified | Discovered from secondary sources, not verified |
Email Types
| Type | Description | Examples |
|---|---|---|
personal | Likely belongs to a specific person | john@, jane.doe@ |
generic | Role-based or department address | info@, sales@, support@ |
Errors
| Status | Detail | Cause |
|---|---|---|
| 400 | Invalid domain format | Domain is malformed |
| 401 | Invalid API key | Authentication failed |
| 404 | Domain not found | Domain not in CronDB database |
| 404 | No emails found | Domain exists but no emails discovered |
| 429 | Rate limit exceeded | Too many requests |
Notes
- Each email finder request counts as 1 API query
- Results are cached and updated periodically
- Not all domains have discoverable emails
- Generic emails (info@, support@) are more commonly found than personal emails
- Use the
confidencefield to prioritize which emails to use for outreach
Next Steps
- Enrichment — Get full domain enrichment data
- Tech Stack — See what technologies the domain uses
- Search — Find domains with emails