Scoring API
Apply scoring rules to domains programmatically. Pass a domain and a scoring rule ID to get a score and tier classification.

Endpoint
POST /v1/scoring
Request
Headers
| Header | Value |
|---|---|
| Authorization | Bearer cdb_your_api_key |
| Content-Type | application/json |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain to score |
rule_id | string | No | Specific scoring rule ID (uses default rule if omitted) |
Example Request
curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"domain": "newstartup.com",
"rule_id": "sr_abc123"
}' \
"https://api.crondb.com/v1/scoring"
Python
import requests
response = requests.post(
"https://api.crondb.com/v1/scoring",
headers={"Authorization": "Bearer cdb_your_api_key_here"},
json={"domain": "newstartup.com", "rule_id": "sr_abc123"},
)
data = response.json()
print(f"Score: {data['score']} ({data['tier']})")
Node.js
const response = await fetch("https://api.crondb.com/v1/scoring", {
method: "POST",
headers: {
Authorization: "Bearer cdb_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({ domain: "newstartup.com", rule_id: "sr_abc123" }),
});
const data = await response.json();
console.log(`Score: ${data.score} (${data.tier})`);
Ruby
require 'net/http'
require 'json'
uri = URI("https://api.crondb.com/v1/scoring")
req = Net::HTTP::Post.new(uri, {
'Authorization' => 'Bearer cdb_your_api_key_here',
'Content-Type' => 'application/json'
})
req.body = { domain: "newstartup.com", rule_id: "sr_abc123" }.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
puts "Score: #{data['score']} (#{data['tier']})"
Response
{
"domain": "newstartup.com",
"rule_id": "sr_abc123",
"rule_name": "ICP Score",
"score": 85,
"tier": "hot",
"breakdown": [
{
"condition": "Industry is Technology",
"matched": true,
"points": 25
},
{
"condition": "Country is US",
"matched": true,
"points": 15
},
{
"condition": "Uses Stripe",
"matched": true,
"points": 30
},
{
"condition": "Has email",
"matched": true,
"points": 10
},
{
"condition": "Confidence > 0.85",
"matched": true,
"points": 5
},
{
"condition": "Uses WordPress",
"matched": false,
"points": 0
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
domain | string | The scored domain |
rule_id | string | Scoring rule used |
rule_name | string | Human-readable rule name |
score | integer | Total score |
tier | string | hot, warm, neutral, or cold |
breakdown | array | Detailed scoring breakdown |
Tier Mapping
| Tier | Score Range |
|---|---|
hot | 80+ |
warm | 50-79 |
neutral | 20-49 |
cold | Below 20 |
Batch Scoring
Score multiple domains in one request:
curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"domains": ["startup1.com", "startup2.com", "startup3.com"],
"rule_id": "sr_abc123"
}' \
"https://api.crondb.com/v1/scoring/batch"
Response returns an array of scored results.
Errors
| Status | Detail | Cause |
|---|---|---|
| 400 | Invalid domain format | Domain is malformed |
| 401 | Invalid API key | Authentication failed |
| 404 | Domain not found | Domain not in database |
| 404 | Scoring rule not found | Invalid rule_id |
| 429 | Rate limit exceeded | Too many requests |
Notes
- Each scoring request counts as 1 API query
- If no
rule_idis provided, the first (default) scoring rule is used - Scoring rules must be created in the dashboard before using this endpoint
- Batch scoring with up to 100 domains counts as 1 API query
Next Steps
- Scoring Rules — Create rules in the dashboard
- Search — Find domains to score
- Enrichment — Get full domain data