Skip to main content

Intent Signals

Retrieve buying intent signals for a domain based on technology adoption patterns, website changes, and behavioral indicators.

Intent signals

Endpoint

GET /v1/intent

Request

Headers

HeaderValue
AuthorizationBearer cdb_your_api_key

Query Parameters

ParameterTypeRequiredDescription
domainstringYesDomain to analyze

Example Request

curl -H "Authorization: Bearer cdb_your_api_key_here" \
"https://api.crondb.com/v1/intent?domain=growingcompany.com"

Python

import requests

response = requests.get(
"https://api.crondb.com/v1/intent",
params={"domain": "growingcompany.com"},
headers={"Authorization": "Bearer cdb_your_api_key_here"},
)

data = response.json()
print(f"Intent Score: {data['intent_score']}")
for signal in data["signals"]:
print(f" - {signal['type']}: {signal['description']}")

Node.js

const response = await fetch(
"https://api.crondb.com/v1/intent?domain=growingcompany.com",
{ headers: { Authorization: "Bearer cdb_your_api_key_here" } }
);
const data = await response.json();
console.log(`Intent: ${data.intent_score} (${data.intent_level})`);
data.signals.forEach((s) => console.log(` - ${s.type}: ${s.description}`));

Ruby

require 'net/http'
require 'json'

uri = URI("https://api.crondb.com/v1/intent?domain=growingcompany.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)
puts "Intent: #{data['intent_score']} (#{data['intent_level']})"
data['signals'].each { |s| puts " - #{s['type']}: #{s['description']}" }

Response

{
"domain": "growingcompany.com",
"intent_score": 78,
"intent_level": "high",
"signals": [
{
"type": "tech_adoption",
"description": "Added Stripe payment processing",
"strength": "strong",
"detected_at": "2026-03-15T00:00:00Z"
},
{
"type": "rapid_growth",
"description": "Added 4 new technologies in the last 30 days",
"strength": "strong",
"detected_at": "2026-03-10T00:00:00Z"
},
{
"type": "ecommerce_launch",
"description": "E-commerce platform detected (Shopify)",
"strength": "moderate",
"detected_at": "2026-03-12T00:00:00Z"
},
{
"type": "hiring",
"description": "Careers page or job listings detected",
"strength": "moderate",
"detected_at": "2026-03-08T00:00:00Z"
}
],
"tech_velocity": {
"last_30_days": 4,
"last_90_days": 7,
"trend": "accelerating"
},
"last_analyzed": "2026-03-17T08:00:00Z"
}

Response Fields

FieldTypeDescription
domainstringThe queried domain
intent_scoreintegerOverall intent score (0-100)
intent_levelstringlow, medium, high, or very_high
signalsarrayIndividual intent signals detected
tech_velocityobjectRate of technology adoption
last_analyzedstringWhen the intent data was last computed

Signal Types

Signal TypeDescriptionStrength Impact
tech_adoptionNew technology added to stack+10-20 points
rapid_growthMultiple new technologies in short period+15-25 points
ecommerce_launchE-commerce platform detected+10-15 points
hiringCareers page or job listings+5-10 points
fundingInvestor or funding page detected+10-15 points
expansionMulti-language or multi-region pages+5-10 points
rebrandDomain content significantly changed+5-10 points
competitor_switchSwitched from a competing product+15-20 points

Signal Strength

StrengthDescription
strongClear, unambiguous signal
moderateProbable signal, some uncertainty
weakPossible signal, needs verification

Intent Levels

LevelScore RangeDescription
very_high80-100Multiple strong buying signals
high60-79Clear interest indicators
medium30-59Some activity detected
low0-29Minimal signals

Tech Velocity

FieldDescription
last_30_daysTechnologies added in the last 30 days
last_90_daysTechnologies added in the last 90 days
trendaccelerating, stable, or decelerating

Errors

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

Notes

  • Each intent request counts as 1 API query
  • Intent scores are recalculated periodically as new data arrives
  • Signals are time-sensitive — recent signals contribute more to the score
  • Use intent data alongside scoring rules for the most effective lead prioritization

Next Steps