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

Endpoint
POST /v1/enrichment/bulk
Request
Headers
| Header | Value |
|---|---|
| Authorization | Bearer cdb_your_api_key |
| Content-Type | application/json |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domains | string[] | Yes | Array 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
| Field | Type | Description |
|---|---|---|
results | array | Array of enrichment results |
total_requested | integer | Number of domains submitted |
total_found | integer | Domains found in CronDB |
total_not_found | integer | Domains not in the database |
Each result object includes:
| Field | Type | Description |
|---|---|---|
domain | string | The queried domain |
status | string | found or not_found |
| All enrichment fields | various | Same as single enrichment (when status is found) |
Quota Usage
Bulk enrichment is efficient for quota:
| Scenario | Quota Cost |
|---|---|
| 100 individual enrichment calls | 100 queries |
| 1 bulk call with 100 domains | 1 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
| Constraint | Value |
|---|---|
| Max domains per request | 100 |
| Request timeout | 60 seconds |
| Max concurrent bulk requests | 5 |
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
| Status | Detail | Cause |
|---|---|---|
| 400 | domains array is required | Missing or empty domains array |
| 400 | Maximum 100 domains per request | Too many domains submitted |
| 401 | Invalid API key | Authentication failed |
| 429 | Rate limit exceeded | Too many requests |
Next Steps
- Domain Enrichment — Single domain enrichment
- Search — Find domains to enrich
- Export Center — Bulk export from the dashboard