Skip to main content

Bulk Enrichment

Enrich multiple domains in a single API call. Submit up to 100 domains and receive enrichment data for all of them.

Lead explorer

Endpoint

POST /v1/enrichment/bulk

Request

Headers

HeaderValue
AuthorizationBearer cdb_your_api_key
Content-Typeapplication/json

Body Parameters

ParameterTypeRequiredDescription
domainsstring[]YesArray of domains to enrich (max 100)

Example Request

curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"domains": [
"stripe.com",
"shopify.com",
"hubspot.com",
"intercom.com"
]
}' \
"https://api.crondb.com/v1/enrichment/bulk"

Python

import requests

response = requests.post(
"https://api.crondb.com/v1/enrichment/bulk",
headers={
"Authorization": "Bearer cdb_your_api_key_here",
"Content-Type": "application/json",
},
json={
"domains": ["stripe.com", "shopify.com", "hubspot.com"]
},
)

data = response.json()
for result in data["results"]:
if result["status"] == "found":
print(f"{result['domain']}{result['industry']}")
else:
print(f"{result['domain']} — not found")

Node.js

const response = await fetch("https://api.crondb.com/v1/enrichment/bulk", {
method: "POST",
headers: {
Authorization: "Bearer cdb_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
domains: ["stripe.com", "shopify.com", "hubspot.com"],
}),
});

const data = await response.json();
data.results.forEach((r) =>
console.log(`${r.domain}${r.status === "found" ? r.industry : "not found"}`)
);

Ruby

require 'net/http'
require 'json'

uri = URI("https://api.crondb.com/v1/enrichment/bulk")
req = Net::HTTP::Post.new(uri, {
'Authorization' => 'Bearer cdb_your_api_key_here',
'Content-Type' => 'application/json'
})
req.body = { domains: ["stripe.com", "shopify.com", "hubspot.com"] }.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
data['results'].each { |r| puts "#{r['domain']}#{r['status'] == 'found' ? r['industry'] : 'not found'}" }

Response

{
"results": [
{
"domain": "stripe.com",
"status": "found",
"industry": "Technology",
"business_type": "B2B SaaS",
"confidence": 0.97,
"registrant_country": "US",
"website_summary": "...",
"tech_stack": { ... },
"contact": { ... }
},
{
"domain": "shopify.com",
"status": "found",
"industry": "E-commerce",
"business_type": "Marketplace",
"confidence": 0.95,
"registrant_country": "CA",
"website_summary": "...",
"tech_stack": { ... },
"contact": { ... }
},
{
"domain": "unknowndomain12345.com",
"status": "not_found",
"industry": null,
"business_type": null,
"confidence": null
}
],
"total_requested": 3,
"total_found": 2,
"total_not_found": 1
}

Response Fields

FieldTypeDescription
resultsarrayArray of enrichment results
total_requestedintegerNumber of domains submitted
total_foundintegerDomains found in CronDB
total_not_foundintegerDomains not in the database

Each result object includes:

FieldTypeDescription
domainstringThe queried domain
statusstringfound or not_found
All enrichment fieldsvariousSame as single enrichment (when status is found)

Quota Usage

Bulk enrichment is efficient for quota:

ScenarioQuota Cost
100 individual enrichment calls100 queries
1 bulk call with 100 domains1 query
Save Quota

Bulk enrichment always costs 1 API query regardless of how many domains are included. Use it whenever you need to enrich more than one domain.

Limits

ConstraintValue
Max domains per request100
Request timeout60 seconds
Max concurrent bulk requests5

Error Handling

Partial Results

If some domains are found and others are not, the response still returns 200 with mixed results. Check the status field on each result.

Invalid Domains

Malformed domains are included in the response with an error status:

{
"domain": "not-a-domain",
"status": "error",
"detail": "Invalid domain format"
}

Request Errors

StatusDetailCause
400domains array is requiredMissing or empty domains array
400Maximum 100 domains per requestToo many domains submitted
401Invalid API keyAuthentication failed
429Rate limit exceededToo many requests

Next Steps