Skip to main content

Scoring API

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

Scoring rules

Endpoint

POST /v1/scoring

Request

Headers

HeaderValue
AuthorizationBearer cdb_your_api_key
Content-Typeapplication/json

Body Parameters

ParameterTypeRequiredDescription
domainstringYesDomain to score
rule_idstringNoSpecific 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

FieldTypeDescription
domainstringThe scored domain
rule_idstringScoring rule used
rule_namestringHuman-readable rule name
scoreintegerTotal score
tierstringhot, warm, neutral, or cold
breakdownarrayDetailed scoring breakdown

Tier Mapping

TierScore Range
hot80+
warm50-79
neutral20-49
coldBelow 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

StatusDetailCause
400Invalid domain formatDomain is malformed
401Invalid API keyAuthentication failed
404Domain not foundDomain not in database
404Scoring rule not foundInvalid rule_id
429Rate limit exceededToo many requests

Notes

  • Each scoring request counts as 1 API query
  • If no rule_id is 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