Domain Reputation API Documentation
Domain Reputation API Documentation: Get a comprehensive reputation score (0-100) for any domain based on multiple security and trust signals. The API checks DNS security configuration, SSL certificates, blacklists (Spamhaus, SURBL), threat intelligence (URLhaus), email authentication, and web presence to calculate a weighted score with actionable recommendations.
Domain Reputation
Get a comprehensive reputation score (0-100) for any domain based on multiple security and trust signals. The API checks DNS security configuration, SSL certificates, blacklists (Spamhaus, SURBL), threat intelligence (URLhaus), email authentication, and web presence to calculate a weighted score with actionable recommendations.
Query Parameters
| Parameter | Type | required |
|---|---|---|
| domain | string | required |
Response Fields
| Field | Type |
|---|---|
domain |
string |
reputation_score |
integer |
grade |
string |
risk_level |
string |
reputation_score_confidence |
string |
grade_capped_by_parking |
boolean |
factors |
object |
factors.age |
object |
factors.dns_security |
object |
factors.ssl_certificate |
object |
factors.hosting |
object |
factors.web_presence |
object |
factors.blacklists |
object |
factors.email_config |
object |
recommendations[] |
object[] |
recommendations[] |
object |
recommendations[].priority |
string |
recommendations[].category |
string |
recommendations[].action |
string |
recommendations[].impact |
string |
meta |
object |
meta.query_time_ms |
integer |
meta.checks_performed |
integer |
meta.cached |
boolean |
meta.served_by |
string |
meta.worker_version |
string |
Example Request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/reputation?domain=example.com"
Example Response
{
"domain": "example.com",
"reputation_score": 76,
"grade": "C",
"risk_level": "medium",
"reputation_score_confidence": "high",
"grade_capped_by_parking": true,
"factors": {
"age": {
"score": 84,
"weight": 0.1,
"details": {
"age_days": 5840
}
},
"dns_security": {
"score": 80,
"weight": 0.2,
"details": {
"dnssec": false,
"spf": true,
"dmarc": true,
"dmarc_policy": "reject"
}
},
"ssl_certificate": {
"score": 92,
"weight": 0.2,
"details": {
"valid": true,
"error": null,
"grade": "A",
"chain_valid": true,
"min_tls_version": "TLSv1.3"
}
},
"hosting": {
"score": 35,
"weight": 0.1,
"details": {
"has_a_records": true,
"a_record_count": 2,
"parked": true
}
},
"web_presence": {
"score": 20,
"weight": 0.15,
"details": {
"has_website": true,
"redirects_to_https": true,
"response_time_ms": 87,
"parked": true,
"for_sale": false,
"parking_provider": "Example Parking"
}
},
"blacklists": {
"score": 100,
"weight": 0.1,
"details": {
"listed": false,
"threat_level": "none",
"domain_sources": [],
"ip_sources": []
}
},
"email_config": {
"score": 100,
"weight": 0.15,
"details": {
"has_mx": true,
"has_spf": true,
"has_dmarc": true,
"mx_count": 2
}
}
},
"recommendations": [
{
"priority": "high",
"category": "web_presence",
"action": "Move the domain off parking if it is intended for customer traffic.",
"impact": "+10 points"
}
],
"meta": {
"query_time_ms": 187,
"checks_performed": 7,
"cached": false,
"served_by": "pop=MAD country=ES",
"worker_version": "2.0.0"
}
}
Request Body
| Field | Type | Description |
|---|---|---|
| domains required | string[] | Array of full domain names to check |
Use POST /v1/reputation/bulk to score multiple domains in one request. Send a JSON body with a domains array. Supports up to 3 domains per request because each lookup fans out across several security checks.
Example Request
curl -X POST "https://domscan.net/v1/reputation/bulk" -H "Content-Type: application/json" -d '{
"domains": ["stripe.com", "cloudflare.com", "example.com"]
}'
Example Response
{
"results": [
{
"domain": "stripe.com",
"reputation_score": 92,
"grade": "A+",
"risk_level": "low",
"factors": {
"dns_security": { "score": 100, "weight": 0.2 },
"ssl_certificate": { "score": 100, "weight": 0.2 }
},
"recommendations": [],
"meta": {
"query_time_ms": 1250,
"checks_performed": 7,
"cached": false
}
},
{
"domain": "not a domain",
"error": {
"code": "INVALID_DOMAIN",
"message": "Invalid domain format"
}
}
],
"summary": {
"total": 2,
"successful": 1,
"failed": 1,
"cached": 0,
"query_time_ms": 1310
},
"meta": {
"served_by": "pop=MAD country=ES",
"worker_version": "2.0.0"
}
}
Response Fields
| Field | Type |
|---|---|
results[] |
object[] |
results[] |
object |
results[].domain |
string |
results[].reputation_score |
integer |
results[].grade |
string |
results[].risk_level |
string |
results[].reputation_score_confidence |
string |
results[].grade_capped_by_parking |
boolean |
results[].factors |
object |
results[].recommendations[] |
object[] |
results[].recommendations[] |
object |
results[].meta |
object |
results[].error |
object |
results[].error.code |
string |
results[].error.message |
string |
summary |
object |
summary.total |
integer |
summary.successful |
integer |
summary.failed |
integer |
summary.cached |
integer |
summary.query_time_ms |
integer |
meta |
object |
meta.served_by |
string |
meta.worker_version |
string |